Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DataAccessADOHelperPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DataAccessADOHelperPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DataAccessADOHelperPlugin.cs	(revision 4073)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  [Plugin("HeuristicLab.DataAccess.ADOHelper-3.2")]
+  [PluginFile("HeuristicLab.DataAccess.ADOHelper-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  public class DataAccessADOHelperPlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DataAdapterBase.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DataAdapterBase.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DataAdapterBase.cs	(revision 4073)
@@ -0,0 +1,302 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Data;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Threading;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  public abstract class DataAdapterBase<AdapterT, ObjT, RowT>
+    where AdapterT : new()
+    where RowT : System.Data.DataRow
+    where ObjT : IPersistableObject, new() {
+
+    private ISession session;
+
+    private ITableAdapterWrapper<AdapterT, ObjT, RowT> dataAdapter;
+
+    protected DataAdapterBase(
+      ITableAdapterWrapper<AdapterT, ObjT, RowT> dataAdapter) {
+      this.dataAdapter = dataAdapter;
+    }
+
+    protected AdapterT Adapter {
+      get {
+        return dataAdapter.TransactionalAdapter;
+      }
+    }
+
+    protected ITableAdapterWrapper<AdapterT, ObjT, RowT> DataAdapterWrapper {
+      get {
+        return dataAdapter;
+      }
+    }
+
+    public ISession Session {
+      get {
+        return this.session;
+      }
+
+      set {
+        if (!(value is Session))
+          throw new Exception("Can only bind to ADO session");
+
+        this.session = value;
+        this.dataAdapter.Session = value as Session;
+      }
+    }
+
+    public object InnerAdapter {
+      get {
+        return this.Adapter;
+      }
+    }
+
+    #region Abstract methods
+    protected abstract RowT ConvertObj(ObjT obj, RowT row);
+
+    protected abstract ObjT ConvertRow(RowT row, ObjT obj);
+    #endregion
+
+    protected delegate IEnumerable<RowT> Selector();
+    protected delegate object TransactionalAction();
+
+    protected ObjT Convert(RowT row, ObjT obj) {
+      try {
+        obj = ConvertRow(row, obj);
+        return obj;
+      }
+      catch (DeletedRowInaccessibleException) {
+        return default(ObjT);
+      }
+      catch (RowNotInTableException) {
+        return default(ObjT);
+      }
+    }
+
+    protected RowT FindSingleRow(Selector selector) {
+      RowT row = default(RowT);
+
+      IEnumerable<RowT> found =
+        selector();
+
+      if (found.Count<RowT>() == 1)
+        row = found.First<RowT>();
+
+      return row;
+    }
+
+    protected ObjT FindSingle(Selector selector) {
+      return 
+        (ObjT)doInTransaction(
+         delegate() {
+          RowT row = FindSingleRow(selector);
+
+          ObjT result;
+          if (row != null) {
+            ObjT obj = new ObjT();
+            obj = Convert(row, obj);
+
+            result = obj;
+          } else {
+            result = default(ObjT);
+          }
+
+          return result;
+        });
+    }
+
+    private ICollection<ObjT> FindMultiple(Selector selector, 
+      int from, int size) {
+      return (ICollection<ObjT>)doInTransaction(
+        delegate() {
+          IEnumerable<RowT> found =
+            selector();
+
+          if (from > 0 && size > 0)
+            found = found.Skip<RowT>(from).Take<RowT>(size);
+
+          IList<ObjT> result =
+            new List<ObjT>();
+
+          foreach (RowT row in found) {
+            ObjT obj = new ObjT();
+            obj = Convert(row, obj);
+            if (obj != null)
+              result.Add(obj);
+          }
+
+          return result;
+        });   
+    }
+
+    protected ICollection<ObjT> FindMultiple(Selector selector) {
+      return FindMultiple(
+        selector, 0, -1);
+    }
+
+    protected virtual RowT GetRowById(Guid id) {
+      return FindSingleRow(
+        delegate() {
+          return dataAdapter.FindById(id);
+        });
+    }
+
+    protected object doInTransaction(TransactionalAction action) {
+      ITransaction trans =
+        session.GetCurrentTransaction();
+      bool transactionExists = trans != null;
+      if (!transactionExists) {
+        trans = session.BeginTransaction();
+      }
+
+      try {
+        object result = action();
+
+        if (!transactionExists && trans != null) {
+            trans.Commit();
+        }
+
+        return result;
+      }
+      catch (Exception e) {
+        if (!transactionExists && trans != null) {
+          trans.Rollback();
+        }
+
+        throw e;
+      }
+    }
+
+    protected virtual void doUpdate(ObjT obj) {
+      if (obj != null) {
+        RowT row = null;
+
+        if (obj.Id != Guid.Empty) {
+          row = GetRowById(obj.Id);
+        } else {
+          obj.Id = Guid.NewGuid();
+        }
+
+        if (row == null) {
+          row = dataAdapter.InsertNewRow(obj);
+        }
+
+        ConvertObj(obj, row);
+        dataAdapter.UpdateRow(row);
+      }
+    }
+
+    public void Update(ObjT obj) {
+      try {
+        doInTransaction(
+          delegate() {
+            doUpdate(obj);
+            return true;
+          });        
+      }
+      catch (DBConcurrencyException ex) {
+        DataRow row = ex.Row;
+
+        RowT current = GetRowById(obj.Id);
+        if (current != null) {
+          //find out changes
+          for (int i = 0; i < row.ItemArray.Length; i++) {            
+            if (!row[i, DataRowVersion.Current].Equals(
+                 row[i, DataRowVersion.Original])) {
+              current[i] = row[i];
+            }
+          }
+
+          ConvertRow(current, obj);
+          //try updating again
+          Update(obj);
+        }
+        //otherwise: row was deleted in the meantime - nothing to do
+      }
+    }
+
+    public virtual ObjT GetById(Guid id) {
+      return FindSingle(delegate() {
+        return dataAdapter.FindById(id);
+      });
+    }
+
+    public virtual ICollection<ObjT> GetAll() {
+      return new List<ObjT>(
+        FindMultiple(
+          new Selector(dataAdapter.FindAll)));
+    }
+
+    public virtual ICollection<ObjT> GetAll(int from, int size) {
+      //note - this base implementation is inefficient,
+      //consider overriding the implementation 
+      //in derived adapters (based on a query (SQL LIMIT))
+      return new List<ObjT>(
+        FindMultiple(
+          new Selector(dataAdapter.FindAll), 
+          from, size));
+    }
+
+    protected virtual bool doDelete(ObjT obj) {
+      bool success = false;
+
+      if (obj != null) {
+        RowT row =
+          GetRowById(obj.Id);
+
+        if (row != null) {
+          row.Delete();
+          dataAdapter.UpdateRow(row);
+
+          success = true;
+        }
+      }
+
+      return success;
+    }
+
+    public bool Delete(ObjT obj) {
+      try {
+        return (bool)doInTransaction(
+          delegate() {
+            return doDelete(obj);
+          });
+      }
+      catch (DBConcurrencyException) {
+        RowT current = GetRowById(obj.Id);
+        if (current != null) {
+          ConvertRow(current, obj);
+          //try deleting again
+          return Delete(obj);
+        } else {
+          //row has already been deleted
+          return false;
+        }
+      }
+    }
+  }
+}
+
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DatabaseOptions.txt
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DatabaseOptions.txt	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/DatabaseOptions.txt	(revision 4073)
@@ -0,0 +1,5 @@
+﻿optimistic locking should be enabled in order
+to avoid deadlocking:
+
+ALTER DATABASE [HeuristicLab.Databasename]
+   SET READ_COMMITTED_SNAPSHOT ON;
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/HeuristicLab.DataAccess.ADOHelper-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/HeuristicLab.DataAccess.ADOHelper-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/HeuristicLab.DataAccess.ADOHelper-3.3.csproj	(revision 4073)
@@ -0,0 +1,164 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.DataAccess.ADOHelper</RootNamespace>
+    <AssemblyName>HeuristicLab.DataAccess.ADOHelper-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="VarBinaryStream.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="DataAccessADOHelperPlugin.cs" />
+    <Compile Include="DataAdapterBase.cs" />
+    <Compile Include="TableAdapterWrapperBase.cs" />
+    <Compile Include="ITableAdapterWrapper.cs" />
+    <Compile Include="ManyToManyRelation.cs" />
+    <Compile Include="ManyToManyRelationHelper.cs" />
+    <Compile Include="Session.cs" />
+    <Compile Include="SessionFactory.cs" />
+    <Compile Include="Transaction.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.XML" />
+  </ItemGroup>
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <ItemGroup>
+    <Content Include="DatabaseOptions.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ITableAdapterWrapper.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ITableAdapterWrapper.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ITableAdapterWrapper.cs	(revision 4073)
@@ -0,0 +1,46 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.Interfaces;
+using System.Data.Common;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  public interface ITableAdapterWrapper<AdapterT, ObjT, RowT>
+   where AdapterT : new()
+   where ObjT : new()
+   where RowT : System.Data.DataRow {
+    void UpdateRow(RowT row);
+
+    RowT InsertNewRow(ObjT obj);
+
+    IEnumerable<RowT> FindById(Guid id);
+
+    IEnumerable<RowT> FindAll();
+
+    AdapterT TransactionalAdapter { get; }
+
+    Session Session { set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ManyToManyRelation.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ManyToManyRelation.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ManyToManyRelation.cs	(revision 4073)
@@ -0,0 +1,13 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  public class ManyToManyRelation: PersistableObject {
+    public Guid Id2 { get; set; }
+
+    public IList<object> AdditionalAttributes { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ManyToManyRelationHelper.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ManyToManyRelationHelper.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/ManyToManyRelationHelper.cs	(revision 4073)
@@ -0,0 +1,107 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  public class ManyToManyRelationHelper<AdapterT, RowT>
+    where AdapterT : new()
+    where RowT : System.Data.DataRow
+    {
+    ITableAdapterWrapper<AdapterT, ManyToManyRelation, RowT> tableAdapterWrapper;
+
+    private int childIndex;
+
+    public ManyToManyRelationHelper(
+      ITableAdapterWrapper<AdapterT, ManyToManyRelation, RowT> tableAdapterWrapper, 
+      int childIndex) {
+      this.tableAdapterWrapper = tableAdapterWrapper;
+      this.childIndex = childIndex;
+    }
+
+    public Session Session {
+      set {
+        tableAdapterWrapper.Session = value;
+      }
+    }
+
+    public void UpdateRelationships(Guid objectA,
+      IList<Guid> relationships) {
+      UpdateRelationships(objectA, relationships, null);
+    }
+
+    public void UpdateRelationships(Guid objectA, 
+      IList<Guid> relationships,
+      IList<object> additionalAttributes) {
+      //firstly check for created references
+      IList<Guid> existing =
+        this.GetRelationships(objectA); 
+
+      foreach (Guid relationship in relationships) {
+        if (!existing.Contains(relationship)) {
+          ManyToManyRelation rel = 
+            new ManyToManyRelation();
+          rel.Id = objectA;
+          rel.Id2 = relationship;
+          if(additionalAttributes != null)
+            rel.AdditionalAttributes = 
+              new List<object>(additionalAttributes);
+          
+          RowT inserted = 
+            tableAdapterWrapper.InsertNewRow(rel);
+
+          tableAdapterWrapper.UpdateRow(inserted);
+        }
+      }
+
+      //secondly check for deleted references
+      ICollection<Guid> deleted =
+        new List<Guid>();
+
+      foreach (Guid relationship in existing) {
+        if(!relationships.Contains(relationship)) {
+          deleted.Add(relationship);
+        }
+      }
+
+      foreach (Guid relationship in deleted) {
+        RowT toDelete =
+          FindRow(objectA, relationship);
+        if (toDelete != null) {
+          toDelete.Delete();
+          tableAdapterWrapper.UpdateRow(toDelete);
+        }
+      }
+    }
+
+    public IList<Guid> GetRelationships(Guid objectA) {
+      IList<Guid> result =
+        new List<Guid>();
+
+      IEnumerable<RowT> rows = 
+        tableAdapterWrapper.FindById(objectA);
+
+      foreach(RowT row in rows) {
+        result.Add((Guid)row[childIndex]);
+      }
+
+      return result;
+    }
+
+    private RowT FindRow(Guid objectA, Guid objectB) {
+      IEnumerable<RowT> rows =
+       tableAdapterWrapper.FindById(objectA);
+
+      RowT found = null;
+
+      foreach (RowT row in rows) {
+        if (row[childIndex].Equals(objectB)) {
+          found = row;
+          break;
+        }
+      }
+
+      return found;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.DataAccess.ADOHelper")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("99D769C4-55B0-4f2a-81B4-11763DCD7A03")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Session.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Session.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Session.cs	(revision 4073)
@@ -0,0 +1,164 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.Interfaces;
+using HeuristicLab.PluginInfrastructure;
+using System.Data.Common;
+using System.Threading;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  public class Session: ISession {
+    private SessionFactory factory;
+
+    private Transaction transaction;
+
+    private DbConnection connection;
+
+    private Thread ownerThread;
+
+    private int usageCounter = 0;
+
+    private IDictionary<Guid, object> adapters =
+      new Dictionary<Guid, object>();
+
+    public Session(SessionFactory factory) {
+      this.factory = factory;
+      this.ownerThread = Thread.CurrentThread;
+      this.usageCounter = 0;
+    }
+
+    public void CheckThread() {
+      if (!Thread.CurrentThread.Equals(ownerThread)) {
+        throw new Exception("Session is owned by another thread");
+      }
+    }
+
+    public DbConnection Connection {
+      get {
+        if (connection == null) {
+          connection = factory.CreateConnection();
+        }
+
+        return connection;
+      }
+    }
+
+    public void DetachTrasaction() {
+      this.transaction = null;
+    }
+
+    public void IncrementUsageCounter() {
+      this.usageCounter++;
+    }
+
+    #region ISession Members
+    public ISessionFactory Factory {
+      get {
+        return this.factory;
+      }
+    }
+
+    public ITransaction BeginTransaction(TransactionIsolationLevel isolationLevel) {
+      CheckThread();
+
+      if (transaction == null) {
+        transaction = new Transaction(this, isolationLevel);
+        transaction.Connection = Connection;
+      }
+
+      transaction.IncrementUsageCounter();
+
+      return transaction;
+    }
+
+    public ITransaction BeginTransaction() {
+      return BeginTransaction(TransactionIsolationLevel.Default);
+    }
+
+    public ITransaction GetCurrentTransaction() {
+      CheckThread();
+
+      return transaction;
+    }
+
+    public IDataAdapter<ObjT> GetDataAdapter<ObjT>()
+      where ObjT : IPersistableObject {
+      CheckThread();
+
+      Guid adapterId = typeof(IDataAdapter<ObjT>).GUID;
+
+      if (!adapters.ContainsKey(adapterId)) {
+        IDataAdapter<ObjT> adapter =
+          ApplicationManager.Manager.GetInstances<IDataAdapter<ObjT>>().First();
+
+        adapter.Session = this;
+
+        adapters.Add(adapterId, adapter);
+      }
+
+      return adapters[adapterId] as IDataAdapter<ObjT>;
+    }
+
+    public T GetDataAdapter<ObjT, T>()
+      where ObjT : IPersistableObject
+      where T : class, IDataAdapter<ObjT>
+    {
+      CheckThread();
+
+      Guid adapterId = typeof(T).GUID;
+
+      if (!adapters.ContainsKey(adapterId)) {
+        T adapter =
+          ApplicationManager.Manager.GetInstances<T>().First();
+
+        adapter.Session = this;
+
+        adapters.Add(adapterId, adapter);
+      }
+
+      return adapters[adapterId] as T;
+    }
+
+    public void EndSession() {
+      this.usageCounter--;
+
+      if (usageCounter <= 0) {
+        CheckThread();
+
+        if (transaction != null) {
+          transaction.Rollback();
+          transaction = null;
+        }
+        if (connection.State == System.Data.ConnectionState.Open) {
+          connection.Close();
+          connection = null;
+        }
+        factory.EndSession(this);
+      }
+    }
+
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/SessionFactory.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/SessionFactory.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/SessionFactory.cs	(revision 4073)
@@ -0,0 +1,122 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.Interfaces;
+using System.Threading;
+using System.Timers;
+using System.Data.Common;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  public class SessionFactory: ISessionFactory {
+    private IDictionary<Thread, Session> sessions =
+      new Dictionary<Thread, Session>();
+
+    public Type DbConnectionType { get;  set; }
+    private String dbConnectionString;
+    public String DbConnectionString { 
+        get {
+            return dbConnectionString;
+        }
+        set {
+            this.dbConnectionString = value;
+            Console.WriteLine("connection set! "+ value);
+        }
+    }
+
+    public SessionFactory() {
+      System.Timers.Timer timer =
+        new System.Timers.Timer();
+
+      TimeSpan interval =
+        new TimeSpan(0, 1, 0);
+
+      timer.Interval = interval.TotalMilliseconds;
+      timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
+      timer.Start();
+    }
+
+    void timer_Elapsed(object sender, ElapsedEventArgs e) {
+      lock (this) {
+        ICollection<Thread> toBeRemoved =
+          new List<Thread>();
+
+        foreach (Thread t in sessions.Keys) {
+          if (t.ThreadState == ThreadState.Stopped) {
+            toBeRemoved.Add(t);
+          }
+        }
+
+        foreach (Thread t in toBeRemoved) {
+          sessions.Remove(t);
+        }
+      }
+    }
+
+    public DbConnection CreateConnection() {
+      DbConnection conn = 
+        Activator.CreateInstance(DbConnectionType) as DbConnection;
+
+      conn.ConnectionString = DbConnectionString;
+
+      return conn;
+    }
+
+    #region ISessionFactory Members
+
+    public ISession GetSessionForCurrentThread() {
+      lock (this) {
+        Thread current = Thread.CurrentThread;
+
+        if (!sessions.ContainsKey(current)) {
+          sessions[current] =
+            new Session(this);
+        }
+
+        sessions[current].IncrementUsageCounter();
+
+        return sessions[current];
+      }
+    }
+
+    public void EndSession(ISession session) {
+      lock (this) {
+        ICollection<Thread> toBeRemoved =
+          new List<Thread>();
+
+        foreach(Thread t in sessions.Keys) {
+          if(sessions[t].Equals(session)) {
+            toBeRemoved.Add(t);
+          }
+        }
+
+        foreach (Thread t in toBeRemoved) {
+          sessions.Remove(t);
+        }
+      }
+    }
+
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/TableAdapterWrapperBase.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/TableAdapterWrapperBase.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/TableAdapterWrapperBase.cs	(revision 4073)
@@ -0,0 +1,84 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.Interfaces;
+using System.Data.Common;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  public abstract class TableAdapterWrapperBase<AdapterT, ObjT, RowT>:
+    ITableAdapterWrapper<AdapterT, ObjT, RowT>
+    where AdapterT : new()
+    where ObjT : new()
+    where RowT : System.Data.DataRow {
+    protected AdapterT adapter =
+      new AdapterT();
+
+    private Session session;
+    
+    #region IDataAdapterWrapper<AdapterT,ObjT,RowT> Members
+
+    public AdapterT TransactionalAdapter {
+      get {
+        if (session == null)
+          throw new Exception("No session set!");
+
+        ITransaction trans =
+          session.GetCurrentTransaction();
+        if (trans != null)
+          SetTransaction(trans.InnerTransaction as DbTransaction);
+        else
+          SetTransaction(null);
+
+        return this.adapter; 
+      }
+    }
+
+    public Session Session {
+      protected get {
+        return this.session;
+      }
+
+      set { 
+        this.session = value;
+
+        SetConnection(value.Connection); 
+      }
+    }
+
+    public abstract void UpdateRow(RowT row);
+
+    public abstract RowT InsertNewRow(ObjT obj);
+
+    public abstract IEnumerable<RowT> FindById(Guid id);
+
+    public abstract IEnumerable<RowT> FindAll();
+
+    protected abstract void SetConnection(DbConnection connection);
+
+    protected abstract void SetTransaction(DbTransaction transaction);
+
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Transaction.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Transaction.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/Transaction.cs	(revision 4073)
@@ -0,0 +1,125 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.Interfaces;
+using System.Data;
+using System.Data.Common;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  class Transaction: ITransaction {
+    private DbTransaction transaction;
+
+    private Session session;
+
+    private int usageCounter = 0;
+
+    private TransactionIsolationLevel isolationLevel;
+
+    public Transaction(Session session, TransactionIsolationLevel isolationLevel) {
+      this.session = session;
+      this.isolationLevel = isolationLevel;
+    }
+
+    public void IncrementUsageCounter() {
+      this.usageCounter++;
+    }
+
+    public DbConnection Connection {
+      set {
+        if (value != null &&
+          (transaction == null ||
+           !(transaction.Connection != null &&
+             transaction.Connection.Equals(value)))) {
+          if (value.State != System.Data.ConnectionState.Open)
+            value.Open();
+
+          if (isolationLevel == TransactionIsolationLevel.Default)
+            transaction = value.BeginTransaction(IsolationLevel.ReadCommitted);
+          else if (isolationLevel == TransactionIsolationLevel.ReadUncommitted)
+            transaction = value.BeginTransaction(IsolationLevel.ReadUncommitted);
+          else if (isolationLevel == TransactionIsolationLevel.ReadCommitted)
+            transaction = value.BeginTransaction(IsolationLevel.ReadCommitted);
+          else if (isolationLevel == TransactionIsolationLevel.RepeatableRead)
+            transaction = value.BeginTransaction(IsolationLevel.RepeatableRead);
+          else if (isolationLevel == TransactionIsolationLevel.Serializable)
+            transaction = value.BeginTransaction(IsolationLevel.Serializable);
+          else
+            transaction = value.BeginTransaction(IsolationLevel.ReadCommitted);
+        }
+      }
+    }
+
+    #region ITransaction Members
+    public void Commit() {
+      this.session.CheckThread();
+
+      usageCounter--;
+
+      if (transaction != null && usageCounter <= 0) {
+        DbConnection conn =
+          transaction.Connection;
+
+        transaction.Commit();
+
+        transaction = null;
+        session.DetachTrasaction();
+
+        if (conn != null && 
+            conn.State == System.Data.ConnectionState.Open)
+          conn.Close();
+      }
+    }
+
+    public void Rollback() {
+      this.session.CheckThread();
+
+      usageCounter = 0;
+
+      if (transaction != null) {
+        DbConnection conn =
+            transaction.Connection;
+
+        transaction.Rollback();
+
+        transaction = null;
+        session.DetachTrasaction();
+
+        if (conn != null &&
+            conn.State == System.Data.ConnectionState.Open)
+          conn.Close();
+      }
+    }
+
+    public object InnerTransaction {
+      get {
+        this.session.CheckThread();
+
+        return transaction;
+      }
+    }
+
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/VarBinaryStream.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/VarBinaryStream.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/VarBinaryStream.cs	(revision 4073)
@@ -0,0 +1,288 @@
+/* Based on: 
+ *   http://www.eggheadcafe.com/conversation.aspx?messageid=29988910&threadid=29988841
+ * */
+
+using System;
+using System.IO;
+using System.Data.SqlClient;
+using System.Data;
+
+namespace HeuristicLab.DataAccess.ADOHelper {
+  /// <summary>
+  /// The VarBinaryStream class inherits from Stream. It uses a
+  /// VarBinarySource class to execute the actual TSQL.
+  /// </summary>
+  public class VarBinaryStream : Stream, IDisposable {
+    private long _position;
+    private readonly VarBinarySource _source;
+
+    public VarBinaryStream(VarBinarySource source) {
+      _position = 0;
+      _source = source;
+    }
+
+    public override bool CanRead {
+      get { return true; }
+    }
+
+    public override bool CanSeek {
+      get { return true; }
+    }
+
+    public override bool CanWrite {
+      get { return true; }
+    }
+
+    public override long Length {
+      get { return _source.Length; }
+    }
+
+    public override long Position {
+      get { return _position; }
+      set { this.Seek(value, SeekOrigin.Begin); }
+    }
+
+    public override void Flush() { }
+
+    public override long Seek(long offset, SeekOrigin origin) {
+      switch (origin) {
+        case SeekOrigin.Begin: {
+            if ((offset < 0) && (offset > this.Length))
+              throw new ArgumentException("Invalid seek origin.");
+            _position = offset;
+            break;
+          }
+        case SeekOrigin.End: {
+            if ((offset > 0) && (offset < -this.Length))
+              throw new ArgumentException("Invalid seek origin.");
+            _position = this.Length - offset;
+            break;
+          }
+        case SeekOrigin.Current: {
+            if ((_position + offset > this.Length))
+              throw new ArgumentException("Invalid seek origin.");
+            _position = _position + offset;
+            break;
+          }
+        default: {
+            throw new ArgumentOutOfRangeException("origin");
+          }
+      }
+      return _position;
+    }
+
+    public override void SetLength(long value) {
+      throw new NotSupportedException();
+    }
+
+    public override int Read(byte[] buffer, int offset, int count) {
+      if (buffer == null)
+        throw new ArgumentNullException("buffer");
+      if (offset < 0)
+        throw new ArgumentOutOfRangeException("offset");
+      if (count < 0)
+        throw new ArgumentOutOfRangeException("count");
+      if (buffer.Length - offset < count)
+        throw new ArgumentException("Offset and length were out of bounds for the array");
+
+      byte[] data = _source.Read(Position, count);
+      if (data == null)
+        return 0;
+
+      Buffer.BlockCopy(data, 0, buffer, offset, data.Length);
+      _position += data.Length;
+      return data.Length;
+    }
+
+    public override void Write(byte[] buffer, int offset, int count) {
+      if (buffer == null)
+        throw new ArgumentNullException("buffer");
+      if (offset < 0)
+        throw new ArgumentOutOfRangeException("offset");
+      if (count < 0)
+        throw new ArgumentOutOfRangeException("count");
+      if (buffer.Length - offset < count)
+        throw new ArgumentException("Offset and length were out of bounds for the array");
+
+      byte[] data = GetWriteBuffer(buffer, count, offset);
+      _source.Write(data, _position, count);
+      _position += count;
+    }
+
+    private static byte[] GetWriteBuffer(byte[] buffer, int count, int
+    offset) {
+      if (buffer.Length == count)
+        return buffer;
+      byte[] data = new byte[count];
+      Buffer.BlockCopy(buffer, offset, data, 0, count);
+      return data;
+    }
+
+    public override void Close() {
+      _source.Close();
+    }
+
+    protected override void Dispose(bool disposing) {
+      if (!disposing) {
+        if (_source != null) {
+          _source.Close();
+          _source.Dispose();
+        }
+      }
+      base.Dispose(disposing);
+    }
+  }
+
+
+  /// <summary>
+  /// The VarBinarySource class constructs the TSQL used
+  /// to read to / write from the VARBINARY(MAX) column.
+  /// IT is currently specialised for a table with a single
+  /// int column for a PK, but this can be easily generalised
+  /// for compound keys.
+  /// </summary>
+  public class VarBinarySource : IDisposable {
+    private SqlCommand _readCommand;
+    private SqlCommand _writeCommand;
+    private SqlConnection _connection;
+    private SqlTransaction _transaction;
+    private bool _ownedTransaction = false;
+    private bool _ownedConnection = false;
+    private readonly long _length;
+
+    public VarBinarySource(SqlConnection connection, 
+      SqlTransaction transaction,
+      string table, string
+    dataColumn, string keyColumn, Guid key) {
+      _connection = connection;
+
+      if (_connection.State == ConnectionState.Closed) {
+        _connection.Open();
+        _ownedConnection = true;
+
+        _transaction =
+          _connection.BeginTransaction(
+          IsolationLevel.RepeatableRead)
+            as SqlTransaction;
+        _ownedTransaction = true;
+      } else {
+        _ownedConnection = false;
+
+        if (transaction != null) {
+          _transaction = transaction;
+
+          _ownedTransaction = false;
+        } else {
+          _transaction =
+            _connection.BeginTransaction(
+          IsolationLevel.ReadCommitted)
+            as SqlTransaction;
+
+          _ownedTransaction = true;
+        }
+      }
+
+      _length = GetLength(connection,  table, dataColumn, keyColumn, key);
+      _readCommand = CreateReadCommand(connection, table, dataColumn,
+      keyColumn, key);
+      _writeCommand = CreateWriteCommand(connection, table, dataColumn,
+      keyColumn, key);
+    }
+
+    public long Length {
+      get { return _length; }
+    }
+
+    private static SqlCommand CreateReadCommand(SqlConnection connection,
+    string table, string dataColumn, string keyColumn,
+    Guid key) {
+      SqlCommand readCommand = connection.CreateCommand();
+      readCommand.CommandText = string.Format(@"
+select substring({0}, @offset, @length)
+from {1}
+where {2} = @key", dataColumn, table, keyColumn);
+      readCommand.Parameters.Add("@key", SqlDbType.UniqueIdentifier).Value = key;
+      readCommand.Parameters.Add("@offset", SqlDbType.BigInt);
+      readCommand.Parameters.Add("@length", SqlDbType.BigInt);
+      return readCommand;
+    }
+
+    private static SqlCommand CreateWriteCommand(SqlConnection connection,
+    string table, string dataColumn, string keyColumn,
+    Guid key) {
+      SqlCommand writecommand = connection.CreateCommand();
+      writecommand.CommandText = string.Format(@"
+update {0}
+set {1}.write(@buffer, @offset, @length)
+where {2} = @key", table, dataColumn, keyColumn);
+      writecommand.Parameters.Add("@key", SqlDbType.UniqueIdentifier).Value = key;
+      writecommand.Parameters.Add("@offset", SqlDbType.BigInt);
+      writecommand.Parameters.Add("@length", SqlDbType.BigInt);
+      writecommand.Parameters.Add("@buffer", SqlDbType.VarBinary);
+      return writecommand;
+    }
+
+    private long GetLength(SqlConnection connection,
+      string table,
+    string dataColumn, string keyColumn,
+    Guid key) {
+      using (SqlCommand command = connection.CreateCommand()) {
+        command.Transaction = _transaction;
+
+        SqlParameter length = command.Parameters.Add("@length",
+        SqlDbType.BigInt);
+        length.Direction = ParameterDirection.Output;
+
+        command.CommandText = string.Format(@"
+select @length = cast(datalength({0}) as bigint)
+from {1}
+where {2} = @key", dataColumn, table, keyColumn);
+        command.Parameters.Add("@key", SqlDbType.UniqueIdentifier).Value = key;
+        command.ExecuteNonQuery();
+        return length.Value == DBNull.Value ? 0 : (long)length.Value;
+      }
+    }
+
+    public byte[] Read(long offset, long length) {
+      _readCommand.Transaction = _transaction;
+
+      // substring is 1-based.
+      _readCommand.Parameters["@offset"].Value = offset + 1;
+      _readCommand.Parameters["@length"].Value = length;
+      return (byte[])_readCommand.ExecuteScalar();
+    }
+
+    public void Write(byte[] buffer, long offset, long length) {
+      _writeCommand.Transaction = _transaction;
+      
+      _writeCommand.Parameters["@buffer"].Value = buffer;
+      _writeCommand.Parameters["@offset"].Value = offset;
+      _writeCommand.Parameters["@length"].Value = length;
+      _writeCommand.ExecuteNonQuery();
+    }
+
+    public void Close() {
+      if (_transaction != null) {
+        if(_ownedTransaction)
+          _transaction.Commit();
+        _transaction = null;
+      }
+
+      if (_connection != null) {
+        if (_ownedConnection)
+          _connection.Close();
+        _connection = null;
+      }
+    }
+
+    public void Dispose() {
+      if (_readCommand != null) {
+        _readCommand.Dispose();
+      }
+      if (_writeCommand != null) {
+        _writeCommand.Dispose();
+      }
+    }
+  }
+}
+
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/DataAccessPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/DataAccessPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/DataAccessPlugin.cs	(revision 4073)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.DataAccess {
+  [Plugin("HeuristicLab.DataAccess-3.2")]
+  [PluginFile("HeuristicLab.DataAccess-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  public class DataAccessPlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/HeuristicLab.DataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/HeuristicLab.DataAccess-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/HeuristicLab.DataAccess-3.3.csproj	(revision 4073)
@@ -0,0 +1,168 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{9076697B-C151-46CD-95BC-1D059492B478}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.DataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.DataAccess-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Interfaces\IPolymorphicDataAdapter.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="DataAccessPlugin.cs" />
+    <Compile Include="Interfaces\ISession.cs" />
+    <Compile Include="Interfaces\ISessionFactory.cs" />
+    <Compile Include="Interfaces\ITransaction.cs" />
+    <Compile Include="Interfaces\ITransactionManager.cs" />
+    <Compile Include="PersistableObject.cs" />
+    <Compile Include="Interfaces\IDataAdapter.cs" />
+    <Compile Include="Interfaces\IPersistableObject.cs" />
+  </ItemGroup>
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IDataAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IDataAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IDataAdapter.cs	(revision 4073)
@@ -0,0 +1,66 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.Interfaces {
+  public interface IDataAdapter<ObjT>
+    where ObjT: IPersistableObject
+  {
+    /// <summary>
+    /// Save or update the object
+    /// </summary>
+    /// <param name="user"></param>
+    void Update(ObjT obj);
+
+    /// <summary>
+    /// Get the object with the specified ID
+    /// </summary>
+    /// <param name="userId"></param>
+    /// <returns></returns>
+    ObjT GetById(Guid id);
+
+    /// <summary>
+    /// Get all objects
+    /// </summary>
+    /// <returns></returns>
+    ICollection<ObjT> GetAll();
+
+    /// <summary>
+    /// Get all objects (paged)
+    /// </summary>
+    /// <returns></returns>
+    ICollection<ObjT> GetAll(int from, int size);
+
+    /// <summary>
+    /// Deletes the object
+    /// </summary>
+    /// <param name="user"></param>
+    bool Delete(ObjT obj);
+
+    /// <summary>
+    /// sets the session
+    /// </summary>
+    ISession Session { set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IPersistableObject.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IPersistableObject.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IPersistableObject.cs	(revision 4073)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.Interfaces {
+  public interface IPersistableObject {
+    Guid Id { get; set;  }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IPolymorphicDataAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IPolymorphicDataAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/IPolymorphicDataAdapter.cs	(revision 4073)
@@ -0,0 +1,49 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.Interfaces {
+  public interface IPolymorphicDataAdapter<ObjT>: IDataAdapter<ObjT>
+    where ObjT: IPersistableObject
+  {
+    /// <summary>
+    /// Save or update the object
+    /// </summary>
+    /// <param name="user"></param>
+    void UpdatePolymorphic(ObjT obj);
+
+    /// <summary>
+    /// Get the object with the specified ID
+    /// </summary>
+    /// <param name="userId"></param>
+    /// <returns></returns>
+    ObjT GetByIdPolymorphic(Guid id);
+
+    /// <summary>
+    /// Deletes the object
+    /// </summary>
+    /// <param name="user"></param>
+    bool DeletePolymorphic(ObjT obj);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ISession.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ISession.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ISession.cs	(revision 4073)
@@ -0,0 +1,49 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.Interfaces {
+  public enum TransactionIsolationLevel {
+    Default, ReadUncommitted, ReadCommitted, RepeatableRead, Serializable
+  };
+
+  public interface ISession {
+    ISessionFactory Factory { get; }
+
+    ITransaction BeginTransaction(TransactionIsolationLevel isolationLevel);
+
+    ITransaction BeginTransaction();
+
+    ITransaction GetCurrentTransaction();
+
+    IDataAdapter<ObjT> GetDataAdapter<ObjT>()
+      where ObjT : IPersistableObject;
+
+    T GetDataAdapter<ObjT, T>()
+      where ObjT : IPersistableObject
+      where T : class, IDataAdapter<ObjT>;
+
+    void EndSession();
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ISessionFactory.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ISessionFactory.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ISessionFactory.cs	(revision 4073)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.Interfaces {
+  public interface ISessionFactory {
+    ISession GetSessionForCurrentThread();
+
+    Type DbConnectionType { set; }
+    String DbConnectionString { set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ITransaction.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ITransaction.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ITransaction.cs	(revision 4073)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.Interfaces {
+  public interface ITransaction {
+    void Commit();
+    void Rollback();
+
+    object InnerTransaction { get; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ITransactionManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ITransactionManager.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Interfaces/ITransactionManager.cs	(revision 4073)
@@ -0,0 +1,31 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.DataAccess.Interfaces {
+  public interface ITransactionManager {
+    ITransaction BeginTransaction();
+    ITransaction GetTransactionForCurrentThread(); 
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/PersistableObject.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/PersistableObject.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/PersistableObject.cs	(revision 4073)
@@ -0,0 +1,51 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.DataAccess {
+  [DataContract]
+  [Serializable]
+  public class PersistableObject: IPersistableObject {
+    [DataMember]
+    public Guid Id { get; set; }
+
+    public override bool Equals(object obj) {
+      if (obj is IPersistableObject)
+        return this.Id.Equals(
+          (obj as IPersistableObject).Id);
+      else
+        return base.Equals(obj);
+    }
+
+    public override string ToString() {
+      return Id.ToString();
+    }
+
+    public override int GetHashCode() {
+      return this.Id.GetHashCode();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.DataAccess")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("EC1415CC-94EF-4786-9811-41881787FF4E")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln	(revision 4073)
@@ -15,4 +15,18 @@
 		PreBuildEvent.cmd = PreBuildEvent.cmd
 	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Security.ADODataAccess-3.3", "HeuristicLab.Security.ADODataAccess\3.3\HeuristicLab.Security.ADODataAccess-3.3.csproj", "{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Security.Contracts-3.3", "HeuristicLab.Security.Contracts\3.3\HeuristicLab.Security.Contracts-3.3.csproj", "{D59E852C-F205-4647-8C05-EB9ED1CF44E9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Security.Core-3.3", "HeuristicLab.Security.Core\3.3\HeuristicLab.Security.Core-3.3.csproj", "{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Security.DataAccess-3.3", "HeuristicLab.Security.DataAccess\3.3\HeuristicLab.Security.DataAccess-3.3.csproj", "{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Security.Server-3.3", "HeuristicLab.Security.Server\3.3\HeuristicLab.Security.Server-3.3.csproj", "{E3288D4B-7A51-499A-AC5B-019319CE51DC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.DataAccess-3.3", "HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj", "{9076697B-C151-46CD-95BC-1D059492B478}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.DataAccess.ADOHelper-3.3", "HeuristicLab.DataAccess.ADOHelper\3.3\HeuristicLab.DataAccess.ADOHelper-3.3.csproj", "{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}"
 EndProject
 Global
@@ -58,4 +72,88 @@
 		{C92AAC8C-4D88-449C-ABA5-2B935D769842}.Release|x64.ActiveCfg = Release|Any CPU
 		{C92AAC8C-4D88-449C-ABA5-2B935D769842}.Release|x86.ActiveCfg = Release|Any CPU
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Debug|x64.ActiveCfg = Debug|x64
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Debug|x64.Build.0 = Debug|x64
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Debug|x86.ActiveCfg = Debug|x86
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Debug|x86.Build.0 = Debug|x86
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Release|x64.ActiveCfg = Release|x64
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Release|x64.Build.0 = Release|x64
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Release|x86.ActiveCfg = Release|x86
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}.Release|x86.Build.0 = Release|x86
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Debug|x64.ActiveCfg = Debug|x64
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Debug|x64.Build.0 = Debug|x64
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Debug|x86.ActiveCfg = Debug|x86
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Debug|x86.Build.0 = Debug|x86
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Release|x64.ActiveCfg = Release|x64
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Release|x64.Build.0 = Release|x64
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Release|x86.ActiveCfg = Release|x86
+		{D59E852C-F205-4647-8C05-EB9ED1CF44E9}.Release|x86.Build.0 = Release|x86
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Debug|x64.ActiveCfg = Debug|x64
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Debug|x64.Build.0 = Debug|x64
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Debug|x86.ActiveCfg = Debug|x86
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Debug|x86.Build.0 = Debug|x86
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Release|x64.ActiveCfg = Release|x64
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Release|x64.Build.0 = Release|x64
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Release|x86.ActiveCfg = Release|x86
+		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}.Release|x86.Build.0 = Release|x86
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Debug|x64.ActiveCfg = Debug|x64
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Debug|x64.Build.0 = Debug|x64
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Debug|x86.ActiveCfg = Debug|x86
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Debug|x86.Build.0 = Debug|x86
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Release|x64.ActiveCfg = Release|x64
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Release|x64.Build.0 = Release|x64
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Release|x86.ActiveCfg = Release|x86
+		{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}.Release|x86.Build.0 = Release|x86
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Debug|x64.ActiveCfg = Debug|x64
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Debug|x64.Build.0 = Debug|x64
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Debug|x86.ActiveCfg = Debug|x86
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Debug|x86.Build.0 = Debug|x86
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Release|x64.ActiveCfg = Release|x64
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Release|x64.Build.0 = Release|x64
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Release|x86.ActiveCfg = Release|x86
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC}.Release|x86.Build.0 = Release|x86
+		{9076697B-C151-46CD-95BC-1D059492B478}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9076697B-C151-46CD-95BC-1D059492B478}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9076697B-C151-46CD-95BC-1D059492B478}.Debug|x64.ActiveCfg = Debug|x64
+		{9076697B-C151-46CD-95BC-1D059492B478}.Debug|x64.Build.0 = Debug|x64
+		{9076697B-C151-46CD-95BC-1D059492B478}.Debug|x86.ActiveCfg = Debug|x86
+		{9076697B-C151-46CD-95BC-1D059492B478}.Debug|x86.Build.0 = Debug|x86
+		{9076697B-C151-46CD-95BC-1D059492B478}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9076697B-C151-46CD-95BC-1D059492B478}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9076697B-C151-46CD-95BC-1D059492B478}.Release|x64.ActiveCfg = Release|x64
+		{9076697B-C151-46CD-95BC-1D059492B478}.Release|x64.Build.0 = Release|x64
+		{9076697B-C151-46CD-95BC-1D059492B478}.Release|x86.ActiveCfg = Release|x86
+		{9076697B-C151-46CD-95BC-1D059492B478}.Release|x86.Build.0 = Release|x86
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Debug|x64.ActiveCfg = Debug|x64
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Debug|x64.Build.0 = Debug|x64
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Debug|x86.ActiveCfg = Debug|x86
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Debug|x86.Build.0 = Debug|x86
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Release|x64.ActiveCfg = Release|x64
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Release|x64.Build.0 = Release|x64
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Release|x86.ActiveCfg = Release|x86
+		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/CommonPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/CommonPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/CommonPlugin.cs	(revision 4073)
@@ -0,0 +1,36 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Client.Common {
+  [Plugin("HeuristicLab.Hive.Client.Common-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.Common-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Tracing","3.2.0.0")]
+  public class CommonPlugin: PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/HeuristicLab.Hive.Client.Common-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/HeuristicLab.Hive.Client.Common-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/HeuristicLab.Hive.Client.Common-3.3.csproj	(revision 4073)
@@ -0,0 +1,139 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{89F4BC52-C174-481E-9BD2-3814171020E8}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Client.Common</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Client.Common-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <DelaySign>false</DelaySign>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="CommonPlugin.cs" />
+    <Compile Include="MessageQueue.cs" />
+    <Compile Include="NetworkEnum.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.2\HeuristicLab.Hive.Contracts-3.2.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Interfaces\" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/Logging.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/Logging.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/Logging.cs	(revision 4073)
@@ -0,0 +1,108 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Diagnostics;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Client.Common {
+  /// <summary>
+  /// The Logging class uses the Windows Event logging mechanism. It writes the logs to a custom log 
+  /// called "Hive Client". For the creation of the Hive Client Log the program must be executed with
+  /// Administrator privileges   
+  /// </summary>
+  public class Logging {      
+    private static Logging instance = null;
+    /// <summary>
+    /// This is an implementation of the singleton design pattern.
+    /// </summary>
+    /// <returns>the instance of the logger</returns>
+    public static Logging Instance { 
+      get {
+        if (instance == null)
+         instance = new Logging();
+        return instance;
+      } 
+      set {}
+    } 
+    
+    static Logging GetInstance() {
+      if (instance == null)
+        instance = new Logging();
+      return instance;
+    }
+
+    private Logging() {      
+      //eventLogger = new EventLog("Hive Client");          
+    }
+
+    /// <summary>
+    /// Writes an Info Log-Entry
+    /// </summary>
+    /// <param name="source">string representation of the caller</param>
+    /// <param name="message">the message</param>
+    public void Info(String source, String message) {
+      HiveLogger.Info(source + ": " + message);
+
+      //DateTime current = DateTime.Now;
+      ///Debug.WriteLine(current + " - " + source + ": " + message);
+
+    //  eventLogger.Source = source;
+    //  eventLogger.WriteEntry(message);      
+    //  eventLogger.Close();
+    }
+
+    /// <summary>
+    /// Writes an Error Log-Entry
+    /// </summary>
+    /// <param name="source">string representation of the caller</param>
+    /// <param name="message">the message</param>
+    public void Error(String source, String message) {
+      HiveLogger.Error(source + ": " + message);
+      
+      //DateTime current = DateTime.Now;
+      //Debug.WriteLine(current + " - " + source + ": " + message);
+      
+      //eventLogger.Source = source;
+      //, EventLogEntryType.Error
+      //eventLogger.WriteEntry(message);
+      //eventLogger.Close();
+    }
+
+    /// <summary>
+    /// Writes an Error Log-Entry
+    /// </summary>
+    /// <param name="source">string representation of the caller</param>
+    /// <param name="message">the message</param>
+    /// <param name="e">the exception</param>
+    public void Error(String source, String message, Exception e) {
+      HiveLogger.Error(source + ": " + message, e);
+      //DateTime current = DateTime.Now;
+      //Debug.WriteLine(current + " - " + source + ": " + e + message);
+    //  eventLogger.Source = source;
+    //  eventLogger.WriteEntry(message +"\n" + e.ToString());
+    //  eventLogger.Close();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/MessageQueue.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/MessageQueue.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/MessageQueue.cs	(revision 4073)
@@ -0,0 +1,105 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading;
+using HeuristicLab.Hive.Contracts;
+
+namespace HeuristicLab.Hive.Client.Common {
+
+  /// <summary>
+  /// Queue for the communication between threads and AppDomains. The Queue is threadsafe and uses a semaphore
+  /// </summary>
+  public class MessageQueue : MarshalByRefObject {
+
+    private static MessageQueue instance = null;
+    
+    private Queue<MessageContainer> queue = null;
+    private Semaphore semaphore = null;
+
+    /// <summary>
+    /// Returns the Instance of the MessageQueue. If the instance is null, it will be created.
+    /// This is a Implementation of the Singleton pattern
+    /// </summary>
+    /// <returns>the MessageQueue Instance</returns>
+    public static MessageQueue GetInstance() {
+      if (instance == null) {
+        instance = new MessageQueue();
+      }
+      return instance;
+    }
+
+    /// <summary>
+    /// Sets Lease time to infinite
+    /// </summary>
+    /// <returns>nothing</returns>
+    public override object InitializeLifetimeService() {
+      return null;
+    }
+
+    /// <summary>
+    /// Creates a new MessageQueue Object.
+    /// A new Queue and a Semaphore is created. The Semaphore is set to a max size of 5000.
+    /// </summary>
+    private MessageQueue() {
+      queue = new Queue<MessageContainer>();
+      semaphore = new Semaphore(0, 5000);
+    }
+
+    /// <summary>
+    /// Returns the oldest MessageContainer Object from the Queue. 
+    /// </summary>
+    /// <returns>the oldest MessageContainer Object</returns>
+    public MessageContainer GetMessage() {
+      semaphore.WaitOne();
+      lock (this) {
+        if (queue.Count > 0) {
+          return queue.Dequeue();
+        }
+      }
+      return null;
+    }
+
+    /// <summary>
+    /// Adds a MessageContainer Object to the Queue 
+    /// </summary>
+    /// <param name="messageContainer">the MessageContainer</param>
+    public void AddMessage(MessageContainer messageContainer) {
+      lock (this) {
+        queue.Enqueue(messageContainer);
+        semaphore.Release();
+      }
+    }
+
+    /// <summary>
+    /// Adds a message to the Queue. The MessageContainer Object is built in the Method
+    /// </summary>
+    /// <param name="message">the Message</param>
+    public void AddMessage(MessageContainer.MessageType message) {
+      lock (this) {
+        queue.Enqueue(new MessageContainer(message));
+        semaphore.Release();
+      }
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/NetworkEnum.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/NetworkEnum.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/NetworkEnum.cs	(revision 4073)
@@ -0,0 +1,31 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Hive.Client.Common {
+  public class NetworkEnum {
+    public enum WcfConnState { Connected, Disconnected, Failed, Loggedin }  
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,61 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+using System.Security;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Client.Common")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: AllowPartiallyTrustedCallers]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("390a4020-8f30-4c57-b039-6f3647df86b0")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/CommunicationsPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/CommunicationsPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/CommunicationsPlugin.cs	(revision 4073)
@@ -0,0 +1,40 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Client.Communication {
+  
+  [Plugin("HeuristicLab.Hive.Client.Communication-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.Communication-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Common-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Tracing")]
+  public class CommunicationsPlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/HeuristicLab.Hive.Client.Communication-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/HeuristicLab.Hive.Client.Communication-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/HeuristicLab.Hive.Client.Communication-3.3.csproj	(revision 4073)
@@ -0,0 +1,208 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AEB51212-CDBA-4FC6-A2EE-02359AA53ECE}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Client.Communication</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Client.Communication-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="CommunicationsPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Service References\ServerService\Reference.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </Compile>
+    <Compile Include="WcfService.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Client.Common\3.3\HeuristicLab.Hive.Client.Common-3.3.csproj">
+      <Project>{89F4BC52-C174-481E-9BD2-3814171020E8}</Project>
+      <Name>HeuristicLab.Hive.Client.Common-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.2\HeuristicLab.Hive.Contracts-3.2.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadata Include="Service References\" />
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadataStorage Include="Service References\ServerService\" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\ServerService\configuration91.svcinfo" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\ServerService\configuration.svcinfo" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.Response.datasource" />
+    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseCalendar.datasource" />
+    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseHB.datasource" />
+    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseJob.datasource" />
+    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponsePlugin.datasource" />
+    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseResultReceived.datasource" />
+    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseSerializedJob.datasource" />
+    <None Include="Service References\ServerService\Arrays1.xsd" />
+    <None Include="Service References\ServerService\HeuristicLab.DataAccess1.xsd" />
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Client.Communication.ServerService.Response.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Contracts.BusinessObjects1.xsd" />
+    <None Include="Service References\ServerService\HeuristicLab.Hive.Contracts1.xsd" />
+    <None Include="Service References\ServerService\HeuristicLab.PluginInfrastructure.xsd" />
+    <None Include="Service References\ServerService\HeuristicLab.PluginInfrastructure2.xsd" />
+    <None Include="Service References\ServerService\Message1.xsd" />
+    <None Include="Service References\ServerService\Reference.svcmap">
+      <Generator>WCF Proxy Generator</Generator>
+      <LastGenOutput>Reference.cs</LastGenOutput>
+    </None>
+    <None Include="Service References\ServerService\service1.wsdl" />
+    <None Include="Service References\ServerService\service2.xsd" />
+    <None Include="Service References\ServerService\service3.xsd" />
+    <None Include="Service References\ServerService\System1.xsd" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Client.Communication")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("390a4020-8f30-4c57-b039-6f3647df86b0")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.Response.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.Response.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.Response.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="Response" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Contracts.Response, HeuristicLab.Hive.Contracts-3.2, Version=3.2.0.969, Culture=neutral, PublicKeyToken=ba48961d6f65dcec</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseCalendar.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseCalendar.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseCalendar.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ResponseCalendar" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Contracts.ResponseCalendar, HeuristicLab.Hive.Contracts-3.2, Version=3.2.0.3022, Culture=neutral, PublicKeyToken=ba48961d6f65dcec</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseHB.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseHB.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseHB.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ResponseHB" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Contracts.ResponseHB, HeuristicLab.Hive.Contracts-3.2, Version=3.2.0.969, Culture=neutral, PublicKeyToken=ba48961d6f65dcec</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseJob.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseJob.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseJob.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ResponseJob" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Contracts.ResponseJob, HeuristicLab.Hive.Contracts-3.2, Version=3.2.0.969, Culture=neutral, PublicKeyToken=ba48961d6f65dcec</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponsePlugin.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponsePlugin.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponsePlugin.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ResponsePlugin" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Contracts.ResponsePlugin, HeuristicLab.Hive.Contracts-3.2, Version=3.2.0.1369, Culture=neutral, PublicKeyToken=ba48961d6f65dcec</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseResultReceived.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseResultReceived.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Properties/DataSources/HeuristicLab.Hive.Contracts.ResponseResultReceived.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ResponseResultReceived" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Contracts.ResponseResultReceived, HeuristicLab.Hive.Contracts-3.2, Version=3.2.0.969, Culture=neutral, PublicKeyToken=ba48961d6f65dcec</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Arrays.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Arrays.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Arrays.xsd	(revision 4073)
@@ -0,0 +1,33 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:complexType name="ArrayOfKeyValueOflongdouble">
+    <xs:annotation>
+      <xs:appinfo>
+        <IsDictionary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</IsDictionary>
+      </xs:appinfo>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOflongdouble">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="Key" type="xs:long" />
+            <xs:element name="Value" type="xs:double" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfKeyValueOflongdouble" nillable="true" type="tns:ArrayOfKeyValueOflongdouble" />
+  <xs:complexType name="ArrayOfstring">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
+  <xs:complexType name="ArrayOfbase64Binary">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="base64Binary" nillable="true" type="xs:base64Binary" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfbase64Binary" nillable="true" type="tns:ArrayOfbase64Binary" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Arrays1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Arrays1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Arrays1.xsd	(revision 4073)
@@ -0,0 +1,34 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="ArrayOfKeyValueOfguiddouble">
+    <xs:annotation>
+      <xs:appinfo>
+        <IsDictionary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</IsDictionary>
+      </xs:appinfo>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfguiddouble">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="Key" type="ser:guid" />
+            <xs:element name="Value" type="xs:double" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfKeyValueOfguiddouble" nillable="true" type="tns:ArrayOfKeyValueOfguiddouble" />
+  <xs:complexType name="ArrayOfguid">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="guid" type="ser:guid" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfguid" nillable="true" type="tns:ArrayOfguid" />
+  <xs:complexType name="ArrayOfbase64Binary">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="base64Binary" nillable="true" type="xs:base64Binary" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfbase64Binary" nillable="true" type="tns:ArrayOfbase64Binary" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.DataAccess.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.DataAccess.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.DataAccess.xsd	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="PersistableObject">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="Id" type="ser:guid" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="PersistableObject" nillable="true" type="tns:PersistableObject" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.DataAccess1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.DataAccess1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.DataAccess1.xsd	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="PersistableObject">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="Id" type="ser:guid" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="PersistableObject" nillable="true" type="tns:PersistableObject" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.BusinessObjects.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.BusinessObjects.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.BusinessObjects.xsd	(revision 4073)
@@ -0,0 +1,64 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/System" />
+  <xs:complexType name="ClientInfo">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Resource">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="ClientId" type="ser:guid" />
+          <xs:element minOccurs="0" name="ClientInfoId" type="xs:long" />
+          <xs:element minOccurs="0" name="Config" nillable="true" type="tns:ClientConfig" />
+          <xs:element minOccurs="0" name="CpuSpeedPerCore" type="xs:int" />
+          <xs:element minOccurs="0" name="Login" type="xs:dateTime" />
+          <xs:element minOccurs="0" name="Memory" type="xs:int" />
+          <xs:element minOccurs="0" name="NrOfCores" type="xs:int" />
+          <xs:element minOccurs="0" name="State" type="tns:State" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ClientInfo" nillable="true" type="tns:ClientInfo" />
+  <xs:complexType name="Resource">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="ResourceId" type="xs:long" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="Resource" nillable="true" type="tns:Resource" />
+  <xs:complexType name="ClientConfig">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="ClientConfigId" type="xs:long" />
+      <xs:element minOccurs="0" name="HeartBeatIntervall" type="xs:int" />
+      <xs:element minOccurs="0" name="UpDownTimeCalendar" nillable="true" type="xs:string" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ClientConfig" nillable="true" type="tns:ClientConfig" />
+  <xs:simpleType name="State">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="idle" />
+      <xs:enumeration value="calculating" />
+      <xs:enumeration value="offline" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="State" nillable="true" type="tns:State" />
+  <xs:complexType name="HeartBeatData">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="ClientId" type="ser:guid" />
+      <xs:element minOccurs="0" name="freeCores" type="xs:int" />
+      <xs:element minOccurs="0" name="freeMemory" type="xs:int" />
+      <xs:element minOccurs="0" name="jobProgress" type="xs:int" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="HeartBeatData" nillable="true" type="tns:HeartBeatData" />
+  <xs:complexType name="JobResult">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="Client" nillable="true" type="tns:ClientInfo" />
+      <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/System" minOccurs="0" name="Exception" nillable="true" type="q1:Exception" />
+      <xs:element minOccurs="0" name="JobId" type="xs:long" />
+      <xs:element minOccurs="0" name="JobResultId" type="xs:long" />
+      <xs:element minOccurs="0" name="Result" nillable="true" type="xs:base64Binary" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="JobResult" nillable="true" type="tns:JobResult" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.BusinessObjects1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.BusinessObjects1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.BusinessObjects1.xsd	(revision 4073)
@@ -0,0 +1,149 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" />
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+  <xs:complexType name="ClientDto">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:ResourceDto">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="CalendarSyncStatus" type="tns:CalendarState" />
+          <xs:element minOccurs="0" name="Config" nillable="true" type="tns:ClientConfigDto" />
+          <xs:element minOccurs="0" name="CpuSpeedPerCore" type="xs:int" />
+          <xs:element minOccurs="0" name="FreeMemory" type="xs:int" />
+          <xs:element minOccurs="0" name="Login" type="xs:dateTime" />
+          <xs:element minOccurs="0" name="Memory" type="xs:int" />
+          <xs:element minOccurs="0" name="NrOfCores" type="xs:int" />
+          <xs:element minOccurs="0" name="NrOfFreeCores" type="xs:int" />
+          <xs:element minOccurs="0" name="State" type="tns:State" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ClientDto" nillable="true" type="tns:ClientDto" />
+  <xs:complexType name="ResourceDto">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q1:PersistableObject">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResourceDto" nillable="true" type="tns:ResourceDto" />
+  <xs:simpleType name="CalendarState">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Fetch" />
+      <xs:enumeration value="ForceFetch" />
+      <xs:enumeration value="Fetching" />
+      <xs:enumeration value="Fetched" />
+      <xs:enumeration value="NotAllowedToFetch" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="CalendarState" nillable="true" type="tns:CalendarState" />
+  <xs:complexType name="ClientConfigDto">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q2:PersistableObject">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="HeartBeatIntervall" nillable="true" type="xs:int" />
+          <xs:element minOccurs="0" name="UpDownTimeCalendar" nillable="true" type="xs:string" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ClientConfigDto" nillable="true" type="tns:ClientConfigDto" />
+  <xs:simpleType name="State">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="nullState" />
+      <xs:enumeration value="idle" />
+      <xs:enumeration value="calculating" />
+      <xs:enumeration value="offline" />
+      <xs:enumeration value="finished" />
+      <xs:enumeration value="abort" />
+      <xs:enumeration value="requestSnapshot" />
+      <xs:enumeration value="requestSnapshotSent" />
+      <xs:enumeration value="pending" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="State" nillable="true" type="tns:State" />
+  <xs:complexType name="HeartBeatData">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="ClientId" type="ser:guid" />
+      <xs:element minOccurs="0" name="FreeCores" type="xs:int" />
+      <xs:element minOccurs="0" name="FreeMemory" type="xs:int" />
+      <xs:element xmlns:q3="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="JobProgress" nillable="true" type="q3:ArrayOfKeyValueOfguiddouble" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="HeartBeatData" nillable="true" type="tns:HeartBeatData" />
+  <xs:complexType name="JobDto">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q4="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q4:PersistableObject">
+        <xs:sequence>
+          <xs:element xmlns:q5="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="AssignedResourceIds" nillable="true" type="q5:ArrayOfguid" />
+          <xs:element minOccurs="0" name="Client" nillable="true" type="tns:ClientDto" />
+          <xs:element minOccurs="0" name="CoresNeeded" type="xs:int" />
+          <xs:element minOccurs="0" name="DateCalculated" nillable="true" type="xs:dateTime" />
+          <xs:element minOccurs="0" name="DateCreated" nillable="true" type="xs:dateTime" />
+          <xs:element minOccurs="0" name="MemoryNeeded" type="xs:int" />
+          <xs:element minOccurs="0" name="ParentJob" nillable="true" type="tns:JobDto" />
+          <xs:element minOccurs="0" name="Percentage" nillable="true" type="xs:double" />
+          <xs:element minOccurs="0" name="PluginsNeeded" nillable="true" type="tns:ArrayOfHivePluginInfoDto" />
+          <xs:element minOccurs="0" name="Priority" type="xs:int" />
+          <xs:element minOccurs="0" name="Project" nillable="true" type="tns:ProjectDto" />
+          <xs:element minOccurs="0" name="State" type="tns:State" />
+          <xs:element minOccurs="0" name="UserId" type="ser:guid" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="JobDto" nillable="true" type="tns:JobDto" />
+  <xs:complexType name="ArrayOfHivePluginInfoDto">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="HivePluginInfoDto" nillable="true" type="tns:HivePluginInfoDto" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfHivePluginInfoDto" nillable="true" type="tns:ArrayOfHivePluginInfoDto" />
+  <xs:complexType name="HivePluginInfoDto">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q6="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q6:PersistableObject">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="BuildDate" type="xs:dateTime" />
+          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
+          <xs:element minOccurs="0" name="Version" nillable="true" type="xs:string" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="HivePluginInfoDto" nillable="true" type="tns:HivePluginInfoDto" />
+  <xs:complexType name="ProjectDto">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q7="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q7:PersistableObject">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ProjectDto" nillable="true" type="tns:ProjectDto" />
+  <xs:complexType name="ArrayOfAppointmentDto">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="AppointmentDto" nillable="true" type="tns:AppointmentDto" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfAppointmentDto" nillable="true" type="tns:ArrayOfAppointmentDto" />
+  <xs:complexType name="AppointmentDto">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q8="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q8:PersistableObject">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="AllDayEvent" type="xs:boolean" />
+          <xs:element minOccurs="0" name="EndDate" type="xs:dateTime" />
+          <xs:element minOccurs="0" name="Recurring" type="xs:boolean" />
+          <xs:element minOccurs="0" name="RecurringId" type="ser:guid" />
+          <xs:element minOccurs="0" name="ResourceId" type="ser:guid" />
+          <xs:element minOccurs="0" name="StartDate" type="xs:dateTime" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="AppointmentDto" nillable="true" type="tns:AppointmentDto" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts.xsd	(revision 4073)
@@ -0,0 +1,66 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:complexType name="Response">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="StatusMessage" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="Success" type="xs:boolean" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="Response" nillable="true" type="tns:Response" />
+  <xs:complexType name="ResponseHB">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="ActionRequest" nillable="true" type="tns:ArrayOfMessageContainer" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponseHB" nillable="true" type="tns:ResponseHB" />
+  <xs:complexType name="ArrayOfMessageContainer">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="MessageContainer" nillable="true" type="tns:MessageContainer" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfMessageContainer" nillable="true" type="tns:ArrayOfMessageContainer" />
+  <xs:complexType name="MessageContainer">
+    <xs:sequence>
+      <xs:element name="_x003C_JobId_x003E_k__BackingField" type="xs:long" />
+      <xs:element name="_x003C_Message_x003E_k__BackingField" type="tns:MessageContainer.MessageType" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="MessageContainer" nillable="true" type="tns:MessageContainer" />
+  <xs:simpleType name="MessageContainer.MessageType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="FetchJob" />
+      <xs:enumeration value="AbortJob" />
+      <xs:enumeration value="JobAborted" />
+      <xs:enumeration value="RequestSnapshot" />
+      <xs:enumeration value="FinishedJob" />
+      <xs:enumeration value="NoMessage" />
+      <xs:enumeration value="SnapshotReady" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="MessageContainer.MessageType" nillable="true" type="tns:MessageContainer.MessageType" />
+  <xs:complexType name="ResponseJob">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="JobId" type="xs:long" />
+          <xs:element minOccurs="0" name="SerializedJob" nillable="true" type="xs:base64Binary" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponseJob" nillable="true" type="tns:ResponseJob" />
+  <xs:complexType name="ResponseResultReceived">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="JobId" type="xs:long" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponseResultReceived" nillable="true" type="tns:ResponseResultReceived" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.Hive.Contracts1.xsd	(revision 4073)
@@ -0,0 +1,94 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" />
+  <xs:complexType name="Response">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="StatusMessage" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="Success" type="xs:boolean" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="Response" nillable="true" type="tns:Response" />
+  <xs:complexType name="ResponseHB">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="ActionRequest" nillable="true" type="tns:ArrayOfMessageContainer" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponseHB" nillable="true" type="tns:ResponseHB" />
+  <xs:complexType name="ArrayOfMessageContainer">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="MessageContainer" nillable="true" type="tns:MessageContainer" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfMessageContainer" nillable="true" type="tns:ArrayOfMessageContainer" />
+  <xs:complexType name="MessageContainer">
+    <xs:sequence>
+      <xs:element name="_x003C_JobId_x003E_k__BackingField" type="ser:guid" />
+      <xs:element name="_x003C_Message_x003E_k__BackingField" type="tns:MessageContainer.MessageType" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="MessageContainer" nillable="true" type="tns:MessageContainer" />
+  <xs:simpleType name="MessageContainer.MessageType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="FetchJob" />
+      <xs:enumeration value="AbortJob" />
+      <xs:enumeration value="JobAborted" />
+      <xs:enumeration value="RequestSnapshot" />
+      <xs:enumeration value="FinishedJob" />
+      <xs:enumeration value="NoMessage" />
+      <xs:enumeration value="SnapshotReady" />
+      <xs:enumeration value="Shutdown" />
+      <xs:enumeration value="JobFailed" />
+      <xs:enumeration value="UptimeLimitDisconnect" />
+      <xs:enumeration value="FetchOrForceFetchCalendar" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="MessageContainer.MessageType" nillable="true" type="tns:MessageContainer.MessageType" />
+  <xs:complexType name="ResponseJob">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="Job" nillable="true" type="q1:JobDto" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponseJob" nillable="true" type="tns:ResponseJob" />
+  <xs:complexType name="ResponseResultReceived">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="JobId" type="ser:guid" />
+          <xs:element minOccurs="0" name="finished" type="xs:boolean" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponseResultReceived" nillable="true" type="tns:ResponseResultReceived" />
+  <xs:complexType name="ResponsePlugin">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" minOccurs="0" name="Plugins" nillable="true" type="q2:ArrayOfCachedHivePluginInfoDto" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponsePlugin" nillable="true" type="tns:ResponsePlugin" />
+  <xs:complexType name="ResponseCalendar">
+    <xs:complexContent mixed="false">
+      <xs:extension base="tns:Response">
+        <xs:sequence>
+          <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="Appointments" nillable="true" type="q3:ArrayOfAppointmentDto" />
+          <xs:element minOccurs="0" name="ForceFetch" type="xs:boolean" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="ResponseCalendar" nillable="true" type="tns:ResponseCalendar" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure.xsd	(revision 4073)
@@ -0,0 +1,21 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+  <xs:complexType name="ArrayOfCachedHivePluginInfo">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfCachedHivePluginInfo" nillable="true" type="tns:ArrayOfCachedHivePluginInfo" />
+  <xs:complexType name="CachedHivePluginInfo">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" base="q1:HivePluginInfo">
+        <xs:sequence>
+          <xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="PluginFiles" nillable="true" type="q2:ArrayOfbase64Binary" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure1.xsd	(revision 4073)
@@ -0,0 +1,21 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+  <xs:complexType name="ArrayOfCachedHivePluginInfo">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfCachedHivePluginInfo" nillable="true" type="tns:ArrayOfCachedHivePluginInfo" />
+  <xs:complexType name="CachedHivePluginInfo">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" base="q1:HivePluginInfo">
+        <xs:sequence>
+          <xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="PluginFiles" nillable="true" type="q2:ArrayOfbase64Binary" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure11.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure11.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure11.xsd	(revision 4073)
@@ -0,0 +1,21 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+  <xs:complexType name="ArrayOfCachedHivePluginInfo">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfCachedHivePluginInfo" nillable="true" type="tns:ArrayOfCachedHivePluginInfo" />
+  <xs:complexType name="CachedHivePluginInfo">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" base="q1:HivePluginInfo">
+        <xs:sequence>
+          <xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="PluginFiles" nillable="true" type="q2:ArrayOfbase64Binary" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure2.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure2.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/HeuristicLab.PluginInfrastructure2.xsd	(revision 4073)
@@ -0,0 +1,21 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+  <xs:complexType name="ArrayOfCachedHivePluginInfoDto">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="CachedHivePluginInfoDto" nillable="true" type="tns:CachedHivePluginInfoDto" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfCachedHivePluginInfoDto" nillable="true" type="tns:ArrayOfCachedHivePluginInfoDto" />
+  <xs:complexType name="CachedHivePluginInfoDto">
+    <xs:complexContent mixed="false">
+      <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" base="q1:HivePluginInfoDto">
+        <xs:sequence>
+          <xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="PluginFiles" nillable="true" type="q2:ArrayOfbase64Binary" />
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="CachedHivePluginInfoDto" nillable="true" type="tns:CachedHivePluginInfoDto" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Message.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Message.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Message.xsd	(revision 4073)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/Message" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/Message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:simpleType name="StreamBody">
+    <xs:restriction base="xs:base64Binary" />
+  </xs:simpleType>
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Message1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Message1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Message1.xsd	(revision 4073)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/Message" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/Message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:simpleType name="StreamBody">
+    <xs:restriction base="xs:base64Binary" />
+  </xs:simpleType>
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Reference.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Reference.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Reference.cs	(revision 4073)
@@ -0,0 +1,2487 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Client.Communication.ServerService {
+    using System.Runtime.Serialization;
+    using System;
+    
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ResourceDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Hive.Client.Communication.ServerService.ClientDto))]
+    public partial class ResourceDto : HeuristicLab.DataAccess.PersistableObject, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name {
+            get {
+                return this.NameField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.NameField, value) != true)) {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ClientDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    public partial class ClientDto : HeuristicLab.Hive.Client.Communication.ServerService.ResourceDto {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.CalendarState CalendarSyncStatusField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.ClientConfigDto ConfigField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int CpuSpeedPerCoreField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int FreeMemoryField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime LoginField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int MemoryField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int NrOfCoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int NrOfFreeCoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.State StateField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.CalendarState CalendarSyncStatus {
+            get {
+                return this.CalendarSyncStatusField;
+            }
+            set {
+                if ((this.CalendarSyncStatusField.Equals(value) != true)) {
+                    this.CalendarSyncStatusField = value;
+                    this.RaisePropertyChanged("CalendarSyncStatus");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ClientConfigDto Config {
+            get {
+                return this.ConfigField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.ConfigField, value) != true)) {
+                    this.ConfigField = value;
+                    this.RaisePropertyChanged("Config");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int CpuSpeedPerCore {
+            get {
+                return this.CpuSpeedPerCoreField;
+            }
+            set {
+                if ((this.CpuSpeedPerCoreField.Equals(value) != true)) {
+                    this.CpuSpeedPerCoreField = value;
+                    this.RaisePropertyChanged("CpuSpeedPerCore");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int FreeMemory {
+            get {
+                return this.FreeMemoryField;
+            }
+            set {
+                if ((this.FreeMemoryField.Equals(value) != true)) {
+                    this.FreeMemoryField = value;
+                    this.RaisePropertyChanged("FreeMemory");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime Login {
+            get {
+                return this.LoginField;
+            }
+            set {
+                if ((this.LoginField.Equals(value) != true)) {
+                    this.LoginField = value;
+                    this.RaisePropertyChanged("Login");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int Memory {
+            get {
+                return this.MemoryField;
+            }
+            set {
+                if ((this.MemoryField.Equals(value) != true)) {
+                    this.MemoryField = value;
+                    this.RaisePropertyChanged("Memory");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int NrOfCores {
+            get {
+                return this.NrOfCoresField;
+            }
+            set {
+                if ((this.NrOfCoresField.Equals(value) != true)) {
+                    this.NrOfCoresField = value;
+                    this.RaisePropertyChanged("NrOfCores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int NrOfFreeCores {
+            get {
+                return this.NrOfFreeCoresField;
+            }
+            set {
+                if ((this.NrOfFreeCoresField.Equals(value) != true)) {
+                    this.NrOfFreeCoresField = value;
+                    this.RaisePropertyChanged("NrOfFreeCores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.State State {
+            get {
+                return this.StateField;
+            }
+            set {
+                if ((this.StateField.Equals(value) != true)) {
+                    this.StateField = value;
+                    this.RaisePropertyChanged("State");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ClientConfigDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    public partial class ClientConfigDto : HeuristicLab.DataAccess.PersistableObject, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<int> HeartBeatIntervallField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string UpDownTimeCalendarField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<int> HeartBeatIntervall {
+            get {
+                return this.HeartBeatIntervallField;
+            }
+            set {
+                if ((this.HeartBeatIntervallField.Equals(value) != true)) {
+                    this.HeartBeatIntervallField = value;
+                    this.RaisePropertyChanged("HeartBeatIntervall");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string UpDownTimeCalendar {
+            get {
+                return this.UpDownTimeCalendarField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.UpDownTimeCalendarField, value) != true)) {
+                    this.UpDownTimeCalendarField = value;
+                    this.RaisePropertyChanged("UpDownTimeCalendar");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="CalendarState", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    public enum CalendarState : int {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Fetch = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        ForceFetch = 1,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Fetching = 2,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Fetched = 3,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        NotAllowedToFetch = 4,
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="State", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    public enum State : int {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        nullState = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        idle = 1,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        calculating = 2,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        offline = 3,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        finished = 4,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        abort = 5,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        requestSnapshot = 6,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        requestSnapshotSent = 7,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        pending = 8,
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="JobDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    public partial class JobDto : HeuristicLab.DataAccess.PersistableObject, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid[] AssignedResourceIdsField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.ClientDto ClientField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int CoresNeededField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.DateTime> DateCalculatedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.DateTime> DateCreatedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int MemoryNeededField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.JobDto ParentJobField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<double> PercentageField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] PluginsNeededField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int PriorityField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.ProjectDto ProjectField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.State StateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid UserIdField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid[] AssignedResourceIds {
+            get {
+                return this.AssignedResourceIdsField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.AssignedResourceIdsField, value) != true)) {
+                    this.AssignedResourceIdsField = value;
+                    this.RaisePropertyChanged("AssignedResourceIds");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ClientDto Client {
+            get {
+                return this.ClientField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.ClientField, value) != true)) {
+                    this.ClientField = value;
+                    this.RaisePropertyChanged("Client");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int CoresNeeded {
+            get {
+                return this.CoresNeededField;
+            }
+            set {
+                if ((this.CoresNeededField.Equals(value) != true)) {
+                    this.CoresNeededField = value;
+                    this.RaisePropertyChanged("CoresNeeded");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.DateTime> DateCalculated {
+            get {
+                return this.DateCalculatedField;
+            }
+            set {
+                if ((this.DateCalculatedField.Equals(value) != true)) {
+                    this.DateCalculatedField = value;
+                    this.RaisePropertyChanged("DateCalculated");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.DateTime> DateCreated {
+            get {
+                return this.DateCreatedField;
+            }
+            set {
+                if ((this.DateCreatedField.Equals(value) != true)) {
+                    this.DateCreatedField = value;
+                    this.RaisePropertyChanged("DateCreated");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int MemoryNeeded {
+            get {
+                return this.MemoryNeededField;
+            }
+            set {
+                if ((this.MemoryNeededField.Equals(value) != true)) {
+                    this.MemoryNeededField = value;
+                    this.RaisePropertyChanged("MemoryNeeded");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.JobDto ParentJob {
+            get {
+                return this.ParentJobField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.ParentJobField, value) != true)) {
+                    this.ParentJobField = value;
+                    this.RaisePropertyChanged("ParentJob");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<double> Percentage {
+            get {
+                return this.PercentageField;
+            }
+            set {
+                if ((this.PercentageField.Equals(value) != true)) {
+                    this.PercentageField = value;
+                    this.RaisePropertyChanged("Percentage");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] PluginsNeeded {
+            get {
+                return this.PluginsNeededField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.PluginsNeededField, value) != true)) {
+                    this.PluginsNeededField = value;
+                    this.RaisePropertyChanged("PluginsNeeded");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int Priority {
+            get {
+                return this.PriorityField;
+            }
+            set {
+                if ((this.PriorityField.Equals(value) != true)) {
+                    this.PriorityField = value;
+                    this.RaisePropertyChanged("Priority");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ProjectDto Project {
+            get {
+                return this.ProjectField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.ProjectField, value) != true)) {
+                    this.ProjectField = value;
+                    this.RaisePropertyChanged("Project");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.State State {
+            get {
+                return this.StateField;
+            }
+            set {
+                if ((this.StateField.Equals(value) != true)) {
+                    this.StateField = value;
+                    this.RaisePropertyChanged("State");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid UserId {
+            get {
+                return this.UserIdField;
+            }
+            set {
+                if ((this.UserIdField.Equals(value) != true)) {
+                    this.UserIdField = value;
+                    this.RaisePropertyChanged("UserId");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ProjectDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    public partial class ProjectDto : HeuristicLab.DataAccess.PersistableObject, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name {
+            get {
+                return this.NameField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.NameField, value) != true)) {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="HivePluginInfoDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Hive.Client.Communication.ServerService.CachedHivePluginInfoDto))]
+    public partial class HivePluginInfoDto : HeuristicLab.DataAccess.PersistableObject, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime BuildDateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string VersionField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime BuildDate {
+            get {
+                return this.BuildDateField;
+            }
+            set {
+                if ((this.BuildDateField.Equals(value) != true)) {
+                    this.BuildDateField = value;
+                    this.RaisePropertyChanged("BuildDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name {
+            get {
+                return this.NameField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.NameField, value) != true)) {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Version {
+            get {
+                return this.VersionField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.VersionField, value) != true)) {
+                    this.VersionField = value;
+                    this.RaisePropertyChanged("Version");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="CachedHivePluginInfoDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure")]
+    [System.SerializableAttribute()]
+    public partial class CachedHivePluginInfoDto : HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private byte[][] PluginFilesField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public byte[][] PluginFiles {
+            get {
+                return this.PluginFilesField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.PluginFilesField, value) != true)) {
+                    this.PluginFilesField = value;
+                    this.RaisePropertyChanged("PluginFiles");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="AppointmentDto", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    public partial class AppointmentDto : HeuristicLab.DataAccess.PersistableObject, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool AllDayEventField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime EndDateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool RecurringField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid RecurringIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ResourceIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime StartDateField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool AllDayEvent {
+            get {
+                return this.AllDayEventField;
+            }
+            set {
+                if ((this.AllDayEventField.Equals(value) != true)) {
+                    this.AllDayEventField = value;
+                    this.RaisePropertyChanged("AllDayEvent");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime EndDate {
+            get {
+                return this.EndDateField;
+            }
+            set {
+                if ((this.EndDateField.Equals(value) != true)) {
+                    this.EndDateField = value;
+                    this.RaisePropertyChanged("EndDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool Recurring {
+            get {
+                return this.RecurringField;
+            }
+            set {
+                if ((this.RecurringField.Equals(value) != true)) {
+                    this.RecurringField = value;
+                    this.RaisePropertyChanged("Recurring");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid RecurringId {
+            get {
+                return this.RecurringIdField;
+            }
+            set {
+                if ((this.RecurringIdField.Equals(value) != true)) {
+                    this.RecurringIdField = value;
+                    this.RaisePropertyChanged("RecurringId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid ResourceId {
+            get {
+                return this.ResourceIdField;
+            }
+            set {
+                if ((this.ResourceIdField.Equals(value) != true)) {
+                    this.ResourceIdField = value;
+                    this.RaisePropertyChanged("ResourceId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime StartDate {
+            get {
+                return this.StartDateField;
+            }
+            set {
+                if ((this.StartDateField.Equals(value) != true)) {
+                    this.StartDateField = value;
+                    this.RaisePropertyChanged("StartDate");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="Response", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar))]
+    public partial class Response : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string StatusMessageField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool SuccessField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string StatusMessage {
+            get {
+                return this.StatusMessageField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.StatusMessageField, value) != true)) {
+                    this.StatusMessageField = value;
+                    this.RaisePropertyChanged("StatusMessage");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool Success {
+            get {
+                return this.SuccessField;
+            }
+            set {
+                if ((this.SuccessField.Equals(value) != true)) {
+                    this.SuccessField = value;
+                    this.RaisePropertyChanged("Success");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseHB", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+    [System.SerializableAttribute()]
+    public partial class ResponseHB : HeuristicLab.Hive.Client.Communication.ServerService.Response {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.MessageContainer[] ActionRequestField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.MessageContainer[] ActionRequest {
+            get {
+                return this.ActionRequestField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.ActionRequestField, value) != true)) {
+                    this.ActionRequestField = value;
+                    this.RaisePropertyChanged("ActionRequest");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseJob", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+    [System.SerializableAttribute()]
+    public partial class ResponseJob : HeuristicLab.Hive.Client.Communication.ServerService.Response {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.JobDto JobField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.JobDto Job {
+            get {
+                return this.JobField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.JobField, value) != true)) {
+                    this.JobField = value;
+                    this.RaisePropertyChanged("Job");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseResultReceived", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+    [System.SerializableAttribute()]
+    public partial class ResponseResultReceived : HeuristicLab.Hive.Client.Communication.ServerService.Response {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid JobIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool finishedField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid JobId {
+            get {
+                return this.JobIdField;
+            }
+            set {
+                if ((this.JobIdField.Equals(value) != true)) {
+                    this.JobIdField = value;
+                    this.RaisePropertyChanged("JobId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool finished {
+            get {
+                return this.finishedField;
+            }
+            set {
+                if ((this.finishedField.Equals(value) != true)) {
+                    this.finishedField = value;
+                    this.RaisePropertyChanged("finished");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ResponsePlugin", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+    [System.SerializableAttribute()]
+    public partial class ResponsePlugin : HeuristicLab.Hive.Client.Communication.ServerService.Response {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.CachedHivePluginInfoDto[] PluginsField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.CachedHivePluginInfoDto[] Plugins {
+            get {
+                return this.PluginsField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.PluginsField, value) != true)) {
+                    this.PluginsField = value;
+                    this.RaisePropertyChanged("Plugins");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseCalendar", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+    [System.SerializableAttribute()]
+    public partial class ResponseCalendar : HeuristicLab.Hive.Client.Communication.ServerService.Response {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Communication.ServerService.AppointmentDto[] AppointmentsField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool ForceFetchField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Communication.ServerService.AppointmentDto[] Appointments {
+            get {
+                return this.AppointmentsField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.AppointmentsField, value) != true)) {
+                    this.AppointmentsField = value;
+                    this.RaisePropertyChanged("Appointments");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool ForceFetch {
+            get {
+                return this.ForceFetchField;
+            }
+            set {
+                if ((this.ForceFetchField.Equals(value) != true)) {
+                    this.ForceFetchField = value;
+                    this.RaisePropertyChanged("ForceFetch");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="MessageContainer", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+    [System.SerializableAttribute()]
+    public partial class MessageContainer : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private System.Guid JobIdk__BackingFieldField;
+        
+        private HeuristicLab.Hive.Client.Communication.ServerService.MessageContainer.MessageType Messagek__BackingFieldField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<JobId>k__BackingField", IsRequired=true)]
+        public System.Guid JobIdk__BackingField {
+            get {
+                return this.JobIdk__BackingFieldField;
+            }
+            set {
+                if ((this.JobIdk__BackingFieldField.Equals(value) != true)) {
+                    this.JobIdk__BackingFieldField = value;
+                    this.RaisePropertyChanged("JobIdk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<Message>k__BackingField", IsRequired=true)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.MessageContainer.MessageType Messagek__BackingField {
+            get {
+                return this.Messagek__BackingFieldField;
+            }
+            set {
+                if ((this.Messagek__BackingFieldField.Equals(value) != true)) {
+                    this.Messagek__BackingFieldField = value;
+                    this.RaisePropertyChanged("Messagek__BackingField");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+        
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+        [System.Runtime.Serialization.DataContractAttribute(Name="MessageContainer.MessageType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts")]
+        public enum MessageType : int {
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            FetchJob = 0,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            AbortJob = 1,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            JobAborted = 2,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            RequestSnapshot = 3,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            FinishedJob = 4,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            NoMessage = 5,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            SnapshotReady = 6,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            Shutdown = 7,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            JobFailed = 8,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            UptimeLimitDisconnect = 9,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            FetchOrForceFetchCalendar = 10,
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="HeartBeatData", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjec" +
+        "ts")]
+    [System.SerializableAttribute()]
+    public partial class HeartBeatData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ClientIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int FreeCoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int FreeMemoryField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Collections.Generic.Dictionary<System.Guid, double> JobProgressField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid ClientId {
+            get {
+                return this.ClientIdField;
+            }
+            set {
+                if ((this.ClientIdField.Equals(value) != true)) {
+                    this.ClientIdField = value;
+                    this.RaisePropertyChanged("ClientId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int FreeCores {
+            get {
+                return this.FreeCoresField;
+            }
+            set {
+                if ((this.FreeCoresField.Equals(value) != true)) {
+                    this.FreeCoresField = value;
+                    this.RaisePropertyChanged("FreeCores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int FreeMemory {
+            get {
+                return this.FreeMemoryField;
+            }
+            set {
+                if ((this.FreeMemoryField.Equals(value) != true)) {
+                    this.FreeMemoryField = value;
+                    this.RaisePropertyChanged("FreeMemory");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.Dictionary<System.Guid, double> JobProgress {
+            get {
+                return this.JobProgressField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.JobProgressField, value) != true)) {
+                    this.JobProgressField = value;
+                    this.RaisePropertyChanged("JobProgress");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ServerService.IClientFacade")]
+    public interface IClientFacade {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/Login", ReplyAction="http://tempuri.org/IClientCommunicator/LoginResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.Response Login(HeuristicLab.Hive.Client.Communication.ServerService.ClientDto clientInfo);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/Login", ReplyAction="http://tempuri.org/IClientCommunicator/LoginResponse")]
+        System.IAsyncResult BeginLogin(HeuristicLab.Hive.Client.Communication.ServerService.ClientDto clientInfo, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.Response EndLogin(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/ProcessHeartBeat", ReplyAction="http://tempuri.org/IClientCommunicator/ProcessHeartBeatResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB ProcessHeartBeat(HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData hbData);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/ProcessHeartBeat", ReplyAction="http://tempuri.org/IClientCommunicator/ProcessHeartBeatResponse")]
+        System.IAsyncResult BeginProcessHeartBeat(HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData hbData, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB EndProcessHeartBeat(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/SendJob", ReplyAction="http://tempuri.org/IClientCommunicator/SendJobResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob SendJob(System.Guid clientId);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/SendJob", ReplyAction="http://tempuri.org/IClientCommunicator/SendJobResponse")]
+        System.IAsyncResult BeginSendJob(System.Guid clientId, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob EndSendJob(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/StoreFinishedJobResult", ReplyAction="http://tempuri.org/IClientCommunicator/StoreFinishedJobResultResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived StoreFinishedJobResult(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/StoreFinishedJobResult", ReplyAction="http://tempuri.org/IClientCommunicator/StoreFinishedJobResultResponse")]
+        System.IAsyncResult BeginStoreFinishedJobResult(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndStoreFinishedJobResult(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/ProcessSnapshot", ReplyAction="http://tempuri.org/IClientCommunicator/ProcessSnapshotResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived ProcessSnapshot(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/ProcessSnapshot", ReplyAction="http://tempuri.org/IClientCommunicator/ProcessSnapshotResponse")]
+        System.IAsyncResult BeginProcessSnapshot(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndProcessSnapshot(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/Logout", ReplyAction="http://tempuri.org/IClientCommunicator/LogoutResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.Response Logout(System.Guid clientId);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/Logout", ReplyAction="http://tempuri.org/IClientCommunicator/LogoutResponse")]
+        System.IAsyncResult BeginLogout(System.Guid clientId, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.Response EndLogout(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/IsJobStillNeeded", ReplyAction="http://tempuri.org/IClientCommunicator/IsJobStillNeededResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.Response IsJobStillNeeded(System.Guid jobId);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/IsJobStillNeeded", ReplyAction="http://tempuri.org/IClientCommunicator/IsJobStillNeededResponse")]
+        System.IAsyncResult BeginIsJobStillNeeded(System.Guid jobId, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.Response EndIsJobStillNeeded(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/SendPlugins", ReplyAction="http://tempuri.org/IClientCommunicator/SendPluginsResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin SendPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/SendPlugins", ReplyAction="http://tempuri.org/IClientCommunicator/SendPluginsResponse")]
+        System.IAsyncResult BeginSendPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin EndSendPlugins(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/GetCalendar", ReplyAction="http://tempuri.org/IClientCommunicator/GetCalendarResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar GetCalendar(System.Guid clientId);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/GetCalendar", ReplyAction="http://tempuri.org/IClientCommunicator/GetCalendarResponse")]
+        System.IAsyncResult BeginGetCalendar(System.Guid clientId, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar EndGetCalendar(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/SetCalendarStatus", ReplyAction="http://tempuri.org/IClientCommunicator/SetCalendarStatusResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.Response SetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Client.Communication.ServerService.CalendarState state);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/SetCalendarStatus", ReplyAction="http://tempuri.org/IClientCommunicator/SetCalendarStatusResponse")]
+        System.IAsyncResult BeginSetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Client.Communication.ServerService.CalendarState state, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.Response EndSetCalendarStatus(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientFacade/SendStreamedJob", ReplyAction="http://tempuri.org/IClientFacade/SendStreamedJobResponse")]
+        System.IO.Stream SendStreamedJob(System.Guid clientId);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientFacade/SendStreamedJob", ReplyAction="http://tempuri.org/IClientFacade/SendStreamedJobResponse")]
+        System.IAsyncResult BeginSendStreamedJob(System.Guid clientId, System.AsyncCallback callback, object asyncState);
+        
+        System.IO.Stream EndSendStreamedJob(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientFacade/SendStreamedPlugins", ReplyAction="http://tempuri.org/IClientFacade/SendStreamedPluginsResponse")]
+        System.IO.Stream SendStreamedPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientFacade/SendStreamedPlugins", ReplyAction="http://tempuri.org/IClientFacade/SendStreamedPluginsResponse")]
+        System.IAsyncResult BeginSendStreamedPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList, System.AsyncCallback callback, object asyncState);
+        
+        System.IO.Stream EndSendStreamedPlugins(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientFacade/StoreFinishedJobResultStreamed", ReplyAction="http://tempuri.org/IClientFacade/StoreFinishedJobResultStreamedResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived StoreFinishedJobResultStreamed(System.IO.Stream stream);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientFacade/StoreFinishedJobResultStreamed", ReplyAction="http://tempuri.org/IClientFacade/StoreFinishedJobResultStreamedResponse")]
+        System.IAsyncResult BeginStoreFinishedJobResultStreamed(System.IO.Stream stream, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndStoreFinishedJobResultStreamed(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientFacade/ProcessSnapshotStreamed", ReplyAction="http://tempuri.org/IClientFacade/ProcessSnapshotStreamedResponse")]
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived ProcessSnapshotStreamed(System.IO.Stream stream);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientFacade/ProcessSnapshotStreamed", ReplyAction="http://tempuri.org/IClientFacade/ProcessSnapshotStreamedResponse")]
+        System.IAsyncResult BeginProcessSnapshotStreamed(System.IO.Stream stream, System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndProcessSnapshotStreamed(System.IAsyncResult result);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public interface IClientFacadeChannel : HeuristicLab.Hive.Client.Communication.ServerService.IClientFacade, System.ServiceModel.IClientChannel {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class LoginCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public LoginCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.Response)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class ProcessHeartBeatCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public ProcessHeartBeatCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class SendJobCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public SendJobCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class StoreFinishedJobResultCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public StoreFinishedJobResultCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class ProcessSnapshotCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public ProcessSnapshotCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class LogoutCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public LogoutCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.Response)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class IsJobStillNeededCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public IsJobStillNeededCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.Response)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class SendPluginsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public SendPluginsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class GetCalendarCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public GetCalendarCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class SetCalendarStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public SetCalendarStatusCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.Response)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class SendStreamedJobCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public SendStreamedJobCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public System.IO.Stream Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((System.IO.Stream)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class SendStreamedPluginsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public SendStreamedPluginsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public System.IO.Stream Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((System.IO.Stream)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class StoreFinishedJobResultStreamedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public StoreFinishedJobResultStreamedCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class ProcessSnapshotStreamedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public ProcessSnapshotStreamedCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class ClientFacadeClient : System.ServiceModel.ClientBase<HeuristicLab.Hive.Client.Communication.ServerService.IClientFacade>, HeuristicLab.Hive.Client.Communication.ServerService.IClientFacade {
+        
+        private BeginOperationDelegate onBeginLoginDelegate;
+        
+        private EndOperationDelegate onEndLoginDelegate;
+        
+        private System.Threading.SendOrPostCallback onLoginCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginProcessHeartBeatDelegate;
+        
+        private EndOperationDelegate onEndProcessHeartBeatDelegate;
+        
+        private System.Threading.SendOrPostCallback onProcessHeartBeatCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginSendJobDelegate;
+        
+        private EndOperationDelegate onEndSendJobDelegate;
+        
+        private System.Threading.SendOrPostCallback onSendJobCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginStoreFinishedJobResultDelegate;
+        
+        private EndOperationDelegate onEndStoreFinishedJobResultDelegate;
+        
+        private System.Threading.SendOrPostCallback onStoreFinishedJobResultCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginProcessSnapshotDelegate;
+        
+        private EndOperationDelegate onEndProcessSnapshotDelegate;
+        
+        private System.Threading.SendOrPostCallback onProcessSnapshotCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginLogoutDelegate;
+        
+        private EndOperationDelegate onEndLogoutDelegate;
+        
+        private System.Threading.SendOrPostCallback onLogoutCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginIsJobStillNeededDelegate;
+        
+        private EndOperationDelegate onEndIsJobStillNeededDelegate;
+        
+        private System.Threading.SendOrPostCallback onIsJobStillNeededCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginSendPluginsDelegate;
+        
+        private EndOperationDelegate onEndSendPluginsDelegate;
+        
+        private System.Threading.SendOrPostCallback onSendPluginsCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginGetCalendarDelegate;
+        
+        private EndOperationDelegate onEndGetCalendarDelegate;
+        
+        private System.Threading.SendOrPostCallback onGetCalendarCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginSetCalendarStatusDelegate;
+        
+        private EndOperationDelegate onEndSetCalendarStatusDelegate;
+        
+        private System.Threading.SendOrPostCallback onSetCalendarStatusCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginSendStreamedJobDelegate;
+        
+        private EndOperationDelegate onEndSendStreamedJobDelegate;
+        
+        private System.Threading.SendOrPostCallback onSendStreamedJobCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginSendStreamedPluginsDelegate;
+        
+        private EndOperationDelegate onEndSendStreamedPluginsDelegate;
+        
+        private System.Threading.SendOrPostCallback onSendStreamedPluginsCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginStoreFinishedJobResultStreamedDelegate;
+        
+        private EndOperationDelegate onEndStoreFinishedJobResultStreamedDelegate;
+        
+        private System.Threading.SendOrPostCallback onStoreFinishedJobResultStreamedCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginProcessSnapshotStreamedDelegate;
+        
+        private EndOperationDelegate onEndProcessSnapshotStreamedDelegate;
+        
+        private System.Threading.SendOrPostCallback onProcessSnapshotStreamedCompletedDelegate;
+        
+        public ClientFacadeClient() {
+        }
+        
+        public ClientFacadeClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName) {
+        }
+        
+        public ClientFacadeClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public ClientFacadeClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public ClientFacadeClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress) {
+        }
+        
+        public event System.EventHandler<LoginCompletedEventArgs> LoginCompleted;
+        
+        public event System.EventHandler<ProcessHeartBeatCompletedEventArgs> ProcessHeartBeatCompleted;
+        
+        public event System.EventHandler<SendJobCompletedEventArgs> SendJobCompleted;
+        
+        public event System.EventHandler<StoreFinishedJobResultCompletedEventArgs> StoreFinishedJobResultCompleted;
+        
+        public event System.EventHandler<ProcessSnapshotCompletedEventArgs> ProcessSnapshotCompleted;
+        
+        public event System.EventHandler<LogoutCompletedEventArgs> LogoutCompleted;
+        
+        public event System.EventHandler<IsJobStillNeededCompletedEventArgs> IsJobStillNeededCompleted;
+        
+        public event System.EventHandler<SendPluginsCompletedEventArgs> SendPluginsCompleted;
+        
+        public event System.EventHandler<GetCalendarCompletedEventArgs> GetCalendarCompleted;
+        
+        public event System.EventHandler<SetCalendarStatusCompletedEventArgs> SetCalendarStatusCompleted;
+        
+        public event System.EventHandler<SendStreamedJobCompletedEventArgs> SendStreamedJobCompleted;
+        
+        public event System.EventHandler<SendStreamedPluginsCompletedEventArgs> SendStreamedPluginsCompleted;
+        
+        public event System.EventHandler<StoreFinishedJobResultStreamedCompletedEventArgs> StoreFinishedJobResultStreamedCompleted;
+        
+        public event System.EventHandler<ProcessSnapshotStreamedCompletedEventArgs> ProcessSnapshotStreamedCompleted;
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response Login(HeuristicLab.Hive.Client.Communication.ServerService.ClientDto clientInfo) {
+            return base.Channel.Login(clientInfo);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginLogin(HeuristicLab.Hive.Client.Communication.ServerService.ClientDto clientInfo, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginLogin(clientInfo, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response EndLogin(System.IAsyncResult result) {
+            return base.Channel.EndLogin(result);
+        }
+        
+        private System.IAsyncResult OnBeginLogin(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ClientDto clientInfo = ((HeuristicLab.Hive.Client.Communication.ServerService.ClientDto)(inValues[0]));
+            return this.BeginLogin(clientInfo, callback, asyncState);
+        }
+        
+        private object[] OnEndLogin(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.Response retVal = this.EndLogin(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnLoginCompleted(object state) {
+            if ((this.LoginCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.LoginCompleted(this, new LoginCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void LoginAsync(HeuristicLab.Hive.Client.Communication.ServerService.ClientDto clientInfo) {
+            this.LoginAsync(clientInfo, null);
+        }
+        
+        public void LoginAsync(HeuristicLab.Hive.Client.Communication.ServerService.ClientDto clientInfo, object userState) {
+            if ((this.onBeginLoginDelegate == null)) {
+                this.onBeginLoginDelegate = new BeginOperationDelegate(this.OnBeginLogin);
+            }
+            if ((this.onEndLoginDelegate == null)) {
+                this.onEndLoginDelegate = new EndOperationDelegate(this.OnEndLogin);
+            }
+            if ((this.onLoginCompletedDelegate == null)) {
+                this.onLoginCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLoginCompleted);
+            }
+            base.InvokeAsync(this.onBeginLoginDelegate, new object[] {
+                        clientInfo}, this.onEndLoginDelegate, this.onLoginCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB ProcessHeartBeat(HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData hbData) {
+            return base.Channel.ProcessHeartBeat(hbData);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginProcessHeartBeat(HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData hbData, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginProcessHeartBeat(hbData, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB EndProcessHeartBeat(System.IAsyncResult result) {
+            return base.Channel.EndProcessHeartBeat(result);
+        }
+        
+        private System.IAsyncResult OnBeginProcessHeartBeat(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData hbData = ((HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData)(inValues[0]));
+            return this.BeginProcessHeartBeat(hbData, callback, asyncState);
+        }
+        
+        private object[] OnEndProcessHeartBeat(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponseHB retVal = this.EndProcessHeartBeat(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnProcessHeartBeatCompleted(object state) {
+            if ((this.ProcessHeartBeatCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.ProcessHeartBeatCompleted(this, new ProcessHeartBeatCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void ProcessHeartBeatAsync(HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData hbData) {
+            this.ProcessHeartBeatAsync(hbData, null);
+        }
+        
+        public void ProcessHeartBeatAsync(HeuristicLab.Hive.Client.Communication.ServerService.HeartBeatData hbData, object userState) {
+            if ((this.onBeginProcessHeartBeatDelegate == null)) {
+                this.onBeginProcessHeartBeatDelegate = new BeginOperationDelegate(this.OnBeginProcessHeartBeat);
+            }
+            if ((this.onEndProcessHeartBeatDelegate == null)) {
+                this.onEndProcessHeartBeatDelegate = new EndOperationDelegate(this.OnEndProcessHeartBeat);
+            }
+            if ((this.onProcessHeartBeatCompletedDelegate == null)) {
+                this.onProcessHeartBeatCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnProcessHeartBeatCompleted);
+            }
+            base.InvokeAsync(this.onBeginProcessHeartBeatDelegate, new object[] {
+                        hbData}, this.onEndProcessHeartBeatDelegate, this.onProcessHeartBeatCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob SendJob(System.Guid clientId) {
+            return base.Channel.SendJob(clientId);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginSendJob(System.Guid clientId, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginSendJob(clientId, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob EndSendJob(System.IAsyncResult result) {
+            return base.Channel.EndSendJob(result);
+        }
+        
+        private System.IAsyncResult OnBeginSendJob(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid clientId = ((System.Guid)(inValues[0]));
+            return this.BeginSendJob(clientId, callback, asyncState);
+        }
+        
+        private object[] OnEndSendJob(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponseJob retVal = this.EndSendJob(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnSendJobCompleted(object state) {
+            if ((this.SendJobCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.SendJobCompleted(this, new SendJobCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void SendJobAsync(System.Guid clientId) {
+            this.SendJobAsync(clientId, null);
+        }
+        
+        public void SendJobAsync(System.Guid clientId, object userState) {
+            if ((this.onBeginSendJobDelegate == null)) {
+                this.onBeginSendJobDelegate = new BeginOperationDelegate(this.OnBeginSendJob);
+            }
+            if ((this.onEndSendJobDelegate == null)) {
+                this.onEndSendJobDelegate = new EndOperationDelegate(this.OnEndSendJob);
+            }
+            if ((this.onSendJobCompletedDelegate == null)) {
+                this.onSendJobCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSendJobCompleted);
+            }
+            base.InvokeAsync(this.onBeginSendJobDelegate, new object[] {
+                        clientId}, this.onEndSendJobDelegate, this.onSendJobCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived StoreFinishedJobResult(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception) {
+            return base.Channel.StoreFinishedJobResult(clientId, jobId, result, percentage, exception);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginStoreFinishedJobResult(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginStoreFinishedJobResult(clientId, jobId, result, percentage, exception, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndStoreFinishedJobResult(System.IAsyncResult result) {
+            return base.Channel.EndStoreFinishedJobResult(result);
+        }
+        
+        private System.IAsyncResult OnBeginStoreFinishedJobResult(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid clientId = ((System.Guid)(inValues[0]));
+            System.Guid jobId = ((System.Guid)(inValues[1]));
+            byte[] result = ((byte[])(inValues[2]));
+            double percentage = ((double)(inValues[3]));
+            System.Exception exception = ((System.Exception)(inValues[4]));
+            return this.BeginStoreFinishedJobResult(clientId, jobId, result, percentage, exception, callback, asyncState);
+        }
+        
+        private object[] OnEndStoreFinishedJobResult(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived retVal = this.EndStoreFinishedJobResult(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnStoreFinishedJobResultCompleted(object state) {
+            if ((this.StoreFinishedJobResultCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.StoreFinishedJobResultCompleted(this, new StoreFinishedJobResultCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void StoreFinishedJobResultAsync(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception) {
+            this.StoreFinishedJobResultAsync(clientId, jobId, result, percentage, exception, null);
+        }
+        
+        public void StoreFinishedJobResultAsync(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception, object userState) {
+            if ((this.onBeginStoreFinishedJobResultDelegate == null)) {
+                this.onBeginStoreFinishedJobResultDelegate = new BeginOperationDelegate(this.OnBeginStoreFinishedJobResult);
+            }
+            if ((this.onEndStoreFinishedJobResultDelegate == null)) {
+                this.onEndStoreFinishedJobResultDelegate = new EndOperationDelegate(this.OnEndStoreFinishedJobResult);
+            }
+            if ((this.onStoreFinishedJobResultCompletedDelegate == null)) {
+                this.onStoreFinishedJobResultCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnStoreFinishedJobResultCompleted);
+            }
+            base.InvokeAsync(this.onBeginStoreFinishedJobResultDelegate, new object[] {
+                        clientId,
+                        jobId,
+                        result,
+                        percentage,
+                        exception}, this.onEndStoreFinishedJobResultDelegate, this.onStoreFinishedJobResultCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived ProcessSnapshot(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception) {
+            return base.Channel.ProcessSnapshot(clientId, jobId, result, percentage, exception);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginProcessSnapshot(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginProcessSnapshot(clientId, jobId, result, percentage, exception, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndProcessSnapshot(System.IAsyncResult result) {
+            return base.Channel.EndProcessSnapshot(result);
+        }
+        
+        private System.IAsyncResult OnBeginProcessSnapshot(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid clientId = ((System.Guid)(inValues[0]));
+            System.Guid jobId = ((System.Guid)(inValues[1]));
+            byte[] result = ((byte[])(inValues[2]));
+            double percentage = ((double)(inValues[3]));
+            System.Exception exception = ((System.Exception)(inValues[4]));
+            return this.BeginProcessSnapshot(clientId, jobId, result, percentage, exception, callback, asyncState);
+        }
+        
+        private object[] OnEndProcessSnapshot(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived retVal = this.EndProcessSnapshot(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnProcessSnapshotCompleted(object state) {
+            if ((this.ProcessSnapshotCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.ProcessSnapshotCompleted(this, new ProcessSnapshotCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void ProcessSnapshotAsync(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception) {
+            this.ProcessSnapshotAsync(clientId, jobId, result, percentage, exception, null);
+        }
+        
+        public void ProcessSnapshotAsync(System.Guid clientId, System.Guid jobId, byte[] result, double percentage, System.Exception exception, object userState) {
+            if ((this.onBeginProcessSnapshotDelegate == null)) {
+                this.onBeginProcessSnapshotDelegate = new BeginOperationDelegate(this.OnBeginProcessSnapshot);
+            }
+            if ((this.onEndProcessSnapshotDelegate == null)) {
+                this.onEndProcessSnapshotDelegate = new EndOperationDelegate(this.OnEndProcessSnapshot);
+            }
+            if ((this.onProcessSnapshotCompletedDelegate == null)) {
+                this.onProcessSnapshotCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnProcessSnapshotCompleted);
+            }
+            base.InvokeAsync(this.onBeginProcessSnapshotDelegate, new object[] {
+                        clientId,
+                        jobId,
+                        result,
+                        percentage,
+                        exception}, this.onEndProcessSnapshotDelegate, this.onProcessSnapshotCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response Logout(System.Guid clientId) {
+            return base.Channel.Logout(clientId);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginLogout(System.Guid clientId, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginLogout(clientId, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response EndLogout(System.IAsyncResult result) {
+            return base.Channel.EndLogout(result);
+        }
+        
+        private System.IAsyncResult OnBeginLogout(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid clientId = ((System.Guid)(inValues[0]));
+            return this.BeginLogout(clientId, callback, asyncState);
+        }
+        
+        private object[] OnEndLogout(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.Response retVal = this.EndLogout(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnLogoutCompleted(object state) {
+            if ((this.LogoutCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.LogoutCompleted(this, new LogoutCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void LogoutAsync(System.Guid clientId) {
+            this.LogoutAsync(clientId, null);
+        }
+        
+        public void LogoutAsync(System.Guid clientId, object userState) {
+            if ((this.onBeginLogoutDelegate == null)) {
+                this.onBeginLogoutDelegate = new BeginOperationDelegate(this.OnBeginLogout);
+            }
+            if ((this.onEndLogoutDelegate == null)) {
+                this.onEndLogoutDelegate = new EndOperationDelegate(this.OnEndLogout);
+            }
+            if ((this.onLogoutCompletedDelegate == null)) {
+                this.onLogoutCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnLogoutCompleted);
+            }
+            base.InvokeAsync(this.onBeginLogoutDelegate, new object[] {
+                        clientId}, this.onEndLogoutDelegate, this.onLogoutCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response IsJobStillNeeded(System.Guid jobId) {
+            return base.Channel.IsJobStillNeeded(jobId);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginIsJobStillNeeded(System.Guid jobId, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginIsJobStillNeeded(jobId, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response EndIsJobStillNeeded(System.IAsyncResult result) {
+            return base.Channel.EndIsJobStillNeeded(result);
+        }
+        
+        private System.IAsyncResult OnBeginIsJobStillNeeded(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid jobId = ((System.Guid)(inValues[0]));
+            return this.BeginIsJobStillNeeded(jobId, callback, asyncState);
+        }
+        
+        private object[] OnEndIsJobStillNeeded(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.Response retVal = this.EndIsJobStillNeeded(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnIsJobStillNeededCompleted(object state) {
+            if ((this.IsJobStillNeededCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.IsJobStillNeededCompleted(this, new IsJobStillNeededCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void IsJobStillNeededAsync(System.Guid jobId) {
+            this.IsJobStillNeededAsync(jobId, null);
+        }
+        
+        public void IsJobStillNeededAsync(System.Guid jobId, object userState) {
+            if ((this.onBeginIsJobStillNeededDelegate == null)) {
+                this.onBeginIsJobStillNeededDelegate = new BeginOperationDelegate(this.OnBeginIsJobStillNeeded);
+            }
+            if ((this.onEndIsJobStillNeededDelegate == null)) {
+                this.onEndIsJobStillNeededDelegate = new EndOperationDelegate(this.OnEndIsJobStillNeeded);
+            }
+            if ((this.onIsJobStillNeededCompletedDelegate == null)) {
+                this.onIsJobStillNeededCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnIsJobStillNeededCompleted);
+            }
+            base.InvokeAsync(this.onBeginIsJobStillNeededDelegate, new object[] {
+                        jobId}, this.onEndIsJobStillNeededDelegate, this.onIsJobStillNeededCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin SendPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList) {
+            return base.Channel.SendPlugins(pluginList);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginSendPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginSendPlugins(pluginList, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin EndSendPlugins(System.IAsyncResult result) {
+            return base.Channel.EndSendPlugins(result);
+        }
+        
+        private System.IAsyncResult OnBeginSendPlugins(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList = ((HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[])(inValues[0]));
+            return this.BeginSendPlugins(pluginList, callback, asyncState);
+        }
+        
+        private object[] OnEndSendPlugins(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponsePlugin retVal = this.EndSendPlugins(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnSendPluginsCompleted(object state) {
+            if ((this.SendPluginsCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.SendPluginsCompleted(this, new SendPluginsCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void SendPluginsAsync(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList) {
+            this.SendPluginsAsync(pluginList, null);
+        }
+        
+        public void SendPluginsAsync(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList, object userState) {
+            if ((this.onBeginSendPluginsDelegate == null)) {
+                this.onBeginSendPluginsDelegate = new BeginOperationDelegate(this.OnBeginSendPlugins);
+            }
+            if ((this.onEndSendPluginsDelegate == null)) {
+                this.onEndSendPluginsDelegate = new EndOperationDelegate(this.OnEndSendPlugins);
+            }
+            if ((this.onSendPluginsCompletedDelegate == null)) {
+                this.onSendPluginsCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSendPluginsCompleted);
+            }
+            base.InvokeAsync(this.onBeginSendPluginsDelegate, new object[] {
+                        pluginList}, this.onEndSendPluginsDelegate, this.onSendPluginsCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar GetCalendar(System.Guid clientId) {
+            return base.Channel.GetCalendar(clientId);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginGetCalendar(System.Guid clientId, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginGetCalendar(clientId, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar EndGetCalendar(System.IAsyncResult result) {
+            return base.Channel.EndGetCalendar(result);
+        }
+        
+        private System.IAsyncResult OnBeginGetCalendar(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid clientId = ((System.Guid)(inValues[0]));
+            return this.BeginGetCalendar(clientId, callback, asyncState);
+        }
+        
+        private object[] OnEndGetCalendar(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponseCalendar retVal = this.EndGetCalendar(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnGetCalendarCompleted(object state) {
+            if ((this.GetCalendarCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.GetCalendarCompleted(this, new GetCalendarCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void GetCalendarAsync(System.Guid clientId) {
+            this.GetCalendarAsync(clientId, null);
+        }
+        
+        public void GetCalendarAsync(System.Guid clientId, object userState) {
+            if ((this.onBeginGetCalendarDelegate == null)) {
+                this.onBeginGetCalendarDelegate = new BeginOperationDelegate(this.OnBeginGetCalendar);
+            }
+            if ((this.onEndGetCalendarDelegate == null)) {
+                this.onEndGetCalendarDelegate = new EndOperationDelegate(this.OnEndGetCalendar);
+            }
+            if ((this.onGetCalendarCompletedDelegate == null)) {
+                this.onGetCalendarCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetCalendarCompleted);
+            }
+            base.InvokeAsync(this.onBeginGetCalendarDelegate, new object[] {
+                        clientId}, this.onEndGetCalendarDelegate, this.onGetCalendarCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response SetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Client.Communication.ServerService.CalendarState state) {
+            return base.Channel.SetCalendarStatus(clientId, state);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginSetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Client.Communication.ServerService.CalendarState state, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginSetCalendarStatus(clientId, state, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.Response EndSetCalendarStatus(System.IAsyncResult result) {
+            return base.Channel.EndSetCalendarStatus(result);
+        }
+        
+        private System.IAsyncResult OnBeginSetCalendarStatus(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid clientId = ((System.Guid)(inValues[0]));
+            HeuristicLab.Hive.Client.Communication.ServerService.CalendarState state = ((HeuristicLab.Hive.Client.Communication.ServerService.CalendarState)(inValues[1]));
+            return this.BeginSetCalendarStatus(clientId, state, callback, asyncState);
+        }
+        
+        private object[] OnEndSetCalendarStatus(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.Response retVal = this.EndSetCalendarStatus(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnSetCalendarStatusCompleted(object state) {
+            if ((this.SetCalendarStatusCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.SetCalendarStatusCompleted(this, new SetCalendarStatusCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void SetCalendarStatusAsync(System.Guid clientId, HeuristicLab.Hive.Client.Communication.ServerService.CalendarState state) {
+            this.SetCalendarStatusAsync(clientId, state, null);
+        }
+        
+        public void SetCalendarStatusAsync(System.Guid clientId, HeuristicLab.Hive.Client.Communication.ServerService.CalendarState state, object userState) {
+            if ((this.onBeginSetCalendarStatusDelegate == null)) {
+                this.onBeginSetCalendarStatusDelegate = new BeginOperationDelegate(this.OnBeginSetCalendarStatus);
+            }
+            if ((this.onEndSetCalendarStatusDelegate == null)) {
+                this.onEndSetCalendarStatusDelegate = new EndOperationDelegate(this.OnEndSetCalendarStatus);
+            }
+            if ((this.onSetCalendarStatusCompletedDelegate == null)) {
+                this.onSetCalendarStatusCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSetCalendarStatusCompleted);
+            }
+            base.InvokeAsync(this.onBeginSetCalendarStatusDelegate, new object[] {
+                        clientId,
+                        state}, this.onEndSetCalendarStatusDelegate, this.onSetCalendarStatusCompletedDelegate, userState);
+        }
+        
+        public System.IO.Stream SendStreamedJob(System.Guid clientId) {
+            return base.Channel.SendStreamedJob(clientId);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginSendStreamedJob(System.Guid clientId, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginSendStreamedJob(clientId, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IO.Stream EndSendStreamedJob(System.IAsyncResult result) {
+            return base.Channel.EndSendStreamedJob(result);
+        }
+        
+        private System.IAsyncResult OnBeginSendStreamedJob(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.Guid clientId = ((System.Guid)(inValues[0]));
+            return this.BeginSendStreamedJob(clientId, callback, asyncState);
+        }
+        
+        private object[] OnEndSendStreamedJob(System.IAsyncResult result) {
+            System.IO.Stream retVal = this.EndSendStreamedJob(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnSendStreamedJobCompleted(object state) {
+            if ((this.SendStreamedJobCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.SendStreamedJobCompleted(this, new SendStreamedJobCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void SendStreamedJobAsync(System.Guid clientId) {
+            this.SendStreamedJobAsync(clientId, null);
+        }
+        
+        public void SendStreamedJobAsync(System.Guid clientId, object userState) {
+            if ((this.onBeginSendStreamedJobDelegate == null)) {
+                this.onBeginSendStreamedJobDelegate = new BeginOperationDelegate(this.OnBeginSendStreamedJob);
+            }
+            if ((this.onEndSendStreamedJobDelegate == null)) {
+                this.onEndSendStreamedJobDelegate = new EndOperationDelegate(this.OnEndSendStreamedJob);
+            }
+            if ((this.onSendStreamedJobCompletedDelegate == null)) {
+                this.onSendStreamedJobCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSendStreamedJobCompleted);
+            }
+            base.InvokeAsync(this.onBeginSendStreamedJobDelegate, new object[] {
+                        clientId}, this.onEndSendStreamedJobDelegate, this.onSendStreamedJobCompletedDelegate, userState);
+        }
+        
+        public System.IO.Stream SendStreamedPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList) {
+            return base.Channel.SendStreamedPlugins(pluginList);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginSendStreamedPlugins(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginSendStreamedPlugins(pluginList, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IO.Stream EndSendStreamedPlugins(System.IAsyncResult result) {
+            return base.Channel.EndSendStreamedPlugins(result);
+        }
+        
+        private System.IAsyncResult OnBeginSendStreamedPlugins(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList = ((HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[])(inValues[0]));
+            return this.BeginSendStreamedPlugins(pluginList, callback, asyncState);
+        }
+        
+        private object[] OnEndSendStreamedPlugins(System.IAsyncResult result) {
+            System.IO.Stream retVal = this.EndSendStreamedPlugins(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnSendStreamedPluginsCompleted(object state) {
+            if ((this.SendStreamedPluginsCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.SendStreamedPluginsCompleted(this, new SendStreamedPluginsCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void SendStreamedPluginsAsync(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList) {
+            this.SendStreamedPluginsAsync(pluginList, null);
+        }
+        
+        public void SendStreamedPluginsAsync(HeuristicLab.Hive.Client.Communication.ServerService.HivePluginInfoDto[] pluginList, object userState) {
+            if ((this.onBeginSendStreamedPluginsDelegate == null)) {
+                this.onBeginSendStreamedPluginsDelegate = new BeginOperationDelegate(this.OnBeginSendStreamedPlugins);
+            }
+            if ((this.onEndSendStreamedPluginsDelegate == null)) {
+                this.onEndSendStreamedPluginsDelegate = new EndOperationDelegate(this.OnEndSendStreamedPlugins);
+            }
+            if ((this.onSendStreamedPluginsCompletedDelegate == null)) {
+                this.onSendStreamedPluginsCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSendStreamedPluginsCompleted);
+            }
+            base.InvokeAsync(this.onBeginSendStreamedPluginsDelegate, new object[] {
+                        pluginList}, this.onEndSendStreamedPluginsDelegate, this.onSendStreamedPluginsCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived StoreFinishedJobResultStreamed(System.IO.Stream stream) {
+            return base.Channel.StoreFinishedJobResultStreamed(stream);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginStoreFinishedJobResultStreamed(System.IO.Stream stream, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginStoreFinishedJobResultStreamed(stream, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndStoreFinishedJobResultStreamed(System.IAsyncResult result) {
+            return base.Channel.EndStoreFinishedJobResultStreamed(result);
+        }
+        
+        private System.IAsyncResult OnBeginStoreFinishedJobResultStreamed(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.IO.Stream stream = ((System.IO.Stream)(inValues[0]));
+            return this.BeginStoreFinishedJobResultStreamed(stream, callback, asyncState);
+        }
+        
+        private object[] OnEndStoreFinishedJobResultStreamed(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived retVal = this.EndStoreFinishedJobResultStreamed(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnStoreFinishedJobResultStreamedCompleted(object state) {
+            if ((this.StoreFinishedJobResultStreamedCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.StoreFinishedJobResultStreamedCompleted(this, new StoreFinishedJobResultStreamedCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void StoreFinishedJobResultStreamedAsync(System.IO.Stream stream) {
+            this.StoreFinishedJobResultStreamedAsync(stream, null);
+        }
+        
+        public void StoreFinishedJobResultStreamedAsync(System.IO.Stream stream, object userState) {
+            if ((this.onBeginStoreFinishedJobResultStreamedDelegate == null)) {
+                this.onBeginStoreFinishedJobResultStreamedDelegate = new BeginOperationDelegate(this.OnBeginStoreFinishedJobResultStreamed);
+            }
+            if ((this.onEndStoreFinishedJobResultStreamedDelegate == null)) {
+                this.onEndStoreFinishedJobResultStreamedDelegate = new EndOperationDelegate(this.OnEndStoreFinishedJobResultStreamed);
+            }
+            if ((this.onStoreFinishedJobResultStreamedCompletedDelegate == null)) {
+                this.onStoreFinishedJobResultStreamedCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnStoreFinishedJobResultStreamedCompleted);
+            }
+            base.InvokeAsync(this.onBeginStoreFinishedJobResultStreamedDelegate, new object[] {
+                        stream}, this.onEndStoreFinishedJobResultStreamedDelegate, this.onStoreFinishedJobResultStreamedCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived ProcessSnapshotStreamed(System.IO.Stream stream) {
+            return base.Channel.ProcessSnapshotStreamed(stream);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginProcessSnapshotStreamed(System.IO.Stream stream, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginProcessSnapshotStreamed(stream, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived EndProcessSnapshotStreamed(System.IAsyncResult result) {
+            return base.Channel.EndProcessSnapshotStreamed(result);
+        }
+        
+        private System.IAsyncResult OnBeginProcessSnapshotStreamed(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            System.IO.Stream stream = ((System.IO.Stream)(inValues[0]));
+            return this.BeginProcessSnapshotStreamed(stream, callback, asyncState);
+        }
+        
+        private object[] OnEndProcessSnapshotStreamed(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Communication.ServerService.ResponseResultReceived retVal = this.EndProcessSnapshotStreamed(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnProcessSnapshotStreamedCompleted(object state) {
+            if ((this.ProcessSnapshotStreamedCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.ProcessSnapshotStreamedCompleted(this, new ProcessSnapshotStreamedCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void ProcessSnapshotStreamedAsync(System.IO.Stream stream) {
+            this.ProcessSnapshotStreamedAsync(stream, null);
+        }
+        
+        public void ProcessSnapshotStreamedAsync(System.IO.Stream stream, object userState) {
+            if ((this.onBeginProcessSnapshotStreamedDelegate == null)) {
+                this.onBeginProcessSnapshotStreamedDelegate = new BeginOperationDelegate(this.OnBeginProcessSnapshotStreamed);
+            }
+            if ((this.onEndProcessSnapshotStreamedDelegate == null)) {
+                this.onEndProcessSnapshotStreamedDelegate = new EndOperationDelegate(this.OnEndProcessSnapshotStreamed);
+            }
+            if ((this.onProcessSnapshotStreamedCompletedDelegate == null)) {
+                this.onProcessSnapshotStreamedCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnProcessSnapshotStreamedCompleted);
+            }
+            base.InvokeAsync(this.onBeginProcessSnapshotStreamedDelegate, new object[] {
+                        stream}, this.onEndProcessSnapshotStreamedDelegate, this.onProcessSnapshotStreamedCompletedDelegate, userState);
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Reference.svcmap
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Reference.svcmap	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/Reference.svcmap	(revision 4073)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="3fe193d1-38a2-4be6-ae78-516031e30e9f" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
+  <ClientOptions>
+    <GenerateAsynchronousMethods>true</GenerateAsynchronousMethods>
+    <EnableDataBinding>true</EnableDataBinding>
+    <ExcludedTypes />
+    <ImportXmlTypes>false</ImportXmlTypes>
+    <GenerateInternalTypes>false</GenerateInternalTypes>
+    <GenerateMessageContracts>false</GenerateMessageContracts>
+    <NamespaceMappings />
+    <CollectionMappings />
+    <GenerateSerializableTypes>true</GenerateSerializableTypes>
+    <Serializer>Auto</Serializer>
+    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
+    <ReferencedAssemblies />
+    <ReferencedDataContractTypes />
+    <ServiceContractMappings />
+  </ClientOptions>
+  <MetadataSources>
+    <MetadataSource Address="net.tcp://10.0.0.52:9000/HiveServer/mex" Protocol="mex" SourceId="1" />
+  </MetadataSources>
+  <Metadata>
+    <MetadataFile FileName="service1.wsdl" MetadataType="Wsdl" ID="43f7abbb-1069-4460-b195-ca2cfad87502" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="service2.xsd" MetadataType="Schema" ID="09a3b5fd-0200-4134-8cb5-ff0716494b94" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="service3.xsd" MetadataType="Schema" ID="18c6d1c6-fb6b-4748-9cfb-e28ad6f1f524" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="HeuristicLab.Hive.Contracts.BusinessObjects1.xsd" MetadataType="Schema" ID="f18d1d1a-53c9-43d9-8667-1e3d3c309a26" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="HeuristicLab.DataAccess1.xsd" MetadataType="Schema" ID="8e533766-2123-4ac5-8c82-b952d5fb6f93" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="HeuristicLab.Hive.Contracts1.xsd" MetadataType="Schema" ID="a9f321b3-f525-4e81-8c9a-45f99e4add67" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="Arrays1.xsd" MetadataType="Schema" ID="bf61ad21-e8ff-49de-984d-bc1d09a4b367" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="System1.xsd" MetadataType="Schema" ID="49213872-cd85-42dc-a191-d1db4c0681e6" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="HeuristicLab.PluginInfrastructure2.xsd" MetadataType="Schema" ID="dd25c7c9-6881-4201-927d-11dada59c94e" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+    <MetadataFile FileName="Message1.xsd" MetadataType="Schema" ID="e6a864c6-eb46-42ab-a431-2ac11273fb64" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
+  </Metadata>
+  <Extensions>
+    <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
+    <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
+  </Extensions>
+</ReferenceGroup>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/System.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/System.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/System.xsd	(revision 4073)
@@ -0,0 +1,11 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/System" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/System" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="Exception">
+    <xs:sequence>
+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##local" processContents="skip" />
+    </xs:sequence>
+    <xs:attribute ref="ser:FactoryType" />
+  </xs:complexType>
+  <xs:element name="Exception" nillable="true" type="tns:Exception" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/System1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/System1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/System1.xsd	(revision 4073)
@@ -0,0 +1,11 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/System" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/System" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="Exception">
+    <xs:sequence>
+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##local" processContents="skip" />
+    </xs:sequence>
+    <xs:attribute ref="ser:FactoryType" />
+  </xs:complexType>
+  <xs:element name="Exception" nillable="true" type="tns:Exception" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/configuration.svcinfo
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/configuration.svcinfo	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/configuration.svcinfo	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
+  <behaviors />
+  <bindings>
+    <binding digest="System.ServiceModel.Configuration.NetTcpBindingElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; listenBacklog=&quot;10&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetTcpBinding_IClientFacade&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Streamed&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;reliableSession enabled=&quot;false&quot; inactivityTimeout=&quot;00:10:00&quot; ordered=&quot;true&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message clientCredentialType=&quot;Windows&quot; /&gt;&lt;transport clientCredentialType=&quot;Windows&quot; protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netTcpBinding" name="NetTcpBinding_IClientFacade" />
+  </bindings>
+  <endpoints>
+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientFacade&quot; contract=&quot;ServerService.IClientFacade&quot; name=&quot;NetTcpBinding_IClientFacade&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientFacade&quot; contract=&quot;ServerService.IClientFacade&quot; name=&quot;NetTcpBinding_IClientFacade&quot; /&gt;" contractName="ServerService.IClientFacade" name="NetTcpBinding_IClientFacade" />
+  </endpoints>
+</configurationSnapshot>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/configuration91.svcinfo
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/configuration91.svcinfo	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/configuration91.svcinfo	(revision 4073)
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="vFreNGGBW9Tx4nl3MVFjfcaMtKU=">
+  <bindingConfigurations>
+    <bindingConfiguration bindingType="netTcpBinding" name="NetTcpBinding_IClientFacade">
+      <properties>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientFacade</serializedValue>
+        </property>
+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/transactionFlow" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Streamed</serializedValue>
+        </property>
+        <property path="/transactionProtocol" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransactionProtocol, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.OleTransactionsProtocol</serializedValue>
+        </property>
+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>StrongWildcard</serializedValue>
+        </property>
+        <property path="/listenBacklog" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>10</serializedValue>
+        </property>
+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>524288</serializedValue>
+        </property>
+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/maxConnections" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>10</serializedValue>
+        </property>
+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/portSharingEnabled" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>32</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>8192</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>4096</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/reliableSession" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement</serializedValue>
+        </property>
+        <property path="/reliableSession/ordered" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>True</serializedValue>
+        </property>
+        <property path="/reliableSession/inactivityTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/reliableSession/enabled" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.NetTcpSecurityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.NetTcpSecurityElement</serializedValue>
+        </property>
+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.SecurityMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>None</serializedValue>
+        </property>
+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.TcpTransportSecurityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.TcpTransportSecurityElement</serializedValue>
+        </property>
+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TcpClientCredentialType, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Windows</serializedValue>
+        </property>
+        <property path="/security/transport/protectionLevel" isComplexType="false" isExplicitlyDefined="true" clrType="System.Net.Security.ProtectionLevel, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>EncryptAndSign</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Never</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>TransportSelected</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>(Collection)</serializedValue>
+        </property>
+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.MessageSecurityOverTcpElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.MessageSecurityOverTcpElement</serializedValue>
+        </property>
+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.MessageCredentialType, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Windows</serializedValue>
+        </property>
+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Basic256</serializedValue>
+        </property>
+      </properties>
+    </bindingConfiguration>
+  </bindingConfigurations>
+  <endpoints>
+    <endpoint name="NetTcpBinding_IClientFacade" contract="ServerService.IClientFacade" bindingType="netTcpBinding" address="net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator" bindingConfiguration="NetTcpBinding_IClientFacade">
+      <properties>
+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator</serializedValue>
+        </property>
+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>netTcpBinding</serializedValue>
+        </property>
+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientFacade</serializedValue>
+        </property>
+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>ServerService.IClientFacade</serializedValue>
+        </property>
+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+        </property>
+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>&lt;Header /&gt;</serializedValue>
+        </property>
+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+        </property>
+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+        </property>
+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+        </property>
+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>My</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>LocalMachine</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientFacade</serializedValue>
+        </property>
+      </properties>
+    </endpoint>
+  </endpoints>
+</SavedWcfConfigurationInformation>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service.wsdl
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service.wsdl	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service.wsdl	(revision 4073)
@@ -0,0 +1,158 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://tempuri.org/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="ClientCommunicator" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsp:Policy wsu:Id="NetTcpBinding_IClientCommunicator_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1">
+        </msb:BinaryEncoding>
+        <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <wsp:Policy>
+            <sp:TransportToken>
+              <wsp:Policy>
+                <msf:WindowsTransportSecurity xmlns:msf="http://schemas.microsoft.com/ws/2006/05/framing/policy">
+                  <msf:ProtectionLevel>EncryptAndSign</msf:ProtectionLevel>
+                </msf:WindowsTransportSecurity>
+              </wsp:Policy>
+            </sp:TransportToken>
+            <sp:AlgorithmSuite>
+              <wsp:Policy>
+                <sp:Basic256>
+                </sp:Basic256>
+              </wsp:Policy>
+            </sp:AlgorithmSuite>
+            <sp:Layout>
+              <wsp:Policy>
+                <sp:Strict>
+                </sp:Strict>
+              </wsp:Policy>
+            </sp:Layout>
+          </wsp:Policy>
+        </sp:TransportBinding>
+        <wsaw:UsingAddressing>
+        </wsaw:UsingAddressing>
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://tempuri.org/Imports">
+      <xsd:import namespace="http://tempuri.org/" />
+      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/System" />
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="IClientCommunicator_Login_InputMessage">
+    <wsdl:part name="parameters" element="tns:Login" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_Login_OutputMessage">
+    <wsdl:part name="parameters" element="tns:LoginResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_SendHeartBeat_InputMessage">
+    <wsdl:part name="parameters" element="tns:SendHeartBeat" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_SendHeartBeat_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SendHeartBeatResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_PullJob_InputMessage">
+    <wsdl:part name="parameters" element="tns:PullJob" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_PullJob_OutputMessage">
+    <wsdl:part name="parameters" element="tns:PullJobResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_SendJobResult_InputMessage">
+    <wsdl:part name="parameters" element="tns:SendJobResult" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_SendJobResult_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SendJobResultResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_Logout_InputMessage">
+    <wsdl:part name="parameters" element="tns:Logout" />
+  </wsdl:message>
+  <wsdl:message name="IClientCommunicator_Logout_OutputMessage">
+    <wsdl:part name="parameters" element="tns:LogoutResponse" />
+  </wsdl:message>
+  <wsdl:portType name="IClientCommunicator">
+    <wsdl:operation name="Login">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/Login" message="tns:IClientCommunicator_Login_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/LoginResponse" message="tns:IClientCommunicator_Login_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SendHeartBeat">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SendHeartBeat" message="tns:IClientCommunicator_SendHeartBeat_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SendHeartBeatResponse" message="tns:IClientCommunicator_SendHeartBeat_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="PullJob">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/PullJob" message="tns:IClientCommunicator_PullJob_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/PullJobResponse" message="tns:IClientCommunicator_PullJob_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SendJobResult">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SendJobResult" message="tns:IClientCommunicator_SendJobResult_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SendJobResultResponse" message="tns:IClientCommunicator_SendJobResult_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="Logout">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/Logout" message="tns:IClientCommunicator_Logout_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/LogoutResponse" message="tns:IClientCommunicator_Logout_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="NetTcpBinding_IClientCommunicator" type="tns:IClientCommunicator">
+    <wsp:PolicyReference URI="#NetTcpBinding_IClientCommunicator_policy">
+    </wsp:PolicyReference>
+    <soap12:binding transport="http://schemas.microsoft.com/soap/tcp" />
+    <wsdl:operation name="Login">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/Login" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendHeartBeat">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/SendHeartBeat" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="PullJob">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/PullJob" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendJobResult">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/SendJobResult" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="Logout">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/Logout" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="ClientCommunicator">
+    <wsdl:port name="NetTcpBinding_IClientCommunicator" binding="tns:NetTcpBinding_IClientCommunicator">
+      <soap12:address location="net.tcp://10.0.0.64:9000/HiveServer/ClientCommunicator" />
+      <wsa10:EndpointReference>
+        <wsa10:Address>net.tcp://10.0.0.64:9000/HiveServer/ClientCommunicator</wsa10:Address>
+        <Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
+          <Upn>sem-PC\sem</Upn>
+        </Identity>
+      </wsa10:EndpointReference>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service.xsd	(revision 4073)
@@ -0,0 +1,77 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" />
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:element name="Login">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="clientInfo" nillable="true" type="q1:ClientInfo" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LoginResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="LoginResult" nillable="true" type="q2:Response" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendHeartBeat">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="hbData" nillable="true" type="q3:HeartBeatData" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendHeartBeatResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q4="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SendHeartBeatResult" nillable="true" type="q4:ResponseHB" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="PullJob">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q5="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q5:guid" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="PullJobResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q6="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="PullJobResult" nillable="true" type="q6:ResponseJob" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendJobResult">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q7="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="Result" nillable="true" type="q7:JobResult" />
+        <xs:element minOccurs="0" name="finished" type="xs:boolean" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendJobResultResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q8="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SendJobResultResult" nillable="true" type="q8:ResponseResultReceived" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Logout">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q9="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q9:guid" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LogoutResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q10="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="LogoutResult" nillable="true" type="q10:Response" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service1.wsdl
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service1.wsdl	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service1.wsdl	(revision 4073)
@@ -0,0 +1,309 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://tempuri.org/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="clientFacade" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsp:Policy wsu:Id="NetTcpBinding_IClientFacade_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1">
+        </msb:BinaryEncoding>
+        <msf:Streamed xmlns:msf="http://schemas.microsoft.com/ws/2006/05/framing/policy">
+        </msf:Streamed>
+        <wsaw:UsingAddressing>
+        </wsaw:UsingAddressing>
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://tempuri.org/Imports">
+      <xsd:import namespace="http://tempuri.org/" />
+      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" />
+      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/System" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" />
+      <xsd:import namespace="http://schemas.microsoft.com/Message" />
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="IClientFacade_Login_InputMessage">
+    <wsdl:part name="parameters" element="tns:Login" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_Login_OutputMessage">
+    <wsdl:part name="parameters" element="tns:LoginResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_ProcessHeartBeat_InputMessage">
+    <wsdl:part name="parameters" element="tns:ProcessHeartBeat" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_ProcessHeartBeat_OutputMessage">
+    <wsdl:part name="parameters" element="tns:ProcessHeartBeatResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendJob_InputMessage">
+    <wsdl:part name="parameters" element="tns:SendJob" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendJob_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SendJobResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_StoreFinishedJobResult_InputMessage">
+    <wsdl:part name="parameters" element="tns:StoreFinishedJobResult" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_StoreFinishedJobResult_OutputMessage">
+    <wsdl:part name="parameters" element="tns:StoreFinishedJobResultResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_ProcessSnapshot_InputMessage">
+    <wsdl:part name="parameters" element="tns:ProcessSnapshot" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_ProcessSnapshot_OutputMessage">
+    <wsdl:part name="parameters" element="tns:ProcessSnapshotResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_Logout_InputMessage">
+    <wsdl:part name="parameters" element="tns:Logout" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_Logout_OutputMessage">
+    <wsdl:part name="parameters" element="tns:LogoutResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_IsJobStillNeeded_InputMessage">
+    <wsdl:part name="parameters" element="tns:IsJobStillNeeded" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_IsJobStillNeeded_OutputMessage">
+    <wsdl:part name="parameters" element="tns:IsJobStillNeededResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendPlugins_InputMessage">
+    <wsdl:part name="parameters" element="tns:SendPlugins" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendPlugins_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SendPluginsResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_GetCalendar_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetCalendar" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_GetCalendar_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetCalendarResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SetCalendarStatus_InputMessage">
+    <wsdl:part name="parameters" element="tns:SetCalendarStatus" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SetCalendarStatus_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SetCalendarStatusResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendStreamedJob_InputMessage">
+    <wsdl:part name="parameters" element="tns:SendStreamedJob" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendStreamedJob_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SendStreamedJobResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendStreamedPlugins_InputMessage">
+    <wsdl:part name="parameters" element="tns:SendStreamedPlugins" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_SendStreamedPlugins_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SendStreamedPluginsResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_StoreFinishedJobResultStreamed_InputMessage">
+    <wsdl:part name="parameters" element="tns:StoreFinishedJobResultStreamed" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_StoreFinishedJobResultStreamed_OutputMessage">
+    <wsdl:part name="parameters" element="tns:StoreFinishedJobResultStreamedResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_ProcessSnapshotStreamed_InputMessage">
+    <wsdl:part name="parameters" element="tns:ProcessSnapshotStreamed" />
+  </wsdl:message>
+  <wsdl:message name="IClientFacade_ProcessSnapshotStreamed_OutputMessage">
+    <wsdl:part name="parameters" element="tns:ProcessSnapshotStreamedResponse" />
+  </wsdl:message>
+  <wsdl:portType name="IClientFacade">
+    <wsdl:operation name="Login">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/Login" message="tns:IClientFacade_Login_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/LoginResponse" message="tns:IClientFacade_Login_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="ProcessHeartBeat">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/ProcessHeartBeat" message="tns:IClientFacade_ProcessHeartBeat_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/ProcessHeartBeatResponse" message="tns:IClientFacade_ProcessHeartBeat_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SendJob">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SendJob" message="tns:IClientFacade_SendJob_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SendJobResponse" message="tns:IClientFacade_SendJob_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="StoreFinishedJobResult">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/StoreFinishedJobResult" message="tns:IClientFacade_StoreFinishedJobResult_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/StoreFinishedJobResultResponse" message="tns:IClientFacade_StoreFinishedJobResult_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="ProcessSnapshot">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/ProcessSnapshot" message="tns:IClientFacade_ProcessSnapshot_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/ProcessSnapshotResponse" message="tns:IClientFacade_ProcessSnapshot_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="Logout">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/Logout" message="tns:IClientFacade_Logout_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/LogoutResponse" message="tns:IClientFacade_Logout_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="IsJobStillNeeded">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/IsJobStillNeeded" message="tns:IClientFacade_IsJobStillNeeded_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/IsJobStillNeededResponse" message="tns:IClientFacade_IsJobStillNeeded_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SendPlugins">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SendPlugins" message="tns:IClientFacade_SendPlugins_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SendPluginsResponse" message="tns:IClientFacade_SendPlugins_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetCalendar">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/GetCalendar" message="tns:IClientFacade_GetCalendar_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/GetCalendarResponse" message="tns:IClientFacade_GetCalendar_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SetCalendarStatus">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SetCalendarStatus" message="tns:IClientFacade_SetCalendarStatus_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SetCalendarStatusResponse" message="tns:IClientFacade_SetCalendarStatus_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SendStreamedJob">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientFacade/SendStreamedJob" message="tns:IClientFacade_SendStreamedJob_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientFacade/SendStreamedJobResponse" message="tns:IClientFacade_SendStreamedJob_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SendStreamedPlugins">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientFacade/SendStreamedPlugins" message="tns:IClientFacade_SendStreamedPlugins_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientFacade/SendStreamedPluginsResponse" message="tns:IClientFacade_SendStreamedPlugins_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="StoreFinishedJobResultStreamed">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientFacade/StoreFinishedJobResultStreamed" message="tns:IClientFacade_StoreFinishedJobResultStreamed_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientFacade/StoreFinishedJobResultStreamedResponse" message="tns:IClientFacade_StoreFinishedJobResultStreamed_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="ProcessSnapshotStreamed">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientFacade/ProcessSnapshotStreamed" message="tns:IClientFacade_ProcessSnapshotStreamed_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientFacade/ProcessSnapshotStreamedResponse" message="tns:IClientFacade_ProcessSnapshotStreamed_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="NetTcpBinding_IClientFacade" type="tns:IClientFacade">
+    <wsp:PolicyReference URI="#NetTcpBinding_IClientFacade_policy">
+    </wsp:PolicyReference>
+    <soap12:binding transport="http://schemas.microsoft.com/soap/tcp" />
+    <wsdl:operation name="Login">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/Login" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ProcessHeartBeat">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/ProcessHeartBeat" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendJob">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/SendJob" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StoreFinishedJobResult">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/StoreFinishedJobResult" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ProcessSnapshot">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/ProcessSnapshot" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="Logout">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/Logout" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="IsJobStillNeeded">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/IsJobStillNeeded" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendPlugins">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/SendPlugins" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetCalendar">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/GetCalendar" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SetCalendarStatus">
+      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/SetCalendarStatus" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendStreamedJob">
+      <soap12:operation soapAction="http://tempuri.org/IClientFacade/SendStreamedJob" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendStreamedPlugins">
+      <soap12:operation soapAction="http://tempuri.org/IClientFacade/SendStreamedPlugins" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StoreFinishedJobResultStreamed">
+      <soap12:operation soapAction="http://tempuri.org/IClientFacade/StoreFinishedJobResultStreamed" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ProcessSnapshotStreamed">
+      <soap12:operation soapAction="http://tempuri.org/IClientFacade/ProcessSnapshotStreamed" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="clientFacade">
+    <wsdl:port name="NetTcpBinding_IClientFacade" binding="tns:NetTcpBinding_IClientFacade">
+      <soap12:address location="net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator" />
+      <wsa10:EndpointReference>
+        <wsa10:Address>net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator</wsa10:Address>
+      </wsa10:EndpointReference>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service1.xsd	(revision 4073)
@@ -0,0 +1,42 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="anyType" nillable="true" type="xs:anyType" />
+  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+  <xs:element name="boolean" nillable="true" type="xs:boolean" />
+  <xs:element name="byte" nillable="true" type="xs:byte" />
+  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+  <xs:element name="decimal" nillable="true" type="xs:decimal" />
+  <xs:element name="double" nillable="true" type="xs:double" />
+  <xs:element name="float" nillable="true" type="xs:float" />
+  <xs:element name="int" nillable="true" type="xs:int" />
+  <xs:element name="long" nillable="true" type="xs:long" />
+  <xs:element name="QName" nillable="true" type="xs:QName" />
+  <xs:element name="short" nillable="true" type="xs:short" />
+  <xs:element name="string" nillable="true" type="xs:string" />
+  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+  <xs:element name="char" nillable="true" type="tns:char" />
+  <xs:simpleType name="char">
+    <xs:restriction base="xs:int" />
+  </xs:simpleType>
+  <xs:element name="duration" nillable="true" type="tns:duration" />
+  <xs:simpleType name="duration">
+    <xs:restriction base="xs:duration">
+      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="guid" nillable="true" type="tns:guid" />
+  <xs:simpleType name="guid">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="FactoryType" type="xs:QName" />
+  <xs:attribute name="Id" type="xs:ID" />
+  <xs:attribute name="Ref" type="xs:IDREF" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service2.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service2.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service2.xsd	(revision 4073)
@@ -0,0 +1,213 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" />
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/System" />
+  <xs:import namespace="http://schemas.microsoft.com/Message" />
+  <xs:element name="Login">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="clientInfo" nillable="true" type="q1:ClientDto" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LoginResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="LoginResult" nillable="true" type="q2:Response" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ProcessHeartBeat">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="hbData" nillable="true" type="q3:HeartBeatData" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ProcessHeartBeatResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q4="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="ProcessHeartBeatResult" nillable="true" type="q4:ResponseHB" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendJob">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q5="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q5:guid" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendJobResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q6="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SendJobResult" nillable="true" type="q6:ResponseJob" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="StoreFinishedJobResult">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q7="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q7:guid" />
+        <xs:element xmlns:q8="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q8:guid" />
+        <xs:element minOccurs="0" name="result" nillable="true" type="xs:base64Binary" />
+        <xs:element minOccurs="0" name="percentage" type="xs:double" />
+        <xs:element xmlns:q9="http://schemas.datacontract.org/2004/07/System" minOccurs="0" name="exception" nillable="true" type="q9:Exception" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="StoreFinishedJobResultResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q10="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="StoreFinishedJobResultResult" nillable="true" type="q10:ResponseResultReceived" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ProcessSnapshot">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q11="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q11:guid" />
+        <xs:element xmlns:q12="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q12:guid" />
+        <xs:element minOccurs="0" name="result" nillable="true" type="xs:base64Binary" />
+        <xs:element minOccurs="0" name="percentage" type="xs:double" />
+        <xs:element xmlns:q13="http://schemas.datacontract.org/2004/07/System" minOccurs="0" name="exception" nillable="true" type="q13:Exception" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ProcessSnapshotResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q14="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="ProcessSnapshotResult" nillable="true" type="q14:ResponseResultReceived" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Logout">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q15="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q15:guid" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LogoutResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q16="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="LogoutResult" nillable="true" type="q16:Response" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="IsJobStillNeeded">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q17="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q17:guid" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="IsJobStillNeededResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q18="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="IsJobStillNeededResult" nillable="true" type="q18:Response" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendPlugins">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q19="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="pluginList" nillable="true" type="q19:ArrayOfHivePluginInfoDto" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendPluginsResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q20="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SendPluginsResult" nillable="true" type="q20:ResponsePlugin" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetCalendar">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q21="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q21:guid" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetCalendarResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q22="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="GetCalendarResult" nillable="true" type="q22:ResponseCalendar" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetCalendarStatus">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q23="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q23:guid" />
+        <xs:element xmlns:q24="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="state" type="q24:CalendarState" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetCalendarStatusResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q25="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SetCalendarStatusResult" nillable="true" type="q25:Response" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendStreamedJob">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q26="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q26:guid" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendStreamedJobResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q27="http://schemas.microsoft.com/Message" name="SendStreamedJobResult" type="q27:StreamBody" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendStreamedPlugins">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q28="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="pluginList" nillable="true" type="q28:ArrayOfHivePluginInfoDto" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SendStreamedPluginsResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q29="http://schemas.microsoft.com/Message" name="SendStreamedPluginsResult" type="q29:StreamBody" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="StoreFinishedJobResultStreamed">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q30="http://schemas.microsoft.com/Message" name="stream" type="q30:StreamBody" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="StoreFinishedJobResultStreamedResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q31="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="StoreFinishedJobResultStreamedResult" nillable="true" type="q31:ResponseResultReceived" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ProcessSnapshotStreamed">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q32="http://schemas.microsoft.com/Message" name="stream" type="q32:StreamBody" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ProcessSnapshotStreamedResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q33="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="ProcessSnapshotStreamedResult" nillable="true" type="q33:ResponseResultReceived" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service3.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service3.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/Service References/ServerService/service3.xsd	(revision 4073)
@@ -0,0 +1,42 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="anyType" nillable="true" type="xs:anyType" />
+  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+  <xs:element name="boolean" nillable="true" type="xs:boolean" />
+  <xs:element name="byte" nillable="true" type="xs:byte" />
+  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+  <xs:element name="decimal" nillable="true" type="xs:decimal" />
+  <xs:element name="double" nillable="true" type="xs:double" />
+  <xs:element name="float" nillable="true" type="xs:float" />
+  <xs:element name="int" nillable="true" type="xs:int" />
+  <xs:element name="long" nillable="true" type="xs:long" />
+  <xs:element name="QName" nillable="true" type="xs:QName" />
+  <xs:element name="short" nillable="true" type="xs:short" />
+  <xs:element name="string" nillable="true" type="xs:string" />
+  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+  <xs:element name="char" nillable="true" type="tns:char" />
+  <xs:simpleType name="char">
+    <xs:restriction base="xs:int" />
+  </xs:simpleType>
+  <xs:element name="duration" nillable="true" type="tns:duration" />
+  <xs:simpleType name="duration">
+    <xs:restriction base="xs:duration">
+      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="guid" nillable="true" type="tns:guid" />
+  <xs:simpleType name="guid">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="FactoryType" type="xs:QName" />
+  <xs:attribute name="Id" type="xs:ID" />
+  <xs:attribute name="Ref" type="xs:IDREF" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/WcfService.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/WcfService.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/WcfService.cs	(revision 4073)
@@ -0,0 +1,466 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Client.Common;
+using HeuristicLab.Hive.Client.Communication.ServerService;
+using HeuristicLab.PluginInfrastructure;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Client.Communication {
+  /// <summary>
+  /// WcfService class is implemented as a Singleton and works as a communication Layer with the Server
+  /// </summary>
+  public class WcfService {
+    private static WcfService instance;
+    /// <summary>
+    /// Getter for the Instance of the WcfService
+    /// </summary>
+    /// <returns>the Instance of the WcfService class</returns>
+    public static WcfService Instance {
+      get {        
+        if (instance == null) {
+          Logger.Debug("New WcfService Instance created");
+          instance = new WcfService();
+        }
+        return instance;
+      }
+    }
+
+    public DateTime ConnectedSince { get; private set; }    
+    public NetworkEnum.WcfConnState ConnState { get; private set; }
+    public string ServerIP { get; private set; }
+    public int ServerPort { get; private set; }
+
+    public event EventHandler ConnectionRestored;    
+    public event EventHandler ServerChanged;
+    public event EventHandler Connected;    
+
+    public ClientFacadeClient proxy = null;
+
+    /// <summary>
+    /// Constructor
+    /// </summary>
+    private WcfService() {
+      ConnState = NetworkEnum.WcfConnState.Disconnected;
+    }
+
+    /// <summary>
+    /// Connects with the Server, registers the events and fires the Connected (and quiet possibly the ConnectionRestored) Event.
+    /// </summary>
+    public void Connect() {
+      try {
+        Logger.Debug("Starting the Connection Process");
+        if (String.Empty.Equals(ServerIP) || ServerPort == 0) {
+          Logger.Info("No Server IP or Port set!");
+          return;
+        }
+
+        Logger.Debug("Creating the new connection proxy");
+        proxy = new ClientFacadeClient(
+          WcfSettings.GetStreamedBinding(),
+          new EndpointAddress("net.tcp://" + ServerIP + ":" + ServerPort + "/HiveServer/ClientCommunicator")
+        );
+        Logger.Debug("Created the new connection proxy");
+
+        Logger.Debug("Registring new Events");
+        proxy.LoginCompleted += new EventHandler<LoginCompletedEventArgs>(proxy_LoginCompleted);
+        proxy.SendStreamedJobCompleted += new EventHandler<SendStreamedJobCompletedEventArgs>(proxy_SendStreamedJobCompleted);
+        proxy.StoreFinishedJobResultStreamedCompleted += new EventHandler<StoreFinishedJobResultStreamedCompletedEventArgs>(proxy_StoreFinishedJobResultStreamedCompleted);
+        proxy.ProcessSnapshotStreamedCompleted += new EventHandler<ProcessSnapshotStreamedCompletedEventArgs>(proxy_ProcessSnapshotStreamedCompleted);
+        proxy.ProcessHeartBeatCompleted += new EventHandler<ProcessHeartBeatCompletedEventArgs>(proxy_ProcessHeartBeatCompleted);
+        Logger.Debug("Registered new Events");
+        Logger.Debug("Opening the Connection");
+        proxy.Open();
+        Logger.Debug("Opened the Connection");
+
+        ConnState = NetworkEnum.WcfConnState.Connected;
+        ConnectedSince = DateTime.Now;
+
+        if (Connected != null) {
+          Logger.Debug("Calling the connected Event");
+          Connected(this, new EventArgs());
+          //Todo: This won't be hit. EVER        
+        }
+        if (ConnState == NetworkEnum.WcfConnState.Failed)
+          ConnectionRestored(this, new EventArgs());        
+      }
+      catch (Exception ex) {      
+        HandleNetworkError(ex);
+      }
+    }
+
+
+    /// <summary>
+    /// Changes the Connectionsettings (serverIP & serverPort) and reconnects
+    /// </summary>
+    /// <param name="serverIP">current Server IP</param>
+    /// <param name="serverPort">current Server Port</param>
+    public void Connect(String serverIP, int serverPort) {
+      Logger.Debug("Called Connected with " + serverIP + ":" + serverPort);
+      String oldIp = this.ServerIP;
+      int oldPort = this.ServerPort;
+      this.ServerIP = serverIP;
+      this.ServerPort = serverPort;      
+      Connect();
+      if (oldIp != serverIP || oldPort != ServerPort)
+        if(ServerChanged != null) 
+          ServerChanged(this, new EventArgs());
+    }
+
+    public void SetIPAndPort(String serverIP, int serverPort) {
+      Logger.Debug("Called with " + serverIP + ":" + serverPort);
+      this.ServerIP = serverIP;
+      this.ServerPort = serverPort;
+    }
+    
+    /// <summary>
+    /// Disconnects the Client from the Server
+    /// </summary>
+    public void Disconnect() {
+      ConnState = NetworkEnum.WcfConnState.Disconnected;
+    }
+
+    /// <summary>
+    /// Network communication Error Handler - Every network error gets logged and the connection switches to faulted state
+    /// </summary>
+    /// <param name="e">The Exception</param>
+    private void HandleNetworkError(Exception e) {
+      ConnState = NetworkEnum.WcfConnState.Failed;
+      Logger.Error("Network exception occurred: " + e);
+    }
+
+    
+
+    /// <summary>
+    /// Methods for the Server Login
+    /// </summary>
+    #region Login
+    public event System.EventHandler<LoginCompletedEventArgs> LoginCompleted;
+    public void LoginAsync(ClientDto clientInfo) {
+      if (ConnState == NetworkEnum.WcfConnState.Connected) {
+        Logger.Debug("STARTED: Login Async");
+        proxy.LoginAsync(clientInfo);
+      }
+    }
+    private void proxy_LoginCompleted(object sender, LoginCompletedEventArgs e) {
+      if (e.Error == null) {
+        Logger.Debug("ENDED: Login Async");
+        LoginCompleted(sender, e);
+      } else
+        HandleNetworkError(e.Error.InnerException);
+    }
+
+    public void LoginSync(ClientDto clientInfo) {
+      try {
+        if (ConnState == NetworkEnum.WcfConnState.Connected) {
+          Logger.Debug("STARTED: Login Sync");
+          Response res = proxy.Login(clientInfo);
+          if (!res.Success) {
+            Logger.Error("FAILED: Login Failed! " + res.StatusMessage);
+            throw new Exception(res.StatusMessage);
+          } else {
+            Logger.Info("ENDED: Login succeeded" + res.StatusMessage);
+            ConnState = NetworkEnum.WcfConnState.Loggedin;            
+          }
+        }
+      }
+      catch (Exception e) {
+        HandleNetworkError(e);
+      }
+    }
+
+    #endregion
+
+    /// <summary>
+    /// Pull a Job from the Server
+    /// </summary>
+    #region PullJob
+    public event System.EventHandler<SendJobCompletedEventArgs> SendJobCompleted;
+    public void SendJobAsync(Guid guid) {
+      if (ConnState == NetworkEnum.WcfConnState.Loggedin) {
+        Logger.Debug("STARTED: Fetching of Jobs from Server for Client");
+        proxy.SendStreamedJobAsync(guid);
+      }
+    }
+
+    void proxy_SendStreamedJobCompleted(object sender, SendStreamedJobCompletedEventArgs e) {
+      if (e.Error == null) {
+        Logger.Debug("ENDED: Fetching of Jobs from Server for Client");
+        Stream stream = null;
+        MemoryStream memStream = null;
+
+        try {
+          stream = (Stream)e.Result;
+
+          //first deserialize the response
+          BinaryFormatter formatter =
+            new BinaryFormatter();
+          ResponseJob response =
+            (ResponseJob)formatter.Deserialize(stream);
+
+          //second deserialize the BLOB
+          memStream = new MemoryStream();
+
+          byte[] buffer = new byte[3024];
+          int read = 0;
+          while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) {
+            memStream.Write(buffer, 0, read);
+          }
+
+          memStream.Close();
+
+          SendJobCompletedEventArgs completedEventArgs =
+            new SendJobCompletedEventArgs(new object[] { response, memStream.GetBuffer() }, e.Error, e.Cancelled, e.UserState);
+          SendJobCompleted(sender, completedEventArgs);
+        } catch (Exception ex) {
+          Logger.Error(ex);
+        } finally {
+          if(stream != null)
+            stream.Dispose();
+
+          if (memStream != null)
+            memStream.Dispose();
+        }
+      } else
+        HandleNetworkError(e.Error);
+    }
+
+    #endregion
+
+    /// <summary>
+    /// Send back finished Job Results
+    /// </summary>
+    #region SendJobResults
+    public event System.EventHandler<StoreFinishedJobResultCompletedEventArgs> StoreFinishedJobResultCompleted;
+    public void StoreFinishedJobResultAsync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception, bool finished) {
+      if (ConnState == NetworkEnum.WcfConnState.Loggedin) {
+        Logger.Debug("STARTED: Sending back the finished job results");
+        Logger.Debug("Building stream");
+        Stream stream =
+          GetStreamedJobResult(clientId, jobId, result, percentage, exception);
+        Logger.Debug("Builded stream");
+        Logger.Debug("Making the call");
+        proxy.StoreFinishedJobResultStreamedAsync(stream, stream);
+      }
+     }
+    private void proxy_StoreFinishedJobResultStreamedCompleted(object sender, StoreFinishedJobResultStreamedCompletedEventArgs e) {
+      Logger.Debug("Finished storing the job");
+      Stream stream =
+        (Stream)e.UserState;
+      if (stream != null) {
+        Logger.Debug("Stream not null, disposing it");
+        stream.Dispose();
+      }
+      if (e.Error == null) {
+        StoreFinishedJobResultCompletedEventArgs args =
+          new StoreFinishedJobResultCompletedEventArgs(
+            new object[] { e.Result }, e.Error, e.Cancelled, e.UserState);
+        Logger.Debug("calling the Finished Job Event");
+        StoreFinishedJobResultCompleted(sender, args);
+        Logger.Debug("ENDED: Sending back the finished job results");
+      } else
+        HandleNetworkError(e.Error);
+    }
+
+    #endregion
+
+    #region Processsnapshots
+    public event System.EventHandler<ProcessSnapshotCompletedEventArgs> ProcessSnapshotCompleted;
+    public void ProcessSnapshotAsync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception, bool finished) {
+      if (ConnState == NetworkEnum.WcfConnState.Loggedin) {
+        Stream stream = GetStreamedJobResult(
+            clientId, jobId, result, percentage, exception);
+
+        proxy.ProcessSnapshotStreamedAsync(stream, stream);
+      }
+    }
+    void proxy_ProcessSnapshotStreamedCompleted(object sender, ProcessSnapshotStreamedCompletedEventArgs e) {
+      Stream stream =
+        (Stream)e.UserState;
+      if (stream != null)
+        stream.Dispose();
+      
+      if (e.Error == null) {
+        ProcessSnapshotCompletedEventArgs args =
+          new ProcessSnapshotCompletedEventArgs(
+            new object[] { e.Result }, e.Error, e.Cancelled, e.UserState);
+
+        ProcessSnapshotCompleted(sender, args);
+      } else
+        HandleNetworkError(e.Error);
+    }    
+    
+    #endregion
+                                                 
+    /// <summary>
+    /// Methods for sending the periodically Heartbeat
+    /// </summary>
+    #region Heartbeat
+
+    public event System.EventHandler<ProcessHeartBeatCompletedEventArgs> ProcessHeartBeatCompleted;
+    public void ProcessHeartBeatAsync(HeartBeatData hbd) {
+      if (ConnState == NetworkEnum.WcfConnState.Loggedin)
+        Logger.Debug("STARTING: sending heartbeat");
+        proxy.ProcessHeartBeatAsync(hbd);
+    }
+
+    private void proxy_ProcessHeartBeatCompleted(object sender, ProcessHeartBeatCompletedEventArgs e) {
+      if (e.Error == null && e.Result.Success) {
+        ProcessHeartBeatCompleted(sender, e);
+        Logger.Debug("ENDED: sending heartbeats");
+      } else {
+        try {
+          Logger.Error("Error: " + e.Result.StatusMessage);
+        }
+        catch (Exception ex) {
+          Logger.Error("Error: ", ex);
+        }
+        HandleNetworkError(e.Error);
+      }
+    }
+
+    #endregion  
+
+    /// <summary>
+    /// Send back finished and Stored Job Results
+    /// </summary>
+    private Stream GetStreamedJobResult(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception) {
+      JobResult jobResult =
+          new JobResult();
+      jobResult.ClientId = clientId;
+      jobResult.JobId = jobId;
+      jobResult.Percentage = percentage;
+      jobResult.Exception = exception;
+
+      MultiStream stream =
+              new MultiStream();
+
+      //first send result
+      stream.AddStream(
+        new StreamedObject<JobResult>(jobResult));
+
+      //second stream the job binary data
+      MemoryStream memStream =
+        new MemoryStream(result, false);
+      stream.AddStream(memStream);
+
+      return stream;
+    }
+
+    public ResponseResultReceived StoreFinishedJobResultsSync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception, bool finished) {      
+      return proxy.StoreFinishedJobResultStreamed(
+        GetStreamedJobResult(clientId, jobId, result, percentage, exception));
+    }
+
+    public Response IsJobStillNeeded(Guid jobId) {
+      try {
+        Logger.Debug("STARTING: Sync call: IsJobStillNeeded");
+        Response res = proxy.IsJobStillNeeded(jobId);
+        Logger.Debug("ENDED: Sync call: IsJobStillNeeded");
+        return res;
+      }
+      catch (Exception e) {
+        HandleNetworkError(e);
+        return null;
+      }
+      
+    }
+
+    public ResponseResultReceived ProcessSnapshotSync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception) {
+      try {        
+        return proxy.ProcessSnapshotStreamed(
+          GetStreamedJobResult(clientId, jobId, result, percentage, exception));
+      }
+      catch (Exception e) {
+        HandleNetworkError(e);
+        return null;
+      }
+    }
+
+    public List<CachedHivePluginInfoDto> RequestPlugins(List<HivePluginInfoDto> requestedPlugins) {
+      try {
+        Logger.Debug("STARTED: Requesting Plugins for Job");
+        Logger.Debug("STARTED: Getting the stream");
+        Stream stream = proxy.SendStreamedPlugins(requestedPlugins.ToArray());
+        Logger.Debug("ENDED: Getting the stream");
+        BinaryFormatter formatter =
+          new BinaryFormatter();
+        Logger.Debug("STARTED: Deserializing the stream");
+        ResponsePlugin response = (ResponsePlugin)formatter.Deserialize(stream);
+        Logger.Debug("ENDED: Deserializing the stream");
+        if (stream != null)
+          stream.Dispose();        
+        return response.Plugins;        
+      }
+      catch (Exception e) {
+        HandleNetworkError(e);
+        return null;
+      }
+    }
+
+    public void Logout(Guid guid) {
+      try {
+        Logger.Debug("STARTED: Logout");
+        proxy.Logout(guid);
+        Logger.Debug("ENDED: Logout");
+      }
+      catch (Exception e) {
+        HandleNetworkError(e);
+      }
+    }
+
+    public ResponseCalendar GetCalendarSync(Guid clientId) {
+      try {
+        Logger.Debug("STARTED: Syncing Calendars");
+        ResponseCalendar cal = proxy.GetCalendar(clientId);
+        Logger.Debug("ENDED: Syncing Calendars");
+        return cal;
+      }
+      catch (Exception e) {
+        HandleNetworkError(e);
+        return null;
+      }
+    }
+
+    public Response SetCalendarStatus (Guid clientId, CalendarState state) {
+      try {
+        Logger.Debug("STARTED: Setting Calendar status to: " + state);
+        Response resp = proxy.SetCalendarStatus(clientId, state);
+        Logger.Debug("ENDED: Setting Calendar status to: " + state);
+        return resp;
+      } catch (Exception e) {
+        HandleNetworkError(e);
+        return null;
+      }
+    }
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/app.config
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/app.config	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/app.config	(revision 4073)
@@ -0,0 +1,31 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <system.serviceModel>
+        <bindings>
+            <netTcpBinding>
+                <binding name="NetTcpBinding_IClientFacade" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    transactionFlow="false" transferMode="Streamed" transactionProtocol="OleTransactions"
+                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
+                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
+                    maxReceivedMessageSize="65536">
+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
+                        enabled="false" />
+                    <security mode="None">
+                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
+                            <extendedProtectionPolicy policyEnforcement="Never" />
+                        </transport>
+                        <message clientCredentialType="Windows" />
+                    </security>
+                </binding>
+            </netTcpBinding>
+        </bindings>
+        <client>
+            <endpoint address="net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator"
+                binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IClientFacade"
+                contract="ServerService.IClientFacade" name="NetTcpBinding_IClientFacade" />
+        </client>
+    </system.serviceModel>
+</configuration>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HeuristicLab.Hive.Client.Console-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HeuristicLab.Hive.Client.Console-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HeuristicLab.Hive.Client.Console-3.3.csproj	(revision 4073)
@@ -0,0 +1,242 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{8B14A35E-DBDF-43EB-B019-23E9FBC5A35E}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Client.Console</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Client.Console-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>TRACE;DEBUG</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>TRACE;DEBUG</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Calendar.DayView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\HeuristicLab.Hive.Contracts\3.2\Calendar.DayView.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+    <Reference Include="ZedGraph, Version=5.1.4.31904, Culture=neutral, PublicKeyToken=02a83cbd123fcd60, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>.\ZedGraph.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HiveClientConsole.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="HiveClientConsole.designer.cs">
+      <DependentUpon>HiveClientConsole.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HiveClientConsolePlugin.cs" />
+    <Compile Include="HiveClientConsoleApplication.cs" />
+    <Compile Include="LogFileReader.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="HiveClientConsole.resx">
+      <DependentUpon>HiveClientConsole.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Recurrence.resx">
+      <DependentUpon>Recurrence.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <Compile Include="Recurrence.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Recurrence.Designer.cs">
+      <DependentUpon>Recurrence.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Service References\ClientService\Reference.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.2\HeuristicLab.Hive.Contracts-3.2.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\Error.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\Info.png" />
+    <None Include="Service References\ClientService\HeuristicLab.Hive.Client.Common.xsd" />
+    <None Include="Service References\ClientService\HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd" />
+    <None Include="Service References\ClientService\service.wsdl" />
+    <None Include="Service References\ClientService\service.xsd" />
+    <None Include="Service References\ClientService\service1.xsd" />
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadata Include="Service References\" />
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadataStorage Include="Service References\ClientService\" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\ClientService\configuration91.svcinfo" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\ClientService\configuration.svcinfo" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="Service References\ClientService\HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ClientService\HeuristicLab.Hive.Client.Console.ClientService.StatusCommons.datasource">
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </None>
+    <None Include="Service References\ClientService\Reference.svcmap">
+      <Generator>WCF Proxy Generator</Generator>
+      <LastGenOutput>Reference.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\schedule.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Properties\DataSources\Calendar.Appointment.datasource" />
+    <None Include="Resources\shutdown-icon.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\Disaster-warning-48.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\Global-network-48.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\exit-48.png" />
+    <None Include="Service References\ClientService\Calendar1.xsd" />
+    <None Include="Service References\ClientService\System.Drawing1.xsd" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.Designer.cs	(revision 4073)
@@ -0,0 +1,699 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Hive.Client.Console {
+  partial class HiveClientConsole {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      Calendar.DrawTool drawTool2 = new Calendar.DrawTool();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveClientConsole));
+      this.dvOnline = new Calendar.DayView();
+      this.tcClientConsole = new System.Windows.Forms.TabControl();
+      this.tpConnection = new System.Windows.Forms.TabPage();
+      this.gbServerConnection = new System.Windows.Forms.GroupBox();
+      this.btn_clientShutdown = new System.Windows.Forms.Button();
+      this.btnDisconnect = new System.Windows.Forms.Button();
+      this.btConnect = new System.Windows.Forms.Button();
+      this.tbPort = new System.Windows.Forms.TextBox();
+      this.tbIPAdress = new System.Windows.Forms.TextBox();
+      this.lbServerIPCaption = new System.Windows.Forms.Label();
+      this.lbPortCaption = new System.Windows.Forms.Label();
+      this.gbJobCommon = new System.Windows.Forms.GroupBox();
+      this.lvJobDetail = new System.Windows.Forms.ListView();
+      this.chJobId = new System.Windows.Forms.ColumnHeader();
+      this.chSince = new System.Windows.Forms.ColumnHeader();
+      this.chProgress = new System.Windows.Forms.ColumnHeader();
+      this.gbCommon = new System.Windows.Forms.GroupBox();
+      this.pbGraph = new System.Windows.Forms.PictureBox();
+      this.lbJobsAborted = new System.Windows.Forms.Label();
+      this.lbJobdone = new System.Windows.Forms.Label();
+      this.lbJobsFetched = new System.Windows.Forms.Label();
+      this.lbGuid = new System.Windows.Forms.Label();
+      this.lbGuidCaption = new System.Windows.Forms.Label();
+      this.lbCs = new System.Windows.Forms.Label();
+      this.lbConnectionStatus = new System.Windows.Forms.Label();
+      this.lbConnectionStatusCaption = new System.Windows.Forms.Label();
+      this.lbJobsAbortedCaption = new System.Windows.Forms.Label();
+      this.lbJobdoneCaption = new System.Windows.Forms.Label();
+      this.lbJobsFetchedCaption = new System.Windows.Forms.Label();
+      this.lbCsCaption = new System.Windows.Forms.Label();
+      this.gbEventLog = new System.Windows.Forms.GroupBox();
+      this.txtLog = new System.Windows.Forms.TextBox();
+      this.tabPage2 = new System.Windows.Forms.TabPage();
+      this.btnSaveCal = new System.Windows.Forms.Button();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.txttimeTo = new System.Windows.Forms.DateTimePicker();
+      this.txttimeFrom = new System.Windows.Forms.DateTimePicker();
+      this.dtpTo = new System.Windows.Forms.DateTimePicker();
+      this.dtpFrom = new System.Windows.Forms.DateTimePicker();
+      this.chbade = new System.Windows.Forms.CheckBox();
+      this.btnRecurrence = new System.Windows.Forms.Button();
+      this.btbDelete = new System.Windows.Forms.Button();
+      this.label2 = new System.Windows.Forms.Label();
+      this.label1 = new System.Windows.Forms.Label();
+      this.btCreate = new System.Windows.Forms.Button();
+      this.mcOnline = new System.Windows.Forms.MonthCalendar();
+      this.pictureBox1 = new System.Windows.Forms.PictureBox();
+      this.ilEventLog = new System.Windows.Forms.ImageList(this.components);
+      this.btnUpdateCalender = new System.Windows.Forms.Button();
+      this.tcClientConsole.SuspendLayout();
+      this.tpConnection.SuspendLayout();
+      this.gbServerConnection.SuspendLayout();
+      this.gbJobCommon.SuspendLayout();
+      this.gbCommon.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbGraph)).BeginInit();
+      this.gbEventLog.SuspendLayout();
+      this.tabPage2.SuspendLayout();
+      this.groupBox1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // dvOnline
+      // 
+      drawTool2.DayView = this.dvOnline;
+      this.dvOnline.ActiveTool = drawTool2;
+      this.dvOnline.AmPmDisplay = false;
+      this.dvOnline.AppointmentDuration = Calendar.AppointmentSlotDuration.SixtyMinutes;
+      this.dvOnline.AppointmentHeightMode = Calendar.AppHeightDrawMode.TrueHeightAll;
+      this.dvOnline.DayHeadersHeight = 15;
+      this.dvOnline.DaysToShow = 7;
+      this.dvOnline.DrawAllAppBorder = false;
+      this.dvOnline.EnableDurationDisplay = false;
+      this.dvOnline.EnableRoundedCorners = false;
+      this.dvOnline.EnableShadows = false;
+      this.dvOnline.EnableTimeIndicator = false;
+      this.dvOnline.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+      this.dvOnline.Location = new System.Drawing.Point(9, 179);
+      this.dvOnline.MinHalfHourApp = false;
+      this.dvOnline.Name = "dvOnline";
+      this.dvOnline.SelectionEnd = new System.DateTime(((long)(0)));
+      this.dvOnline.SelectionStart = new System.DateTime(((long)(0)));
+      this.dvOnline.Size = new System.Drawing.Size(823, 225);
+      this.dvOnline.StartDate = new System.DateTime(((long)(0)));
+      this.dvOnline.TabIndex = 18;
+      this.dvOnline.OnSelectionChanged += new System.EventHandler<System.EventArgs>(this.dvOnline_OnSelectionChanged);
+      // 
+      // tcClientConsole
+      // 
+      this.tcClientConsole.Controls.Add(this.tpConnection);
+      this.tcClientConsole.Controls.Add(this.tabPage2);
+      this.tcClientConsole.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tcClientConsole.ItemSize = new System.Drawing.Size(410, 21);
+      this.tcClientConsole.Location = new System.Drawing.Point(0, 0);
+      this.tcClientConsole.Name = "tcClientConsole";
+      this.tcClientConsole.SelectedIndex = 0;
+      this.tcClientConsole.Size = new System.Drawing.Size(853, 438);
+      this.tcClientConsole.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
+      this.tcClientConsole.TabIndex = 1;
+      // 
+      // tpConnection
+      // 
+      this.tpConnection.Controls.Add(this.gbServerConnection);
+      this.tpConnection.Controls.Add(this.gbJobCommon);
+      this.tpConnection.Controls.Add(this.gbCommon);
+      this.tpConnection.Controls.Add(this.gbEventLog);
+      this.tpConnection.Location = new System.Drawing.Point(4, 25);
+      this.tpConnection.Name = "tpConnection";
+      this.tpConnection.Padding = new System.Windows.Forms.Padding(3);
+      this.tpConnection.RightToLeft = System.Windows.Forms.RightToLeft.No;
+      this.tpConnection.Size = new System.Drawing.Size(845, 409);
+      this.tpConnection.TabIndex = 0;
+      this.tpConnection.Text = "Status";
+      this.tpConnection.UseVisualStyleBackColor = true;
+      // 
+      // gbServerConnection
+      // 
+      this.gbServerConnection.Controls.Add(this.btn_clientShutdown);
+      this.gbServerConnection.Controls.Add(this.btnDisconnect);
+      this.gbServerConnection.Controls.Add(this.btConnect);
+      this.gbServerConnection.Controls.Add(this.tbPort);
+      this.gbServerConnection.Controls.Add(this.tbIPAdress);
+      this.gbServerConnection.Controls.Add(this.lbServerIPCaption);
+      this.gbServerConnection.Controls.Add(this.lbPortCaption);
+      this.gbServerConnection.Location = new System.Drawing.Point(346, 6);
+      this.gbServerConnection.Name = "gbServerConnection";
+      this.gbServerConnection.Size = new System.Drawing.Size(216, 164);
+      this.gbServerConnection.TabIndex = 15;
+      this.gbServerConnection.TabStop = false;
+      this.gbServerConnection.Text = "Connection";
+      // 
+      // btn_clientShutdown
+      // 
+      this.btn_clientShutdown.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.exit_48;
+      this.btn_clientShutdown.Location = new System.Drawing.Point(144, 101);
+      this.btn_clientShutdown.Name = "btn_clientShutdown";
+      this.btn_clientShutdown.Size = new System.Drawing.Size(57, 57);
+      this.btn_clientShutdown.TabIndex = 8;
+      this.btn_clientShutdown.UseVisualStyleBackColor = true;
+      this.btn_clientShutdown.Click += new System.EventHandler(this.btn_clientShutdown_Click);
+      // 
+      // btnDisconnect
+      // 
+      this.btnDisconnect.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.Disaster_warning_48;
+      this.btnDisconnect.Location = new System.Drawing.Point(79, 101);
+      this.btnDisconnect.Name = "btnDisconnect";
+      this.btnDisconnect.Size = new System.Drawing.Size(57, 57);
+      this.btnDisconnect.TabIndex = 5;
+      this.btnDisconnect.UseVisualStyleBackColor = true;
+      this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);
+      // 
+      // btConnect
+      // 
+      this.btConnect.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.Global_network_48;
+      this.btConnect.Location = new System.Drawing.Point(14, 101);
+      this.btConnect.Name = "btConnect";
+      this.btConnect.Size = new System.Drawing.Size(57, 57);
+      this.btConnect.TabIndex = 4;
+      this.btConnect.UseVisualStyleBackColor = true;
+      this.btConnect.Click += new System.EventHandler(this.btConnect_Click);
+      // 
+      // tbPort
+      // 
+      this.tbPort.Location = new System.Drawing.Point(74, 59);
+      this.tbPort.Name = "tbPort";
+      this.tbPort.Size = new System.Drawing.Size(65, 20);
+      this.tbPort.TabIndex = 3;
+      this.tbPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Connection_KeyPress);
+      // 
+      // tbIPAdress
+      // 
+      this.tbIPAdress.Location = new System.Drawing.Point(74, 25);
+      this.tbIPAdress.Name = "tbIPAdress";
+      this.tbIPAdress.Size = new System.Drawing.Size(93, 20);
+      this.tbIPAdress.TabIndex = 2;
+      this.tbIPAdress.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Connection_KeyPress);
+      // 
+      // lbServerIPCaption
+      // 
+      this.lbServerIPCaption.AutoSize = true;
+      this.lbServerIPCaption.Location = new System.Drawing.Point(17, 28);
+      this.lbServerIPCaption.Name = "lbServerIPCaption";
+      this.lbServerIPCaption.Size = new System.Drawing.Size(60, 13);
+      this.lbServerIPCaption.TabIndex = 0;
+      this.lbServerIPCaption.Text = "IP address:";
+      // 
+      // lbPortCaption
+      // 
+      this.lbPortCaption.AutoSize = true;
+      this.lbPortCaption.Location = new System.Drawing.Point(48, 62);
+      this.lbPortCaption.Name = "lbPortCaption";
+      this.lbPortCaption.Size = new System.Drawing.Size(29, 13);
+      this.lbPortCaption.TabIndex = 1;
+      this.lbPortCaption.Text = "Port:";
+      // 
+      // gbJobCommon
+      // 
+      this.gbJobCommon.Controls.Add(this.lvJobDetail);
+      this.gbJobCommon.Location = new System.Drawing.Point(568, 6);
+      this.gbJobCommon.Name = "gbJobCommon";
+      this.gbJobCommon.Size = new System.Drawing.Size(269, 164);
+      this.gbJobCommon.TabIndex = 13;
+      this.gbJobCommon.TabStop = false;
+      this.gbJobCommon.Text = "Jobs detail";
+      // 
+      // lvJobDetail
+      // 
+      this.lvJobDetail.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.chJobId,
+            this.chSince,
+            this.chProgress});
+      this.lvJobDetail.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lvJobDetail.FullRowSelect = true;
+      this.lvJobDetail.GridLines = true;
+      this.lvJobDetail.Location = new System.Drawing.Point(3, 16);
+      this.lvJobDetail.Name = "lvJobDetail";
+      this.lvJobDetail.Size = new System.Drawing.Size(263, 145);
+      this.lvJobDetail.TabIndex = 0;
+      this.lvJobDetail.UseCompatibleStateImageBehavior = false;
+      this.lvJobDetail.View = System.Windows.Forms.View.Details;
+      // 
+      // chJobId
+      // 
+      this.chJobId.Text = "ID";
+      // 
+      // chSince
+      // 
+      this.chSince.Text = "Since";
+      this.chSince.Width = 120;
+      // 
+      // chProgress
+      // 
+      this.chProgress.Text = "Progress";
+      // 
+      // gbCommon
+      // 
+      this.gbCommon.Controls.Add(this.pbGraph);
+      this.gbCommon.Controls.Add(this.lbJobsAborted);
+      this.gbCommon.Controls.Add(this.lbJobdone);
+      this.gbCommon.Controls.Add(this.lbJobsFetched);
+      this.gbCommon.Controls.Add(this.lbGuid);
+      this.gbCommon.Controls.Add(this.lbGuidCaption);
+      this.gbCommon.Controls.Add(this.lbCs);
+      this.gbCommon.Controls.Add(this.lbConnectionStatus);
+      this.gbCommon.Controls.Add(this.lbConnectionStatusCaption);
+      this.gbCommon.Controls.Add(this.lbJobsAbortedCaption);
+      this.gbCommon.Controls.Add(this.lbJobdoneCaption);
+      this.gbCommon.Controls.Add(this.lbJobsFetchedCaption);
+      this.gbCommon.Controls.Add(this.lbCsCaption);
+      this.gbCommon.Location = new System.Drawing.Point(8, 6);
+      this.gbCommon.Name = "gbCommon";
+      this.gbCommon.Size = new System.Drawing.Size(332, 164);
+      this.gbCommon.TabIndex = 14;
+      this.gbCommon.TabStop = false;
+      this.gbCommon.Text = "Common";
+      // 
+      // pbGraph
+      // 
+      this.pbGraph.Location = new System.Drawing.Point(211, 42);
+      this.pbGraph.Name = "pbGraph";
+      this.pbGraph.Size = new System.Drawing.Size(112, 108);
+      this.pbGraph.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+      this.pbGraph.TabIndex = 21;
+      this.pbGraph.TabStop = false;
+      // 
+      // lbJobsAborted
+      // 
+      this.lbJobsAborted.AutoSize = true;
+      this.lbJobsAborted.Location = new System.Drawing.Point(74, 137);
+      this.lbJobsAborted.Name = "lbJobsAborted";
+      this.lbJobsAborted.Size = new System.Drawing.Size(50, 13);
+      this.lbJobsAborted.TabIndex = 20;
+      this.lbJobsAborted.Text = "loading...";
+      // 
+      // lbJobdone
+      // 
+      this.lbJobdone.AutoSize = true;
+      this.lbJobdone.Location = new System.Drawing.Point(62, 114);
+      this.lbJobdone.Name = "lbJobdone";
+      this.lbJobdone.Size = new System.Drawing.Size(50, 13);
+      this.lbJobdone.TabIndex = 19;
+      this.lbJobdone.Text = "loading...";
+      // 
+      // lbJobsFetched
+      // 
+      this.lbJobsFetched.AutoSize = true;
+      this.lbJobsFetched.Location = new System.Drawing.Point(74, 90);
+      this.lbJobsFetched.Name = "lbJobsFetched";
+      this.lbJobsFetched.Size = new System.Drawing.Size(50, 13);
+      this.lbJobsFetched.TabIndex = 18;
+      this.lbJobsFetched.Text = "loading...";
+      // 
+      // lbGuid
+      // 
+      this.lbGuid.AutoSize = true;
+      this.lbGuid.Location = new System.Drawing.Point(41, 16);
+      this.lbGuid.Name = "lbGuid";
+      this.lbGuid.Size = new System.Drawing.Size(50, 13);
+      this.lbGuid.TabIndex = 15;
+      this.lbGuid.Text = "loading...";
+      // 
+      // lbGuidCaption
+      // 
+      this.lbGuidCaption.AutoSize = true;
+      this.lbGuidCaption.Location = new System.Drawing.Point(9, 16);
+      this.lbGuidCaption.Name = "lbGuidCaption";
+      this.lbGuidCaption.Size = new System.Drawing.Size(37, 13);
+      this.lbGuidCaption.TabIndex = 8;
+      this.lbGuidCaption.Text = "GUID:";
+      // 
+      // lbCs
+      // 
+      this.lbCs.AutoSize = true;
+      this.lbCs.Location = new System.Drawing.Point(94, 40);
+      this.lbCs.Name = "lbCs";
+      this.lbCs.Size = new System.Drawing.Size(50, 13);
+      this.lbCs.TabIndex = 17;
+      this.lbCs.Text = "loading...";
+      // 
+      // lbConnectionStatus
+      // 
+      this.lbConnectionStatus.AutoSize = true;
+      this.lbConnectionStatus.Location = new System.Drawing.Point(97, 66);
+      this.lbConnectionStatus.Name = "lbConnectionStatus";
+      this.lbConnectionStatus.Size = new System.Drawing.Size(50, 13);
+      this.lbConnectionStatus.TabIndex = 16;
+      this.lbConnectionStatus.Text = "loading...";
+      // 
+      // lbConnectionStatusCaption
+      // 
+      this.lbConnectionStatusCaption.AutoSize = true;
+      this.lbConnectionStatusCaption.Location = new System.Drawing.Point(9, 66);
+      this.lbConnectionStatusCaption.Name = "lbConnectionStatusCaption";
+      this.lbConnectionStatusCaption.Size = new System.Drawing.Size(93, 13);
+      this.lbConnectionStatusCaption.TabIndex = 13;
+      this.lbConnectionStatusCaption.Text = "Connected status:";
+      // 
+      // lbJobsAbortedCaption
+      // 
+      this.lbJobsAbortedCaption.AutoSize = true;
+      this.lbJobsAbortedCaption.Location = new System.Drawing.Point(8, 137);
+      this.lbJobsAbortedCaption.Name = "lbJobsAbortedCaption";
+      this.lbJobsAbortedCaption.Size = new System.Drawing.Size(71, 13);
+      this.lbJobsAbortedCaption.TabIndex = 11;
+      this.lbJobsAbortedCaption.Text = "Jobs aborted:";
+      // 
+      // lbJobdoneCaption
+      // 
+      this.lbJobdoneCaption.AutoSize = true;
+      this.lbJobdoneCaption.Location = new System.Drawing.Point(9, 114);
+      this.lbJobdoneCaption.Name = "lbJobdoneCaption";
+      this.lbJobdoneCaption.Size = new System.Drawing.Size(59, 13);
+      this.lbJobdoneCaption.TabIndex = 10;
+      this.lbJobdoneCaption.Text = "Jobs done:";
+      // 
+      // lbJobsFetchedCaption
+      // 
+      this.lbJobsFetchedCaption.AutoSize = true;
+      this.lbJobsFetchedCaption.Location = new System.Drawing.Point(9, 90);
+      this.lbJobsFetchedCaption.Name = "lbJobsFetchedCaption";
+      this.lbJobsFetchedCaption.Size = new System.Drawing.Size(71, 13);
+      this.lbJobsFetchedCaption.TabIndex = 12;
+      this.lbJobsFetchedCaption.Text = "Jobs fetched:";
+      // 
+      // lbCsCaption
+      // 
+      this.lbCsCaption.AutoSize = true;
+      this.lbCsCaption.Location = new System.Drawing.Point(9, 40);
+      this.lbCsCaption.Name = "lbCsCaption";
+      this.lbCsCaption.Size = new System.Drawing.Size(90, 13);
+      this.lbCsCaption.TabIndex = 9;
+      this.lbCsCaption.Text = "Connected since:";
+      // 
+      // gbEventLog
+      // 
+      this.gbEventLog.Controls.Add(this.txtLog);
+      this.gbEventLog.Location = new System.Drawing.Point(7, 176);
+      this.gbEventLog.Name = "gbEventLog";
+      this.gbEventLog.Size = new System.Drawing.Size(830, 230);
+      this.gbEventLog.TabIndex = 7;
+      this.gbEventLog.TabStop = false;
+      this.gbEventLog.Text = "Log";
+      // 
+      // txtLog
+      // 
+      this.txtLog.Location = new System.Drawing.Point(6, 19);
+      this.txtLog.Multiline = true;
+      this.txtLog.Name = "txtLog";
+      this.txtLog.ReadOnly = true;
+      this.txtLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+      this.txtLog.Size = new System.Drawing.Size(818, 205);
+      this.txtLog.TabIndex = 0;
+      // 
+      // tabPage2
+      // 
+      this.tabPage2.Controls.Add(this.btnUpdateCalender);
+      this.tabPage2.Controls.Add(this.btnSaveCal);
+      this.tabPage2.Controls.Add(this.groupBox1);
+      this.tabPage2.Controls.Add(this.mcOnline);
+      this.tabPage2.Controls.Add(this.dvOnline);
+      this.tabPage2.Controls.Add(this.pictureBox1);
+      this.tabPage2.Location = new System.Drawing.Point(4, 25);
+      this.tabPage2.Name = "tabPage2";
+      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage2.Size = new System.Drawing.Size(845, 409);
+      this.tabPage2.TabIndex = 1;
+      this.tabPage2.Text = "Schedule";
+      this.tabPage2.UseVisualStyleBackColor = true;
+      // 
+      // btnSaveCal
+      // 
+      this.btnSaveCal.Location = new System.Drawing.Point(633, 100);
+      this.btnSaveCal.Name = "btnSaveCal";
+      this.btnSaveCal.Size = new System.Drawing.Size(199, 25);
+      this.btnSaveCal.TabIndex = 41;
+      this.btnSaveCal.Text = "Save Calender";
+      this.btnSaveCal.UseVisualStyleBackColor = true;
+      this.btnSaveCal.Click += new System.EventHandler(this.btnSaveCal_Click);
+      // 
+      // groupBox1
+      // 
+      this.groupBox1.Controls.Add(this.txttimeTo);
+      this.groupBox1.Controls.Add(this.txttimeFrom);
+      this.groupBox1.Controls.Add(this.dtpTo);
+      this.groupBox1.Controls.Add(this.dtpFrom);
+      this.groupBox1.Controls.Add(this.chbade);
+      this.groupBox1.Controls.Add(this.btnRecurrence);
+      this.groupBox1.Controls.Add(this.btbDelete);
+      this.groupBox1.Controls.Add(this.label2);
+      this.groupBox1.Controls.Add(this.label1);
+      this.groupBox1.Controls.Add(this.btCreate);
+      this.groupBox1.Location = new System.Drawing.Point(373, 7);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(254, 161);
+      this.groupBox1.TabIndex = 21;
+      this.groupBox1.TabStop = false;
+      // 
+      // txttimeTo
+      // 
+      this.txttimeTo.CustomFormat = "HH:00";
+      this.txttimeTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.txttimeTo.Location = new System.Drawing.Point(164, 45);
+      this.txttimeTo.Name = "txttimeTo";
+      this.txttimeTo.ShowUpDown = true;
+      this.txttimeTo.Size = new System.Drawing.Size(73, 20);
+      this.txttimeTo.TabIndex = 40;
+      // 
+      // txttimeFrom
+      // 
+      this.txttimeFrom.CustomFormat = "HH:00";
+      this.txttimeFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.txttimeFrom.Location = new System.Drawing.Point(164, 12);
+      this.txttimeFrom.Name = "txttimeFrom";
+      this.txttimeFrom.ShowUpDown = true;
+      this.txttimeFrom.Size = new System.Drawing.Size(73, 20);
+      this.txttimeFrom.TabIndex = 39;
+      // 
+      // dtpTo
+      // 
+      this.dtpTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpTo.Location = new System.Drawing.Point(72, 45);
+      this.dtpTo.Name = "dtpTo";
+      this.dtpTo.Size = new System.Drawing.Size(89, 20);
+      this.dtpTo.TabIndex = 33;
+      // 
+      // dtpFrom
+      // 
+      this.dtpFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpFrom.Location = new System.Drawing.Point(72, 12);
+      this.dtpFrom.Name = "dtpFrom";
+      this.dtpFrom.Size = new System.Drawing.Size(89, 20);
+      this.dtpFrom.TabIndex = 32;
+      // 
+      // chbade
+      // 
+      this.chbade.AutoSize = true;
+      this.chbade.Location = new System.Drawing.Point(135, 70);
+      this.chbade.Name = "chbade";
+      this.chbade.Size = new System.Drawing.Size(90, 17);
+      this.chbade.TabIndex = 31;
+      this.chbade.Text = "All Day Event";
+      this.chbade.UseVisualStyleBackColor = true;
+      this.chbade.CheckedChanged += new System.EventHandler(this.chbade_CheckedChanged);
+      // 
+      // btnRecurrence
+      // 
+      this.btnRecurrence.Location = new System.Drawing.Point(135, 129);
+      this.btnRecurrence.Name = "btnRecurrence";
+      this.btnRecurrence.Size = new System.Drawing.Size(113, 26);
+      this.btnRecurrence.TabIndex = 30;
+      this.btnRecurrence.Text = "Recurrence";
+      this.btnRecurrence.UseVisualStyleBackColor = true;
+      this.btnRecurrence.Click += new System.EventHandler(this.btnRecurrence_Click);
+      // 
+      // btbDelete
+      // 
+      this.btbDelete.Location = new System.Drawing.Point(8, 129);
+      this.btbDelete.Name = "btbDelete";
+      this.btbDelete.Size = new System.Drawing.Size(114, 26);
+      this.btbDelete.TabIndex = 25;
+      this.btbDelete.Text = "Delete";
+      this.btbDelete.UseVisualStyleBackColor = true;
+      this.btbDelete.Click += new System.EventHandler(this.btbDelete_Click);
+      // 
+      // label2
+      // 
+      this.label2.AutoSize = true;
+      this.label2.Location = new System.Drawing.Point(16, 46);
+      this.label2.Name = "label2";
+      this.label2.Size = new System.Drawing.Size(55, 13);
+      this.label2.TabIndex = 23;
+      this.label2.Text = "End Time:";
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(16, 15);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(58, 13);
+      this.label1.TabIndex = 21;
+      this.label1.Text = "Start Time:";
+      // 
+      // btCreate
+      // 
+      this.btCreate.Location = new System.Drawing.Point(6, 93);
+      this.btCreate.Name = "btCreate";
+      this.btCreate.Size = new System.Drawing.Size(242, 26);
+      this.btCreate.TabIndex = 20;
+      this.btCreate.Text = "Save";
+      this.btCreate.UseVisualStyleBackColor = true;
+      this.btCreate.Click += new System.EventHandler(this.btCreate_Click);
+      // 
+      // mcOnline
+      // 
+      this.mcOnline.CalendarDimensions = new System.Drawing.Size(2, 1);
+      this.mcOnline.Location = new System.Drawing.Point(9, 12);
+      this.mcOnline.Name = "mcOnline";
+      this.mcOnline.TabIndex = 19;
+      this.mcOnline.DateChanged += new System.Windows.Forms.DateRangeEventHandler(this.mcOnline_DateChanged);
+      // 
+      // pictureBox1
+      // 
+      this.pictureBox1.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.schedule;
+      this.pictureBox1.Location = new System.Drawing.Point(633, 12);
+      this.pictureBox1.Name = "pictureBox1";
+      this.pictureBox1.Size = new System.Drawing.Size(199, 82);
+      this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+      this.pictureBox1.TabIndex = 22;
+      this.pictureBox1.TabStop = false;
+      // 
+      // ilEventLog
+      // 
+      this.ilEventLog.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilEventLog.ImageStream")));
+      this.ilEventLog.TransparentColor = System.Drawing.Color.Transparent;
+      this.ilEventLog.Images.SetKeyName(0, "Info.png");
+      this.ilEventLog.Images.SetKeyName(1, "Error.png");
+      // 
+      // btnUpdateCalender
+      // 
+      this.btnUpdateCalender.Location = new System.Drawing.Point(633, 136);
+      this.btnUpdateCalender.Name = "btnUpdateCalender";
+      this.btnUpdateCalender.Size = new System.Drawing.Size(199, 26);
+      this.btnUpdateCalender.TabIndex = 42;
+      this.btnUpdateCalender.Text = "Update Calender";
+      this.btnUpdateCalender.UseVisualStyleBackColor = true;
+      this.btnUpdateCalender.Click += new System.EventHandler(this.btnUpdateCalender_Click);
+      // 
+      // HiveClientConsole
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.BackColor = System.Drawing.SystemColors.Control;
+      this.ClientSize = new System.Drawing.Size(853, 438);
+      this.Controls.Add(this.tcClientConsole);
+      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+      this.MaximizeBox = false;
+      this.MinimizeBox = false;
+      this.Name = "HiveClientConsole";
+      this.Text = "Client Console (loading...)";
+      this.tcClientConsole.ResumeLayout(false);
+      this.tpConnection.ResumeLayout(false);
+      this.gbServerConnection.ResumeLayout(false);
+      this.gbServerConnection.PerformLayout();
+      this.gbJobCommon.ResumeLayout(false);
+      this.gbCommon.ResumeLayout(false);
+      this.gbCommon.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbGraph)).EndInit();
+      this.gbEventLog.ResumeLayout(false);
+      this.gbEventLog.PerformLayout();
+      this.tabPage2.ResumeLayout(false);
+      this.groupBox1.ResumeLayout(false);
+      this.groupBox1.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TabControl tcClientConsole;
+    private System.Windows.Forms.TabPage tpConnection;
+    private System.Windows.Forms.TabPage tabPage2;
+    private System.Windows.Forms.Label lbJobdoneCaption;
+    private System.Windows.Forms.Label lbCsCaption;
+    private System.Windows.Forms.Label lbGuidCaption;
+    private System.Windows.Forms.GroupBox gbEventLog;
+    private System.Windows.Forms.Label lbJobsFetchedCaption;
+    private System.Windows.Forms.Label lbJobsAbortedCaption;
+    private System.Windows.Forms.GroupBox gbJobCommon;
+    private System.Windows.Forms.GroupBox gbCommon;
+    private System.Windows.Forms.ListView lvJobDetail;
+    private System.Windows.Forms.ColumnHeader chJobId;
+    private System.Windows.Forms.ColumnHeader chSince;
+    private System.Windows.Forms.ColumnHeader chProgress;
+    private System.Windows.Forms.Label lbConnectionStatusCaption;
+    private System.Windows.Forms.ImageList ilEventLog;
+    private System.Windows.Forms.Label lbCs;
+    private System.Windows.Forms.Label lbConnectionStatus;
+    private System.Windows.Forms.Label lbGuid;
+    private System.Windows.Forms.Label lbJobsFetched;
+    private System.Windows.Forms.Label lbJobdone;
+    private System.Windows.Forms.Label lbJobsAborted;
+    private System.Windows.Forms.PictureBox pbGraph;
+    private System.Windows.Forms.GroupBox gbServerConnection;
+    private System.Windows.Forms.Button btn_clientShutdown;
+    private System.Windows.Forms.Button btnDisconnect;
+    private System.Windows.Forms.Button btConnect;
+    private System.Windows.Forms.TextBox tbPort;
+    private System.Windows.Forms.TextBox tbIPAdress;
+    private System.Windows.Forms.Label lbServerIPCaption;
+    private System.Windows.Forms.Label lbPortCaption;
+    private System.Windows.Forms.GroupBox groupBox1;
+    private System.Windows.Forms.Button btCreate;
+    private System.Windows.Forms.MonthCalendar mcOnline;
+    private Calendar.DayView dvOnline;
+    private System.Windows.Forms.Label label2;
+    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.PictureBox pictureBox1;
+    private System.Windows.Forms.Button btbDelete;
+    private System.Windows.Forms.Button btnRecurrence;
+    private System.Windows.Forms.CheckBox chbade;
+    private System.Windows.Forms.DateTimePicker dtpTo;
+    private System.Windows.Forms.DateTimePicker dtpFrom;
+    private System.Windows.Forms.DateTimePicker txttimeTo;
+    private System.Windows.Forms.DateTimePicker txttimeFrom;
+    private System.Windows.Forms.TextBox txtLog;
+    private System.Windows.Forms.Button btnSaveCal;
+    private System.Windows.Forms.Button btnUpdateCalender;
+  }
+}
+
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.cs	(revision 4073)
@@ -0,0 +1,684 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
+using System.Linq;
+using System.Net;
+using System.ServiceModel;
+using System.Windows.Forms;
+using Calendar;
+using HeuristicLab.Hive.Client.Console.ClientService;
+using ZedGraph;
+using HeuristicLab.Hive.Contracts;
+using System.Xml.Serialization;
+using System.IO;
+
+namespace HeuristicLab.Hive.Client.Console
+{
+
+  #region Delegates
+
+  //delegate to write text in the textbox from another process
+  public delegate void AppendTextDelegate(String message);
+
+  //delegate to remove text in the textbox from another process
+  public delegate void RemoveTextDelegate(int newLength, int maxChars);
+
+  //delegate fired, if a dialog is being closed
+  public delegate void OnDialogClosedDelegate(RecurrentEvent e);
+
+  #endregion
+
+  public partial class HiveClientConsole : Form
+  {
+
+    #region Declarations
+
+    private const string ENDPOINTADRESS = "net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator";
+
+    private static bool isfired = false;
+    //the logfilereader
+    private LogFileReader logFileReader;
+
+    //communication with the client
+    private ClientConsoleCommunicatorClient clientCommunicator;
+
+    //the timer for refreshing the gui
+    private System.Windows.Forms.Timer refreshTimer;
+
+    //the list of appointments in the calender
+    [XmlArray("Appointments")]
+    [XmlArrayItem("Appointment", typeof(Appointment))]
+    public List<Appointment> onlineTimes = new List<Appointment>();
+
+    public OnDialogClosedDelegate dialogClosedDelegate;
+
+    #endregion
+
+    #region Constructor
+
+    public HiveClientConsole()
+    {
+      InitializeComponent();
+      InitTimer();
+      ConnectToClient();
+      RefreshGui();
+      InitCalender();
+      InitLogFileReader();
+    }
+
+    #endregion
+
+    #region Methods
+
+    #region Client connection
+
+    private void ConnectToClient()
+    {
+      try
+      {
+        clientCommunicator = new ClientConsoleCommunicatorClient(WcfSettings.GetBinding(), new EndpointAddress(ENDPOINTADRESS));
+        clientCommunicator.GetStatusInfosCompleted += new EventHandler<GetStatusInfosCompletedEventArgs>(clientCommunicator_GetStatusInfosCompleted);
+        clientCommunicator.GetCurrentConnectionCompleted += new EventHandler<GetCurrentConnectionCompletedEventArgs>(clientCommunicator_GetCurrentConnectionCompleted);
+        clientCommunicator.GetUptimeCalendarCompleted += new EventHandler<GetUptimeCalendarCompletedEventArgs>(clientCommunicator_GetUptimeCalendarCompleted);
+        clientCommunicator.SetUptimeCalendarCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(clientCommunicator_SetUptimeCalendarCompleted);
+      }
+      catch (Exception ex)
+      {
+        ManageFatalException("Connection Error, check if Hive Client is running!", "Connection Error", ex);
+      }
+    }
+
+    #endregion
+
+    #region Logging
+
+    private void InitLogFileReader()
+    {
+      logFileReader = new LogFileReader(Environment.CurrentDirectory + @"/Hive.log");
+      logFileReader.MoreData += new LogFileReader.MoreDataHandler(logFileReader_MoreData);
+      logFileReader.Start();
+    }
+
+    private void logFileReader_MoreData(object sender, string newData)
+    {
+      int maxChars = txtLog.MaxLength;
+      if (newData.Length > maxChars)
+      {
+        newData = newData.Remove(0, newData.Length - maxChars);
+      }
+      int newLength = this.txtLog.Text.Length + newData.Length;
+      if (newLength > maxChars)
+      {
+        RemoveText(newLength, maxChars);
+      }
+      AppendText(newData);
+    }
+
+    private void RemoveText(int newLength, int maxChars)
+    {
+      if (this.txtLog.InvokeRequired)
+      {
+        this.txtLog.Invoke(new
+          RemoveTextDelegate(RemoveText), new object[] { newLength, maxChars });
+      }
+      else
+      {
+        this.txtLog.Text = this.txtLog.Text.Remove(0, newLength - (int)maxChars);
+      }
+    }
+
+    private void AppendText(string message)
+    {
+      if (this.txtLog.InvokeRequired)
+      {
+        this.txtLog.Invoke(new
+          AppendTextDelegate(AppendText), new object[] { message });
+      }
+      else
+      {
+        this.txtLog.AppendText(message);
+      }
+    }
+
+    #endregion
+
+    #region Gui Refresh
+
+    private void InitTimer()
+    {
+      refreshTimer = new System.Windows.Forms.Timer();
+      refreshTimer.Interval = 1000;
+      refreshTimer.Tick += new EventHandler(refreshTimer_Tick);
+      refreshTimer.Start();
+    }
+
+    private void RefreshGui()
+    {
+      try
+      {
+        clientCommunicator.GetStatusInfosAsync();
+      }
+      catch (Exception ex)
+      {
+        ManageFatalException("Connection Error, check if Hive Client is running!", "Connection Error", ex);
+      }
+    }
+
+    private void UpdateGraph(StatusCommons sc)
+    {
+      ZedGraphControl zgc = new ZedGraphControl();
+      GraphPane myPane = zgc.GraphPane;
+      myPane.GraphObjList.Clear();
+
+      myPane.Title.IsVisible = false;  // no title
+      myPane.Border.IsVisible = false; // no border
+      myPane.Chart.Border.IsVisible = false; // no border around the chart
+      myPane.XAxis.IsVisible = false;  // no x-axis
+      myPane.YAxis.IsVisible = false;  // no y-axis
+      myPane.Legend.IsVisible = false; // no legend
+
+      myPane.Fill.Color = this.BackColor;
+
+      myPane.Chart.Fill.Type = FillType.None;
+      myPane.Fill.Type = FillType.Solid;
+
+      double allProgress = 0;
+      double done = 0;
+
+      
+      /*if (jobs.Length == 0)
+      {
+        myPane.AddPieSlice(100, Color.Green, 0.1, "");
+      }
+      else
+      {
+        for (int i = 0; i < jobs.Length; i++)
+        {
+          allProgress += jobs[i].Progress;
+        } */
+
+        //done = allProgress / jobs.Length;
+
+      myPane.AddPieSlice((sc.FreeCores / (double) sc.TotalCores), Color.Red, 0, "");
+      myPane.AddPieSlice(((sc.TotalCores - sc.FreeCores) / (double)sc.TotalCores), Color.Green, 0, "");
+     // }
+      //Hides the slice labels
+      PieItem.Default.LabelType = PieLabelType.None;
+
+      myPane.AxisChange();
+
+      pbGraph.Image = zgc.GetImage();
+    }
+
+    #region Events
+
+    private void refreshTimer_Tick(object sender, EventArgs e)
+    {
+      RefreshGui();
+    }
+
+    #endregion
+
+
+    #endregion
+
+    #region Calendar stuff
+
+    private void InitCalender()
+    {
+      dvOnline.StartDate = DateTime.Now;
+      dvOnline.OnNewAppointment += new EventHandler<NewAppointmentEventArgs>(dvOnline_OnNewAppointment);
+      dvOnline.OnResolveAppointments += new EventHandler<ResolveAppointmentsEventArgs>(dvOnline_OnResolveAppointments);
+
+      //get calender from client
+      clientCommunicator.GetUptimeCalendarAsync();
+    }
+
+    private bool CreateAppointment()
+    {
+      DateTime from, to;
+
+      if (!string.IsNullOrEmpty(dtpFrom.Text) && !string.IsNullOrEmpty(dtpTo.Text))
+      {
+        if (chbade.Checked)
+        {
+          //whole day appointment, only dates are visible
+          if (DateTime.TryParse(dtpFrom.Text, out from) && DateTime.TryParse(dtpTo.Text, out to) && from <= to)
+            onlineTimes.Add(CreateAppointment(from, to.AddDays(1), true));
+          else
+            MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+        else if (!string.IsNullOrEmpty(txttimeFrom.Text) && !string.IsNullOrEmpty(txttimeTo.Text))
+        {
+          //Timeframe appointment
+          if (DateTime.TryParse(dtpFrom.Text + " " + txttimeFrom.Text, out from) && DateTime.TryParse(dtpTo.Text + " " + txttimeTo.Text, out to) && from < to)
+          {
+            if (from.Date == to.Date)
+              onlineTimes.Add(CreateAppointment(from, to, false));
+            else
+            {
+              //more than 1 day selected
+              while (from.Date != to.Date)
+              {
+                onlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
+                from = from.AddDays(1);
+              }
+              onlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
+            }
+          }
+          else
+            MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+        dvOnline.Invalidate();
+        return true;
+      }
+      else
+      {
+        MessageBox.Show("Error in create appointment, please fill out all textboxes!", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        return false;
+      }
+    }
+
+    private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay)
+    {
+      Appointment App = new Appointment();
+      App.StartDate = startDate;
+      App.EndDate = endDate;
+      App.AllDayEvent = allDay;
+      App.BorderColor = Color.Red;
+      App.Locked = true;
+      App.Subject = "Online";
+      App.Recurring = false;
+      return App;
+    }
+
+    private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId)
+    {
+      Appointment App = new Appointment();
+      App.StartDate = startDate;
+      App.EndDate = endDate;
+      App.AllDayEvent = allDay;
+      App.BorderColor = Color.Red;
+      App.Locked = true;
+      App.Subject = "Online";
+      App.Recurring = recurring;
+      App.RecurringId = recurringId;
+      return App;
+    }
+
+    private void DeleteAppointment()
+    {
+      onlineTimes.Remove(dvOnline.SelectedAppointment);
+    }
+
+    private void DeleteRecurringAppointment(Guid recurringId)
+    {
+      onlineTimes.RemoveAll(a => a.RecurringId.ToString() == dvOnline.SelectedAppointment.RecurringId.ToString());
+    }
+
+    private void ChangeRecurrenceAppointment(Guid recurringId)
+    {
+      int hourfrom = int.Parse(txttimeFrom.Text.Substring(0, txttimeFrom.Text.IndexOf(':')));
+      int hourTo = int.Parse(txttimeTo.Text.Substring(0, txttimeTo.Text.IndexOf(':')));
+      List<Appointment> recurringAppointments = onlineTimes.Where(appointment => appointment.RecurringId == recurringId).ToList();
+      recurringAppointments.ForEach(appointment => appointment.StartDate = new DateTime(appointment.StartDate.Year, appointment.StartDate.Month, appointment.StartDate.Day, hourfrom, 0, 0));
+      recurringAppointments.ForEach(appointment => appointment.EndDate = new DateTime(appointment.EndDate.Year, appointment.EndDate.Month, appointment.EndDate.Day, hourTo, 0, 0));
+
+      DeleteRecurringAppointment(recurringId);
+      onlineTimes.AddRange(recurringAppointments);
+    }
+
+    public void DialogClosed(RecurrentEvent e)
+    {
+      CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.IncWeeks, e.WeekDays);
+    }
+
+    private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, int incWeek, HashSet<DayOfWeek> daysOfWeek)
+    {
+      DateTime incDate = dateFrom;
+      Guid guid = Guid.NewGuid();
+
+      while (incDate.Date <= dateTo.Date)
+      {
+        if (daysOfWeek.Contains(incDate.Date.DayOfWeek))
+          onlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid));
+        incDate = incDate.AddDays(1);
+      }
+
+      dvOnline.Invalidate();
+    }
+
+    #region Calendar Events
+
+    private void btbDelete_Click(object sender, EventArgs e)
+    {
+      Appointment selectedAppointment = dvOnline.SelectedAppointment;
+      if (dvOnline.SelectedAppointment != null)
+      {
+        if (!selectedAppointment.Recurring)
+          DeleteAppointment();
+        else
+        {
+          DialogResult res = MessageBox.Show("Delete all events in this series?", "Delete recurrences", MessageBoxButtons.YesNo);
+          if (res != DialogResult.Yes)
+            DeleteAppointment();
+          else
+            DeleteRecurringAppointment(selectedAppointment.RecurringId);
+        }
+      }
+      dvOnline.Invalidate();
+    }
+
+    private void chbade_CheckedChanged(object sender, EventArgs e)
+    {
+      txttimeFrom.Visible = !chbade.Checked;
+      txttimeTo.Visible = !chbade.Checked;
+    }
+
+    private void dvOnline_OnSelectionChanged(object sender, EventArgs e)
+    {
+      //btCreate.Enabled = true;
+      if (dvOnline.Selection == SelectionType.DateRange)
+      {
+        dtpFrom.Text = dvOnline.SelectionStart.ToShortDateString();
+        dtpTo.Text = dvOnline.SelectionEnd.Date.ToShortDateString();
+        txttimeFrom.Text = dvOnline.SelectionStart.ToShortTimeString();
+        txttimeTo.Text = dvOnline.SelectionEnd.ToShortTimeString();
+
+        btCreate.Text = "Save";
+      }
+
+      if (dvOnline.Selection == SelectionType.Appointment)
+      {
+
+        dtpFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortDateString();
+        dtpTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortDateString();
+        txttimeFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortTimeString();
+        txttimeTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortTimeString();
+
+        if (dvOnline.SelectedAppointment.Recurring)
+          //btCreate.Enabled = false;
+          //also change the caption of the save button
+          btCreate.Text = "Save changes";
+      }
+
+      if (dvOnline.Selection == SelectionType.None)
+      {
+        //also change the caption of the save button
+        btCreate.Text = "Save";
+      }
+
+    }
+
+    private void mcOnline_DateChanged(object sender, DateRangeEventArgs e)
+    {
+      dvOnline.StartDate = mcOnline.SelectionStart;
+    }
+
+    private void btCreate_Click(object sender, EventArgs e)
+    {
+      if (dvOnline.Selection != SelectionType.Appointment)
+      {
+        CreateAppointment();
+      }
+      else
+      {
+        //now we want to change an existing appointment
+        if (!dvOnline.SelectedAppointment.Recurring)
+        {
+          if (CreateAppointment())
+            DeleteAppointment();
+        }
+        else
+        {
+          //change recurring appointment
+          //check, if only selected appointment has to change or whole recurrence
+          DialogResult res = MessageBox.Show("Change all events in this series?", "Change recurrences", MessageBoxButtons.YesNo);
+          if (res != DialogResult.Yes)
+          {
+            if (CreateAppointment())
+              DeleteAppointment();
+          }
+          else
+            ChangeRecurrenceAppointment(dvOnline.SelectedAppointment.RecurringId);
+        }
+      }
+      dvOnline.Invalidate();
+    }
+
+    private void btnRecurrence_Click(object sender, EventArgs e)
+    {
+      Recurrence recurrence = new Recurrence();
+      recurrence.dialogClosedDelegate = new OnDialogClosedDelegate(this.DialogClosed);
+      recurrence.Show();
+    }
+
+    private void btnSaveCal_Click(object sender, EventArgs e)
+    {
+      clientCommunicator.SetUptimeCalendarAsync(onlineTimes.ToArray());
+    }
+
+    private void dvOnline_OnResolveAppointments(object sender, ResolveAppointmentsEventArgs e)
+    {
+      List<Appointment> Apps = new List<Appointment>();
+
+      foreach (Appointment m_App in onlineTimes)
+        if ((m_App.StartDate >= e.StartDate) &&
+            (m_App.StartDate <= e.EndDate))
+          Apps.Add(m_App);
+      e.Appointments = Apps;
+    }
+
+    private void btnUpdateCalender_Click(object sender, EventArgs e) {
+      clientCommunicator.GetUptimeCalendarAsync();
+    }
+
+    private void dvOnline_OnNewAppointment(object sender, NewAppointmentEventArgs e)
+    {
+      Appointment Appointment = new Appointment();
+
+      Appointment.StartDate = e.StartDate;
+      Appointment.EndDate = e.EndDate;
+
+      onlineTimes.Add(Appointment);
+    }
+
+    #endregion
+
+    #endregion
+
+    #region Client communicator events
+
+    void clientCommunicator_SetUptimeCalendarCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
+    {
+      if (e.Error == null)
+      {
+        MessageBox.Show("Calendar successfully saved!", "Calender", MessageBoxButtons.OK, MessageBoxIcon.Information);
+      }
+      else
+      {
+        MessageBox.Show("Error saving calender \n" + e.Error.ToString(), "Calender", MessageBoxButtons.OK, MessageBoxIcon.Error);
+      }
+    }
+
+    void clientCommunicator_GetUptimeCalendarCompleted(object sender, GetUptimeCalendarCompletedEventArgs e)
+    {
+      if (e.Error == null)
+      {
+        if (e.Result != null)
+        {
+          onlineTimes = e.Result.ToList<Appointment>();
+          onlineTimes.ForEach(a => a.BorderColor = Color.Red);
+          dvOnline.Invalidate();
+
+        }
+        else
+        {
+          onlineTimes = new List<Appointment>();
+        }
+      }
+    }
+
+    private void clientCommunicator_GetCurrentConnectionCompleted(object sender, GetCurrentConnectionCompletedEventArgs e)
+    {
+      if (e.Error == null)
+      {
+        ConnectionContainer curConnection = e.Result;
+        tbIPAdress.Text = curConnection.IPAdress;
+        tbPort.Text = curConnection.Port.ToString();
+      }
+      else
+      {
+        ManageFatalException("Connection Error, check if Hive Client is running!", "Connection Error", null);
+      }
+    }
+
+    private void clientCommunicator_GetStatusInfosCompleted(object sender, GetStatusInfosCompletedEventArgs e)
+    {
+      if (e.Error == null)
+      {
+        StatusCommons sc = e.Result;
+
+        lbGuid.Text = sc.ClientGuid.ToString();
+        lbConnectionStatus.Text = sc.Status.ToString();
+        lbJobdone.Text = sc.JobsDone.ToString();
+        lbJobsAborted.Text = sc.JobsAborted.ToString();
+        lbJobsFetched.Text = sc.JobsFetched.ToString();
+
+        this.Text = "Client Console (" + sc.Status.ToString() + ")";
+
+        ListViewItem curJobStatusItem;
+
+        if (sc.Jobs != null)
+        {
+          lvJobDetail.Items.Clear();
+          double progress;
+          foreach (JobStatus curJob in sc.Jobs)
+          {
+            curJobStatusItem = new ListViewItem(curJob.JobId.ToString());
+            curJobStatusItem.SubItems.Add(curJob.Since.ToString());
+            progress = curJob.Progress * 100;
+            curJobStatusItem.SubItems.Add(progress.ToString());
+            lvJobDetail.Items.Add(curJobStatusItem);
+          }
+          lvJobDetail.Sort();
+        }
+
+        UpdateGraph(sc);
+
+        if (sc.Status == NetworkEnumWcfConnState.Connected || sc.Status == NetworkEnumWcfConnState.Loggedin)
+        {
+          btConnect.Enabled = false;
+          btnDisconnect.Enabled = true;
+          lbCs.Text = sc.ConnectedSince.ToString();
+          clientCommunicator.GetCurrentConnectionAsync();
+        }
+        else if (sc.Status == NetworkEnumWcfConnState.Disconnected)
+        {
+          btConnect.Enabled = true;
+          btnDisconnect.Enabled = false;
+          lbCs.Text = String.Empty;
+        }
+        else if (sc.Status == NetworkEnumWcfConnState.Failed)
+        {
+          btConnect.Enabled = true;
+          btnDisconnect.Enabled = false;
+          lbCs.Text = String.Empty;
+        }
+
+        clientCommunicator.GetCurrentConnection();
+      }
+      else
+      {
+        ManageFatalException("Connection Error, check if Hive Client is running!", "Connection Error", null);
+      }
+    }
+
+    #endregion
+
+    #region Exception
+    private void ManageFatalException(string body, string caption, Exception e)
+    {
+      if (!isfired)
+      {
+        isfired = true;
+        refreshTimer.Stop();
+        DialogResult res = MessageBox.Show(body, caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
+        if (res == DialogResult.OK)
+          this.Close();
+      }
+    }
+
+    #endregion
+
+    #endregion
+
+    #region GUI Events
+
+    private void btConnect_Click(object sender, EventArgs e)
+    {
+      IPAddress ipAdress;
+      int port;
+      ConnectionContainer cc = new ConnectionContainer();
+      if (IPAddress.TryParse(tbIPAdress.Text, out ipAdress) && int.TryParse(tbPort.Text, out port))
+      {
+        cc.IPAdress = tbIPAdress.Text;
+        cc.Port = port;
+        clientCommunicator.SetConnectionAsync(cc);
+      }
+      else
+      {
+        MessageBox.Show("IP Adress and/or Port Error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+      }
+    }
+
+    private void btnDisconnect_Click(object sender, EventArgs e)
+    {
+      clientCommunicator.DisconnectAsync();
+    }
+
+    private void btn_clientShutdown_Click(object sender, EventArgs e)
+    {
+      DialogResult res = MessageBox.Show("Do you really want to shutdown the Hive Client?", "Hive Client Console", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+      if (res == DialogResult.Yes)
+      {
+        logFileReader.Stop();
+        clientCommunicator.ShutdownClient();
+        this.Close();
+      }
+    }
+
+    private void Connection_KeyPress(object sender, KeyPressEventArgs e)
+    {
+      if (e.KeyChar == (char)Keys.Return)
+        btConnect_Click(null, null);
+    }
+
+    #endregion
+
+
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsole.resx	(revision 4073)
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="ilEventLog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <data name="ilEventLog.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABI
+        CgAAAk1TRnQBSQFMAgEBAgEAAQwBAAEMAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
+        AwABEAMAAQEBAAEgBgABECoAAUICNAF0AWQCEwHxAy8B/wFgAh8B1AEfAh4BLCwAAUICNAF0AWQCEwHx
+        Ay8B/wFgAh8B1AEfAh4BLKQAAV8CEgHyAZMBgQEvAf8BvwGBAS8B/wG9AYEBLwH/AboBgQEvAf8BuAGB
+        AS8B/wG2AYEBLwH/AWMBTAEvAf8BOwIyAWUcAAFfAhIB8gIvAaQB/wIvAdYB/wIvAdQB/wIvAdIB/wIv
+        AdAB/wIvAc4B/wIvAWoB/wE7AjIBZZgAATkBNQEvAf8BxwGBAS8B/wHDAYEBLwH/AbEBgQEvAf8BsQGB
+        AS8B/wGxAYEBLwH/AbEBgQEvAf8BswGBAS8B/wG2AYEBLwH/AbQBgQEvAf8BYgIXAeQUAAIvAToB/wIv
+        AdwB/wIvAdkB/wIvAcoB/wIvAcoB/wIvAcoB/wIvAcoB/wIvAcsB/wIvAc4B/wIvAcwB/wFiAhcB5JAA
+        Ay8B/wHLAYEBLwH/AbsBgQEvAf8BtgGBAS8B/wG2AYEBLwH/Ae4B3AHEBf8BvgGBAUwB/wG2AYEBLwH/
+        AbYBgQEvAf8BtgGBAS8B/wG0AYEBLwH/AUgCNAGGDAADLwH/Ai8B4AH/Ai8B0gH/Ai8BzgH/AlwB1gH/
+        Ai8BzgH/Ai8BzgH/Ai8BzgH/AjIBzgH/Ai8BzgH/Ai8BzgH/Ai8BzAH/AUgCNAGGiAABKwIoAUIB0AGG
+        AS8B/wHHAYEBLwH/AboBgQEvAf8BugGBAS8B/wG6AYEBLwH/AdABnAGBBf8BugGBAS8B/wG6AYEBLwH/
+        AboBgQEvAf8BugGBAS8B/wG2AYEBLwH/AYEBXgEvAf8IAAErAigBQgIvAeQB/wIvAdwB/wIvAdIB/wKf
+        Ae0F/wJ1Ad4B/wIvAdIB/wL0Af0F/wIyAdIB/wIvAdIB/wIvAc4B/wIvAYEB/4gAAy8B/wHSAYkBLwH/
+        Ab8BgQEvAf8BvwGBAS8B/wG/AYEBLwH/Ab8BgQEvAf8B0wGfAYEF/wG/AYEBLwH/Ab8BgQEvAf8BvwGB
+        AS8B/wG/AYEBLwH/Ab4BgQEvAf8BtgGBAS8B/wE1Ai8BVwQAAy8B/wIvAeUB/wIvAdYB/wIvAdYN/wL1
+        Af0J/wLiAfoB/wIvAdYB/wIvAdUB/wIvAc4B/wE1Ai8BV4QAAXcBXwEvAf8B1AGMAS8B/wHEAYEBLwH/
+        AcQBgQEvAf8BxAGBAS8B/wHEAYEBLwH/AdcBpAGBBf8BxAGBAS8B/wHEAYEBLwH/AcQBgQEvAf8BxAGB
+        AS8B/wHEAYEBLwH/AbgBgQEvAf8BZAIUAewEAAIvAX0B/wIvAegB/wIvAdoB/wIvAdoB/wIvAdoR/wLi
+        AfoB/wIvAdoB/wIvAdoB/wIvAdoB/wIvAdAB/wFkAhQB7IQAAYEBdAEvAf8B1wGOAS8B/wHJAYEBLwH/
+        AckBgQEvAf8ByQGBAS8B/wHJAYEBLwn/AckBgQEvAf8ByQGBAS8B/wHJAYEBLwH/AckBgQEvAf8ByQGB
+        AS8B/wG6AYEBLwH/Ay8B/wQAAi8BgQH/Ai8B6QH/Ai8B3gH/Ai8B3gH/Ai8B3gH/AvQB/Q3/AnUB5wH/
+        Ai8B3gH/Ai8B3gH/Ai8B3gH/Ai8B0gH/Ay8B/4QAAYEBZQEvAf8B2QGRAS8B/wHOAYMBLwH/Ac4BgwEv
+        Af8BzgGDAS8B/wHOAYMBLwH/Ac4BgwEvAf8B1wGcAWAB/wHOAYMBLwH/Ac4BgwEvAf8BzgGDAS8B/wHO
+        AYMBLwH/Ac4BgwEvAf8BvQGBAS8B/wFiAhcB+QQAAS8BNAGBAf8CLwHsAf8CLwHiAf8CLwHiAf8C9AH9
+        Ff8CdQHqAf8CLwHiAf8CLwHiAf8CLwHUAf8BYgIXAfmEAAEyATABLwH/AdsBlAEvAf8B0gGJAS8B/wHS
+        AYkBLwH/AdIBiQEvAf8B0gGJAS8B/wHSAYkBLwH/AesBywGQAf8B0gGJAS8B/wHSAYkBLwH/AdIBiQEv
+        Af8B0gGJAS8B/wHEAYEBLwH/Ab8BgQEvAf8BUAIyAZsEAAIvATIB/wIvAe0B/wIvAeYB/wIvAeUB/wL9
+        Af4F/wLiAfwB/wIvAeUJ/wKBAfEB/wIvAeUB/wIvAdoB/wIvAdYB/wFQAjIBm4QAAVYCLQGyAd4BmAEv
+        Af8B2wGUAS8B/wHXAY4BLwH/AdcBjgEvAf8B1wGOAS8B/wH7AfYB6wX/AdcBjgEvAf8B1wGOAS8B/wHX
+        AY4BLwH/AdYBjQEvAf8BxAGBAS8B/wGpAYEBLwH/CAABVgItAbIBLwE5Ae8B/wIvAe0B/wIvAekB/wIv
+        AekB/wLhAfwB/wIvAekB/wIvAekB/wIvAekB/wKBAfMB/wIvAekB/wIvAegB/wIvAdoB/wEvATcBnQH/
+        jAABaQFOAS8B/wHdAZcBLwH/AdsBlAEvAf8B2wGUAS8B/wHbAZQBLwH/AdsBlAEvAf8B3AGXATUB/wHb
+        AZQBLwH/AdsBlAEvAf8B1QGMAS8B/wHJAYEBLwH/AdEBiAEvAf8BKwIiAfwMAAIvAWMB/wIvAe8B/wIv
+        Ae0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAegB/wIvAd4B/wEvAUIB4gH/
+        ASsCIgH8jAABGAIXASEBkAGBAS8B/wHfAZkBLwH/AdsBlAEvAf8B2QGRAS8B/wHYAZABLwH/AdgBkAEv
+        Af8B0wGKAS8B/wHQAYYBLwH/Ac4BgwEvAf8B2gGSAS8B/wE6ATUBLwH/EAABGAIXASECLwGHAf8BLwE1
+        AfEB/wIvAe0B/wIvAewB/wIvAesB/wIvAesB/wIvAeYB/wIvAeQB/wIvAeIB/wEvAUwB5gH/Ai8BOQH/
+        lAADEAEWAVQBRgEvAf8B0gGJAS8B/wHiAZ0BLwH/AdkBkQEvAf8B1wGOAS8B/wHVAYwBLwH/AeEBmwEv
+        Af8BzgGEAS8B/wFQAjAB/hgAAxABFgIvAVMB/wEvATUB0wH/AS8BRgH0Af8CLwHsAf8CLwHpAf8BLwEw
+        AegB/wEvAU4B8AH/Ai8BzAH/AVACMAH+oAABRQI0AX0DLwH/AYEBZwEvAf8CgQEvAf8BYQFSAS8B/wFQ
+        AjAB/gMTARokAAFFAjQBfQMvAf8CLwGBAf8CLwGBAf8CLwFjAf8BUAIwAf4DEwEa/wCRAAFCAU0BPgcA
+        AT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAB/AEfAfwBHwQAAfABBwHwAQcEAAHgAQMB4AED
+        BAABwAEBAcABAQQAAYABAQGAAQEEAAGAAQABgAUAAYABAAGABQABgAEAAYAFAAGAAQABgAUAAYABAAGA
+        BQABgAEBAYABAQQAAcABAQHAAQEEAAHAAQMBwAEDBAAB4AEHAeABBwQAAfgBDwH4AQ8EAAT/BAAL
+</value>
+  </data>
+  <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>46</value>
+  </metadata>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsoleApplication.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsoleApplication.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsoleApplication.cs	(revision 4073)
@@ -0,0 +1,36 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Client.Console {
+  [Application("Hive Client Console", "Console Application for the Hive Client.")]
+  class HiveClientConsoleApplication : ApplicationBase {
+    public override void Run() {
+      Form mainForm = new HiveClientConsole();
+      Application.Run(mainForm);
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsolePlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsolePlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HiveClientConsolePlugin.cs	(revision 4073)
@@ -0,0 +1,35 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Grid {
+  [Plugin("HeuristicLab.Hive.Client.Console-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.Console-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  public class HeuristicLabHiveClientConsolePlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/LogFileReader.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/LogFileReader.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/LogFileReader.cs	(revision 4073)
@@ -0,0 +1,117 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Diagnostics;
+
+namespace HeuristicLab.Hive.Client.Console {
+  class LogFileReader {
+    string filename = "";
+    FileSystemWatcher fileSystemWatcher = null;
+    long previousSeekPosition;
+
+    public delegate void MoreDataHandler(object sender, string newData);
+    public event MoreDataHandler MoreData;
+    private int maxBytes = 1024 * 16;
+    public int MaxBytes {
+      get { return this.maxBytes; }
+      set { this.maxBytes = value; }
+    }
+
+    public LogFileReader(string filename) {
+      this.filename = filename;
+    }
+
+    public void Start() {
+      FileInfo targetFile = new FileInfo(this.filename);
+
+      previousSeekPosition = 0;
+
+      fileSystemWatcher = new FileSystemWatcher();
+      fileSystemWatcher.IncludeSubdirectories = false;
+      fileSystemWatcher.Path = targetFile.DirectoryName;
+      fileSystemWatcher.Filter = targetFile.Name;
+
+      if (!targetFile.Exists) {
+        fileSystemWatcher.Created += new FileSystemEventHandler(TargetFile_Created);
+        fileSystemWatcher.EnableRaisingEvents = true;
+      } else {
+        TargetFile_Changed(null, null);
+        StartMonitoring();
+      }
+    }
+
+    public void Stop() {
+      fileSystemWatcher.EnableRaisingEvents = false;
+      fileSystemWatcher.Dispose();
+    }
+
+    public string ReadFullFile() {
+      using (StreamReader streamReader = new StreamReader(this.filename)) {
+        return streamReader.ReadToEnd();
+      }
+    }
+
+    public void StartMonitoring() {
+        fileSystemWatcher.Changed += new FileSystemEventHandler(TargetFile_Changed);
+      fileSystemWatcher.Renamed += new RenamedEventHandler(TargetFile_Renamed);
+      fileSystemWatcher.EnableRaisingEvents = true;
+    }
+
+    public void TargetFile_Renamed(object source, FileSystemEventArgs e)
+    {
+        Stop();
+        Start();
+    }
+
+    public void TargetFile_Created(object source, FileSystemEventArgs e) {
+      StartMonitoring();
+    }
+
+    public void TargetFile_Changed(object source, FileSystemEventArgs e) {
+      //lock (this)
+      {
+        //read from current seek position to end of file
+        byte[] bytesRead = new byte[maxBytes];
+        FileStream fs = new FileStream(this.filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
+        if (fs.Length > maxBytes) {
+          this.previousSeekPosition = fs.Length - maxBytes;
+        }
+        this.previousSeekPosition = (int)fs.Seek(this.previousSeekPosition, SeekOrigin.Begin);
+        int numBytes = fs.Read(bytesRead, 0, maxBytes);
+        fs.Close();
+        this.previousSeekPosition += numBytes;
+
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < numBytes; i++) {
+          sb.Append((char)bytesRead[i]);
+        }
+
+        //call delegates with the string
+        this.MoreData(this, sb.ToString());
+      }
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Client.Console")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("1131CD44-0FDC-4f7b-9D7E-8029B26EAE05")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/DataSources/Calendar.Appointment.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/DataSources/Calendar.Appointment.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/DataSources/Calendar.Appointment.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="Appointment" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>Calendar.Appointment, Calendar.DayView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Resources.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Resources.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Resources.Designer.cs	(revision 4073)
@@ -0,0 +1,91 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Client.Console.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Hive.Client.Console.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        internal static System.Drawing.Bitmap Disaster_warning_48 {
+            get {
+                object obj = ResourceManager.GetObject("Disaster_warning_48", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap exit_48 {
+            get {
+                object obj = ResourceManager.GetObject("exit_48", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap Global_network_48 {
+            get {
+                object obj = ResourceManager.GetObject("Global_network_48", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap schedule {
+            get {
+                object obj = ResourceManager.GetObject("schedule", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Resources.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Resources.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Resources.resx	(revision 4073)
@@ -0,0 +1,133 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="Disaster_warning_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Disaster-warning-48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="exit_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\exit-48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Global_network_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Global-network-48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="schedule" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\schedule.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Settings.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Settings.Designer.cs	(revision 4073)
@@ -0,0 +1,38 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Client.Console.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("10.0.0.1")]
+        public string IpAdress {
+            get {
+                return ((string)(this["IpAdress"]));
+            }
+            set {
+                this["IpAdress"] = value;
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Settings.settings
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Settings.settings	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Properties/Settings.settings	(revision 4073)
@@ -0,0 +1,9 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="HeuristicLab.Hive.Client.Console.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="IpAdress" Type="System.String" Scope="User">
+      <Value Profile="(Default)">10.0.0.1</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.Designer.cs	(revision 4073)
@@ -0,0 +1,318 @@
+﻿namespace HeuristicLab.Hive.Client.Console
+{
+  partial class Recurrence
+  {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing)
+    {
+      if (disposing && (components != null))
+      {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent()
+    {
+      this.gbAppointment = new System.Windows.Forms.GroupBox();
+      this.chbade = new System.Windows.Forms.CheckBox();
+      this.dtpEnd = new System.Windows.Forms.DateTimePicker();
+      this.dtpToTime = new System.Windows.Forms.DateTimePicker();
+      this.label5 = new System.Windows.Forms.Label();
+      this.dtpStart = new System.Windows.Forms.DateTimePicker();
+      this.dtpFromTime = new System.Windows.Forms.DateTimePicker();
+      this.label6 = new System.Windows.Forms.Label();
+      this.txtDays = new System.Windows.Forms.TextBox();
+      this.label4 = new System.Windows.Forms.Label();
+      this.label7 = new System.Windows.Forms.Label();
+      this.btSaveRecurrence = new System.Windows.Forms.Button();
+      this.btCancelRecurrence = new System.Windows.Forms.Button();
+      this.gbWeekly = new System.Windows.Forms.GroupBox();
+      this.cbSunday = new System.Windows.Forms.CheckBox();
+      this.cbSaturday = new System.Windows.Forms.CheckBox();
+      this.cbFriday = new System.Windows.Forms.CheckBox();
+      this.cbThursday = new System.Windows.Forms.CheckBox();
+      this.cbWednesday = new System.Windows.Forms.CheckBox();
+      this.cbTuesday = new System.Windows.Forms.CheckBox();
+      this.cbMonday = new System.Windows.Forms.CheckBox();
+      this.gbAppointment.SuspendLayout();
+      this.gbWeekly.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // gbAppointment
+      // 
+      this.gbAppointment.Controls.Add(this.chbade);
+      this.gbAppointment.Controls.Add(this.dtpEnd);
+      this.gbAppointment.Controls.Add(this.dtpToTime);
+      this.gbAppointment.Controls.Add(this.label5);
+      this.gbAppointment.Controls.Add(this.dtpStart);
+      this.gbAppointment.Controls.Add(this.dtpFromTime);
+      this.gbAppointment.Controls.Add(this.label6);
+      this.gbAppointment.Location = new System.Drawing.Point(2, 2);
+      this.gbAppointment.Name = "gbAppointment";
+      this.gbAppointment.Size = new System.Drawing.Size(386, 109);
+      this.gbAppointment.TabIndex = 39;
+      this.gbAppointment.TabStop = false;
+      this.gbAppointment.Text = "Appointment";
+      // 
+      // chbade
+      // 
+      this.chbade.AutoSize = true;
+      this.chbade.Location = new System.Drawing.Point(113, 86);
+      this.chbade.Name = "chbade";
+      this.chbade.Size = new System.Drawing.Size(90, 17);
+      this.chbade.TabIndex = 39;
+      this.chbade.Text = "All Day Event";
+      this.chbade.UseVisualStyleBackColor = true;
+      // 
+      // dtpEnd
+      // 
+      this.dtpEnd.Format = System.Windows.Forms.DateTimePickerFormat.Short;
+      this.dtpEnd.Location = new System.Drawing.Point(113, 56);
+      this.dtpEnd.Name = "dtpEnd";
+      this.dtpEnd.Size = new System.Drawing.Size(91, 20);
+      this.dtpEnd.TabIndex = 29;
+      // 
+      // dtpToTime
+      // 
+      this.dtpToTime.CustomFormat = "HH:00";
+      this.dtpToTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpToTime.Location = new System.Drawing.Point(226, 56);
+      this.dtpToTime.Name = "dtpToTime";
+      this.dtpToTime.ShowUpDown = true;
+      this.dtpToTime.Size = new System.Drawing.Size(73, 20);
+      this.dtpToTime.TabIndex = 38;
+      // 
+      // label5
+      // 
+      this.label5.AutoSize = true;
+      this.label5.Location = new System.Drawing.Point(58, 60);
+      this.label5.Name = "label5";
+      this.label5.Size = new System.Drawing.Size(55, 13);
+      this.label5.TabIndex = 27;
+      this.label5.Text = "End Date:";
+      // 
+      // dtpStart
+      // 
+      this.dtpStart.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpStart.Location = new System.Drawing.Point(113, 19);
+      this.dtpStart.Name = "dtpStart";
+      this.dtpStart.Size = new System.Drawing.Size(89, 20);
+      this.dtpStart.TabIndex = 28;
+      // 
+      // dtpFromTime
+      // 
+      this.dtpFromTime.CustomFormat = "HH:00";
+      this.dtpFromTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpFromTime.Location = new System.Drawing.Point(226, 19);
+      this.dtpFromTime.Name = "dtpFromTime";
+      this.dtpFromTime.ShowUpDown = true;
+      this.dtpFromTime.Size = new System.Drawing.Size(73, 20);
+      this.dtpFromTime.TabIndex = 30;
+      // 
+      // label6
+      // 
+      this.label6.AutoSize = true;
+      this.label6.Location = new System.Drawing.Point(58, 23);
+      this.label6.Name = "label6";
+      this.label6.Size = new System.Drawing.Size(58, 13);
+      this.label6.TabIndex = 25;
+      this.label6.Text = "Start Date:";
+      // 
+      // txtDays
+      // 
+      this.txtDays.Location = new System.Drawing.Point(160, 13);
+      this.txtDays.Name = "txtDays";
+      this.txtDays.Size = new System.Drawing.Size(30, 20);
+      this.txtDays.TabIndex = 24;
+      this.txtDays.Text = "1";
+      this.txtDays.Visible = false;
+      // 
+      // label4
+      // 
+      this.label4.AutoSize = true;
+      this.label4.Location = new System.Drawing.Point(120, 16);
+      this.label4.Name = "label4";
+      this.label4.Size = new System.Drawing.Size(34, 13);
+      this.label4.TabIndex = 23;
+      this.label4.Text = "Every";
+      this.label4.Visible = false;
+      // 
+      // label7
+      // 
+      this.label7.AutoSize = true;
+      this.label7.Location = new System.Drawing.Point(196, 16);
+      this.label7.Name = "label7";
+      this.label7.Size = new System.Drawing.Size(59, 13);
+      this.label7.TabIndex = 25;
+      this.label7.Text = "week(s) on";
+      this.label7.Visible = false;
+      // 
+      // btSaveRecurrence
+      // 
+      this.btSaveRecurrence.Location = new System.Drawing.Point(2, 217);
+      this.btSaveRecurrence.Name = "btSaveRecurrence";
+      this.btSaveRecurrence.Size = new System.Drawing.Size(147, 23);
+      this.btSaveRecurrence.TabIndex = 43;
+      this.btSaveRecurrence.Text = "Save";
+      this.btSaveRecurrence.UseVisualStyleBackColor = true;
+      this.btSaveRecurrence.Click += new System.EventHandler(this.btSaveRecurrence_Click);
+      // 
+      // btCancelRecurrence
+      // 
+      this.btCancelRecurrence.Location = new System.Drawing.Point(241, 217);
+      this.btCancelRecurrence.Name = "btCancelRecurrence";
+      this.btCancelRecurrence.Size = new System.Drawing.Size(147, 23);
+      this.btCancelRecurrence.TabIndex = 44;
+      this.btCancelRecurrence.Text = "Cancel";
+      this.btCancelRecurrence.UseVisualStyleBackColor = true;
+      this.btCancelRecurrence.Click += new System.EventHandler(this.btCancelRecurrence_Click);
+      // 
+      // gbWeekly
+      // 
+      this.gbWeekly.Controls.Add(this.label7);
+      this.gbWeekly.Controls.Add(this.cbSunday);
+      this.gbWeekly.Controls.Add(this.txtDays);
+      this.gbWeekly.Controls.Add(this.cbSaturday);
+      this.gbWeekly.Controls.Add(this.cbFriday);
+      this.gbWeekly.Controls.Add(this.cbThursday);
+      this.gbWeekly.Controls.Add(this.label4);
+      this.gbWeekly.Controls.Add(this.cbWednesday);
+      this.gbWeekly.Controls.Add(this.cbTuesday);
+      this.gbWeekly.Controls.Add(this.cbMonday);
+      this.gbWeekly.Location = new System.Drawing.Point(2, 111);
+      this.gbWeekly.Name = "gbWeekly";
+      this.gbWeekly.Size = new System.Drawing.Size(386, 100);
+      this.gbWeekly.TabIndex = 42;
+      this.gbWeekly.TabStop = false;
+      this.gbWeekly.Text = "Days of week";
+      // 
+      // cbSunday
+      // 
+      this.cbSunday.AutoSize = true;
+      this.cbSunday.Location = new System.Drawing.Point(199, 65);
+      this.cbSunday.Name = "cbSunday";
+      this.cbSunday.Size = new System.Drawing.Size(62, 17);
+      this.cbSunday.TabIndex = 6;
+      this.cbSunday.Text = "Sunday";
+      this.cbSunday.UseVisualStyleBackColor = true;
+      // 
+      // cbSaturday
+      // 
+      this.cbSaturday.AutoSize = true;
+      this.cbSaturday.Location = new System.Drawing.Point(122, 65);
+      this.cbSaturday.Name = "cbSaturday";
+      this.cbSaturday.Size = new System.Drawing.Size(68, 17);
+      this.cbSaturday.TabIndex = 5;
+      this.cbSaturday.Text = "Saturday";
+      this.cbSaturday.UseVisualStyleBackColor = true;
+      // 
+      // cbFriday
+      // 
+      this.cbFriday.AutoSize = true;
+      this.cbFriday.Location = new System.Drawing.Point(37, 65);
+      this.cbFriday.Name = "cbFriday";
+      this.cbFriday.Size = new System.Drawing.Size(54, 17);
+      this.cbFriday.TabIndex = 4;
+      this.cbFriday.Text = "Friday";
+      this.cbFriday.UseVisualStyleBackColor = true;
+      // 
+      // cbThursday
+      // 
+      this.cbThursday.AutoSize = true;
+      this.cbThursday.Location = new System.Drawing.Point(289, 40);
+      this.cbThursday.Name = "cbThursday";
+      this.cbThursday.Size = new System.Drawing.Size(70, 17);
+      this.cbThursday.TabIndex = 3;
+      this.cbThursday.Text = "Thursday";
+      this.cbThursday.UseVisualStyleBackColor = true;
+      // 
+      // cbWednesday
+      // 
+      this.cbWednesday.AutoSize = true;
+      this.cbWednesday.Location = new System.Drawing.Point(199, 42);
+      this.cbWednesday.Name = "cbWednesday";
+      this.cbWednesday.Size = new System.Drawing.Size(86, 17);
+      this.cbWednesday.TabIndex = 2;
+      this.cbWednesday.Text = "Wednesday ";
+      this.cbWednesday.UseVisualStyleBackColor = true;
+      // 
+      // cbTuesday
+      // 
+      this.cbTuesday.AutoSize = true;
+      this.cbTuesday.Location = new System.Drawing.Point(123, 42);
+      this.cbTuesday.Name = "cbTuesday";
+      this.cbTuesday.Size = new System.Drawing.Size(67, 17);
+      this.cbTuesday.TabIndex = 1;
+      this.cbTuesday.Text = "Tuesday";
+      this.cbTuesday.UseVisualStyleBackColor = true;
+      // 
+      // cbMonday
+      // 
+      this.cbMonday.AutoSize = true;
+      this.cbMonday.Location = new System.Drawing.Point(37, 42);
+      this.cbMonday.Name = "cbMonday";
+      this.cbMonday.Size = new System.Drawing.Size(64, 17);
+      this.cbMonday.TabIndex = 0;
+      this.cbMonday.Text = "Monday";
+      this.cbMonday.UseVisualStyleBackColor = true;
+      // 
+      // Recurrence
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(393, 243);
+      this.Controls.Add(this.gbWeekly);
+      this.Controls.Add(this.btCancelRecurrence);
+      this.Controls.Add(this.btSaveRecurrence);
+      this.Controls.Add(this.gbAppointment);
+      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+      this.Name = "Recurrence";
+      this.Text = "Recurrence";
+      this.gbAppointment.ResumeLayout(false);
+      this.gbAppointment.PerformLayout();
+      this.gbWeekly.ResumeLayout(false);
+      this.gbWeekly.PerformLayout();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.GroupBox gbAppointment;
+    private System.Windows.Forms.TextBox txtDays;
+    private System.Windows.Forms.Label label4;
+    private System.Windows.Forms.DateTimePicker dtpEnd;
+    private System.Windows.Forms.DateTimePicker dtpStart;
+    private System.Windows.Forms.Label label5;
+    private System.Windows.Forms.Label label6;
+    private System.Windows.Forms.Label label7;
+    private System.Windows.Forms.Button btSaveRecurrence;
+    private System.Windows.Forms.Button btCancelRecurrence;
+    private System.Windows.Forms.DateTimePicker dtpFromTime;
+    private System.Windows.Forms.DateTimePicker dtpToTime;
+    private System.Windows.Forms.CheckBox chbade;
+    private System.Windows.Forms.GroupBox gbWeekly;
+    private System.Windows.Forms.CheckBox cbSunday;
+    private System.Windows.Forms.CheckBox cbSaturday;
+    private System.Windows.Forms.CheckBox cbFriday;
+    private System.Windows.Forms.CheckBox cbThursday;
+    private System.Windows.Forms.CheckBox cbWednesday;
+    private System.Windows.Forms.CheckBox cbTuesday;
+    private System.Windows.Forms.CheckBox cbMonday;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.cs	(revision 4073)
@@ -0,0 +1,125 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Client.Console
+{
+
+  public enum RecurrenceMode
+  {
+    Daily,
+    Weekly
+  }
+
+  public partial class Recurrence : Form
+  {
+
+    public OnDialogClosedDelegate dialogClosedDelegate;
+
+    public Recurrence()
+    {
+      InitializeComponent();
+    }
+
+    private void btCancelRecurrence_Click(object sender, EventArgs e)
+    {
+      this.Close();
+    }
+
+    private void btSaveRecurrence_Click(object sender, EventArgs e)
+    {
+      DateTime dateFrom, dateTo;
+      RecurrenceMode mode = RecurrenceMode.Daily;
+      int incWeek = 0;
+      HashSet<DayOfWeek> days = new HashSet<DayOfWeek>();
+
+      days = GetDays();
+
+      //check if valid
+      if (InputIsValid())
+      {
+        //set entity
+
+        dateFrom = DateTime.Parse(dtpStart.Text + " " + dtpFromTime.Text);
+        dateTo = DateTime.Parse(dtpEnd.Text + " " + dtpToTime.Text);
+
+        if (int.TryParse(txtDays.Text, out incWeek))
+          mode = RecurrenceMode.Weekly;
+        else
+          mode = RecurrenceMode.Daily;
+
+        RecurrentEvent recurrentEvent = new RecurrentEvent()
+        {
+          DateFrom = dateFrom,
+          DateTo = dateTo,
+          AllDay = chbade.Checked,
+          WeekDays = days,
+          IncWeeks = incWeek,
+        };
+
+        //fire delegate and close the dialog
+        dialogClosedDelegate(recurrentEvent);
+        this.Close();
+      }
+      else
+        MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+    }
+
+    private HashSet<DayOfWeek> GetDays()
+    {
+      HashSet<DayOfWeek> days = new HashSet<DayOfWeek>();
+
+      if (cbMonday.Checked)
+        days.Add(DayOfWeek.Monday);
+      if (cbTuesday.Checked)
+        days.Add(DayOfWeek.Tuesday);
+      if (cbWednesday.Checked)
+        days.Add(DayOfWeek.Wednesday);
+      if (cbThursday.Checked)
+        days.Add(DayOfWeek.Thursday);
+      if (cbFriday.Checked)
+        days.Add(DayOfWeek.Friday);
+      if (cbSaturday.Checked)
+        days.Add(DayOfWeek.Saturday);
+      if (cbSunday.Checked)
+        days.Add(DayOfWeek.Sunday);
+
+      return days;
+    }
+
+    private bool InputIsValid()
+    {
+      DateTime dateFrom, dateTo;
+      int i = 0;
+
+      dateFrom = DateTime.Parse(dtpStart.Text + " " + dtpFromTime.Text);
+      dateTo = DateTime.Parse(dtpEnd.Text + " " + dtpToTime.Text);
+
+      if (dateFrom < dateTo && dateFrom.TimeOfDay < dateTo.TimeOfDay && int.TryParse(txtDays.Text, out i))
+        return true;
+      else
+        return false;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Recurrence.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/ServerProxy.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/ServerProxy.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/ServerProxy.cs	(revision 4073)
@@ -0,0 +1,551 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Hive.Client.Console {
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "StatusCommons", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+      "leService")]
+  public partial class StatusCommons : object, System.Runtime.Serialization.IExtensibleDataObject {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private System.Guid ClientGuidk__BackingFieldField;
+
+    private System.DateTime ConnectedSincek__BackingFieldField;
+
+    private int JobsAbortedk__BackingFieldField;
+
+    private int JobsDonek__BackingFieldField;
+
+    private int JobsFetchedk__BackingFieldField;
+
+    private HeuristicLab.Hive.Client.Core.ClientConsoleService.JobStatus[] Jobsk__BackingFieldField;
+
+    private HeuristicLab.Hive.Client.Common.NetworkEnumWcfConnState Statusk__BackingFieldField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<ClientGuid>k__BackingField", IsRequired = true)]
+    public System.Guid ClientGuidk__BackingField {
+      get {
+        return this.ClientGuidk__BackingFieldField;
+      }
+      set {
+        this.ClientGuidk__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<ConnectedSince>k__BackingField", IsRequired = true)]
+    public System.DateTime ConnectedSincek__BackingField {
+      get {
+        return this.ConnectedSincek__BackingFieldField;
+      }
+      set {
+        this.ConnectedSincek__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<JobsAborted>k__BackingField", IsRequired = true)]
+    public int JobsAbortedk__BackingField {
+      get {
+        return this.JobsAbortedk__BackingFieldField;
+      }
+      set {
+        this.JobsAbortedk__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<JobsDone>k__BackingField", IsRequired = true)]
+    public int JobsDonek__BackingField {
+      get {
+        return this.JobsDonek__BackingFieldField;
+      }
+      set {
+        this.JobsDonek__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<JobsFetched>k__BackingField", IsRequired = true)]
+    public int JobsFetchedk__BackingField {
+      get {
+        return this.JobsFetchedk__BackingFieldField;
+      }
+      set {
+        this.JobsFetchedk__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<Jobs>k__BackingField", IsRequired = true)]
+    public HeuristicLab.Hive.Client.Core.ClientConsoleService.JobStatus[] Jobsk__BackingField {
+      get {
+        return this.Jobsk__BackingFieldField;
+      }
+      set {
+        this.Jobsk__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<Status>k__BackingField", IsRequired = true)]
+    public HeuristicLab.Hive.Client.Common.NetworkEnumWcfConnState Statusk__BackingField {
+      get {
+        return this.Statusk__BackingFieldField;
+      }
+      set {
+        this.Statusk__BackingFieldField = value;
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "JobStatus", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+      "leService")]
+  public partial class JobStatus : object, System.Runtime.Serialization.IExtensibleDataObject {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private long JobIdk__BackingFieldField;
+
+    private double Progressk__BackingFieldField;
+
+    private System.DateTime Sincek__BackingFieldField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<JobId>k__BackingField", IsRequired = true)]
+    public long JobIdk__BackingField {
+      get {
+        return this.JobIdk__BackingFieldField;
+      }
+      set {
+        this.JobIdk__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<Progress>k__BackingField", IsRequired = true)]
+    public double Progressk__BackingField {
+      get {
+        return this.Progressk__BackingFieldField;
+      }
+      set {
+        this.Progressk__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<Since>k__BackingField", IsRequired = true)]
+    public System.DateTime Sincek__BackingField {
+      get {
+        return this.Sincek__BackingFieldField;
+      }
+      set {
+        this.Sincek__BackingFieldField = value;
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ConnectionContainer", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+      "leService")]
+  public partial class ConnectionContainer : object, System.Runtime.Serialization.IExtensibleDataObject {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private string IPAdressk__BackingFieldField;
+
+    private int Portk__BackingFieldField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<IPAdress>k__BackingField", IsRequired = true)]
+    public string IPAdressk__BackingField {
+      get {
+        return this.IPAdressk__BackingFieldField;
+      }
+      set {
+        this.IPAdressk__BackingFieldField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute(Name = "<Port>k__BackingField", IsRequired = true)]
+    public int Portk__BackingField {
+      get {
+        return this.Portk__BackingFieldField;
+      }
+      set {
+        this.Portk__BackingFieldField = value;
+      }
+    }
+  }
+}
+namespace HeuristicLab.Hive.Client.Common {
+  using System.Runtime.Serialization;
+
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NetworkEnum.WcfConnState", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Common")]
+  public enum NetworkEnumWcfConnState : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Connected = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Disconnected = 1,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Failed = 2,
+  }
+}
+
+
+[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+[System.ServiceModel.ServiceContractAttribute(ConfigurationName = "IClientConsoleCommunicator")]
+public interface IClientConsoleCommunicator {
+
+  [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/GetStatusInfosResponse")]
+  HeuristicLab.Hive.Client.Core.ClientConsoleService.StatusCommons GetStatusInfos();
+
+  [System.ServiceModel.OperationContractAttribute(AsyncPattern = true, Action = "http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/GetStatusInfosResponse")]
+  System.IAsyncResult BeginGetStatusInfos(System.AsyncCallback callback, object asyncState);
+
+  HeuristicLab.Hive.Client.Core.ClientConsoleService.StatusCommons EndGetStatusInfos(System.IAsyncResult result);
+
+  [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IClientConsoleCommunicator/GetConnection", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/GetConnectionResponse")]
+  HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer GetConnection();
+
+  [System.ServiceModel.OperationContractAttribute(AsyncPattern = true, Action = "http://tempuri.org/IClientConsoleCommunicator/GetConnection", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/GetConnectionResponse")]
+  System.IAsyncResult BeginGetConnection(System.AsyncCallback callback, object asyncState);
+
+  HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer EndGetConnection(System.IAsyncResult result);
+
+  [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IClientConsoleCommunicator/SetConnection", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/SetConnectionResponse")]
+  void SetConnection(HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer container);
+
+  [System.ServiceModel.OperationContractAttribute(AsyncPattern = true, Action = "http://tempuri.org/IClientConsoleCommunicator/SetConnection", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/SetConnectionResponse")]
+  System.IAsyncResult BeginSetConnection(HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer container, System.AsyncCallback callback, object asyncState);
+
+  void EndSetConnection(System.IAsyncResult result);
+
+  [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IClientConsoleCommunicator/Disconnect", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/DisconnectResponse")]
+  void Disconnect();
+
+  [System.ServiceModel.OperationContractAttribute(AsyncPattern = true, Action = "http://tempuri.org/IClientConsoleCommunicator/Disconnect", ReplyAction = "http://tempuri.org/IClientConsoleCommunicator/DisconnectResponse")]
+  System.IAsyncResult BeginDisconnect(System.AsyncCallback callback, object asyncState);
+
+  void EndDisconnect(System.IAsyncResult result);
+}
+
+[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+public interface IClientConsoleCommunicatorChannel : IClientConsoleCommunicator, System.ServiceModel.IClientChannel {
+}
+
+[System.Diagnostics.DebuggerStepThroughAttribute()]
+[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+public partial class GetStatusInfosCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+  private object[] results;
+
+  public GetStatusInfosCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+    base(exception, cancelled, userState) {
+    this.results = results;
+  }
+
+  public HeuristicLab.Hive.Client.Core.ClientConsoleService.StatusCommons Result {
+    get {
+      base.RaiseExceptionIfNecessary();
+      return ((HeuristicLab.Hive.Client.Core.ClientConsoleService.StatusCommons)(this.results[0]));
+    }
+  }
+}
+
+[System.Diagnostics.DebuggerStepThroughAttribute()]
+[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+public partial class GetConnectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+  private object[] results;
+
+  public GetConnectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+    base(exception, cancelled, userState) {
+    this.results = results;
+  }
+
+  public HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer Result {
+    get {
+      base.RaiseExceptionIfNecessary();
+      return ((HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer)(this.results[0]));
+    }
+  }
+}
+
+[System.Diagnostics.DebuggerStepThroughAttribute()]
+[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+public partial class ClientConsoleCommunicatorClient : System.ServiceModel.ClientBase<IClientConsoleCommunicator>, IClientConsoleCommunicator {
+
+  private BeginOperationDelegate onBeginGetStatusInfosDelegate;
+
+  private EndOperationDelegate onEndGetStatusInfosDelegate;
+
+  private System.Threading.SendOrPostCallback onGetStatusInfosCompletedDelegate;
+
+  private BeginOperationDelegate onBeginGetConnectionDelegate;
+
+  private EndOperationDelegate onEndGetConnectionDelegate;
+
+  private System.Threading.SendOrPostCallback onGetConnectionCompletedDelegate;
+
+  private BeginOperationDelegate onBeginSetConnectionDelegate;
+
+  private EndOperationDelegate onEndSetConnectionDelegate;
+
+  private System.Threading.SendOrPostCallback onSetConnectionCompletedDelegate;
+
+  private BeginOperationDelegate onBeginDisconnectDelegate;
+
+  private EndOperationDelegate onEndDisconnectDelegate;
+
+  private System.Threading.SendOrPostCallback onDisconnectCompletedDelegate;
+
+  public ClientConsoleCommunicatorClient() {
+  }
+
+  public ClientConsoleCommunicatorClient(string endpointConfigurationName) :
+    base(endpointConfigurationName) {
+  }
+
+  public ClientConsoleCommunicatorClient(string endpointConfigurationName, string remoteAddress) :
+    base(endpointConfigurationName, remoteAddress) {
+  }
+
+  public ClientConsoleCommunicatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+    base(endpointConfigurationName, remoteAddress) {
+  }
+
+  public ClientConsoleCommunicatorClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+    base(binding, remoteAddress) {
+  }
+
+  public event System.EventHandler<GetStatusInfosCompletedEventArgs> GetStatusInfosCompleted;
+
+  public event System.EventHandler<GetConnectionCompletedEventArgs> GetConnectionCompleted;
+
+  public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SetConnectionCompleted;
+
+  public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> DisconnectCompleted;
+
+  public HeuristicLab.Hive.Client.Core.ClientConsoleService.StatusCommons GetStatusInfos() {
+    return base.Channel.GetStatusInfos();
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public System.IAsyncResult BeginGetStatusInfos(System.AsyncCallback callback, object asyncState) {
+    return base.Channel.BeginGetStatusInfos(callback, asyncState);
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public HeuristicLab.Hive.Client.Core.ClientConsoleService.StatusCommons EndGetStatusInfos(System.IAsyncResult result) {
+    return base.Channel.EndGetStatusInfos(result);
+  }
+
+  private System.IAsyncResult OnBeginGetStatusInfos(object[] inValues, System.AsyncCallback callback, object asyncState) {
+    return this.BeginGetStatusInfos(callback, asyncState);
+  }
+
+  private object[] OnEndGetStatusInfos(System.IAsyncResult result) {
+    HeuristicLab.Hive.Client.Core.ClientConsoleService.StatusCommons retVal = this.EndGetStatusInfos(result);
+    return new object[] {
+                retVal};
+  }
+
+  private void OnGetStatusInfosCompleted(object state) {
+    if ((this.GetStatusInfosCompleted != null)) {
+      InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+      this.GetStatusInfosCompleted(this, new GetStatusInfosCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+    }
+  }
+
+  public void GetStatusInfosAsync() {
+    this.GetStatusInfosAsync(null);
+  }
+
+  public void GetStatusInfosAsync(object userState) {
+    if ((this.onBeginGetStatusInfosDelegate == null)) {
+      this.onBeginGetStatusInfosDelegate = new BeginOperationDelegate(this.OnBeginGetStatusInfos);
+    }
+    if ((this.onEndGetStatusInfosDelegate == null)) {
+      this.onEndGetStatusInfosDelegate = new EndOperationDelegate(this.OnEndGetStatusInfos);
+    }
+    if ((this.onGetStatusInfosCompletedDelegate == null)) {
+      this.onGetStatusInfosCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetStatusInfosCompleted);
+    }
+    base.InvokeAsync(this.onBeginGetStatusInfosDelegate, null, this.onEndGetStatusInfosDelegate, this.onGetStatusInfosCompletedDelegate, userState);
+  }
+
+  public HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer GetConnection() {
+    return base.Channel.GetConnection();
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public System.IAsyncResult BeginGetConnection(System.AsyncCallback callback, object asyncState) {
+    return base.Channel.BeginGetConnection(callback, asyncState);
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer EndGetConnection(System.IAsyncResult result) {
+    return base.Channel.EndGetConnection(result);
+  }
+
+  private System.IAsyncResult OnBeginGetConnection(object[] inValues, System.AsyncCallback callback, object asyncState) {
+    return this.BeginGetConnection(callback, asyncState);
+  }
+
+  private object[] OnEndGetConnection(System.IAsyncResult result) {
+    HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer retVal = this.EndGetConnection(result);
+    return new object[] {
+                retVal};
+  }
+
+  private void OnGetConnectionCompleted(object state) {
+    if ((this.GetConnectionCompleted != null)) {
+      InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+      this.GetConnectionCompleted(this, new GetConnectionCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+    }
+  }
+
+  public void GetConnectionAsync() {
+    this.GetConnectionAsync(null);
+  }
+
+  public void GetConnectionAsync(object userState) {
+    if ((this.onBeginGetConnectionDelegate == null)) {
+      this.onBeginGetConnectionDelegate = new BeginOperationDelegate(this.OnBeginGetConnection);
+    }
+    if ((this.onEndGetConnectionDelegate == null)) {
+      this.onEndGetConnectionDelegate = new EndOperationDelegate(this.OnEndGetConnection);
+    }
+    if ((this.onGetConnectionCompletedDelegate == null)) {
+      this.onGetConnectionCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetConnectionCompleted);
+    }
+    base.InvokeAsync(this.onBeginGetConnectionDelegate, null, this.onEndGetConnectionDelegate, this.onGetConnectionCompletedDelegate, userState);
+  }
+
+  public void SetConnection(HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer container) {
+    base.Channel.SetConnection(container);
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public System.IAsyncResult BeginSetConnection(HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer container, System.AsyncCallback callback, object asyncState) {
+    return base.Channel.BeginSetConnection(container, callback, asyncState);
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public void EndSetConnection(System.IAsyncResult result) {
+    base.Channel.EndSetConnection(result);
+  }
+
+  private System.IAsyncResult OnBeginSetConnection(object[] inValues, System.AsyncCallback callback, object asyncState) {
+    HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer container = ((HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer)(inValues[0]));
+    return this.BeginSetConnection(container, callback, asyncState);
+  }
+
+  private object[] OnEndSetConnection(System.IAsyncResult result) {
+    this.EndSetConnection(result);
+    return null;
+  }
+
+  private void OnSetConnectionCompleted(object state) {
+    if ((this.SetConnectionCompleted != null)) {
+      InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+      this.SetConnectionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+    }
+  }
+
+  public void SetConnectionAsync(HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer container) {
+    this.SetConnectionAsync(container, null);
+  }
+
+  public void SetConnectionAsync(HeuristicLab.Hive.Client.Core.ClientConsoleService.ConnectionContainer container, object userState) {
+    if ((this.onBeginSetConnectionDelegate == null)) {
+      this.onBeginSetConnectionDelegate = new BeginOperationDelegate(this.OnBeginSetConnection);
+    }
+    if ((this.onEndSetConnectionDelegate == null)) {
+      this.onEndSetConnectionDelegate = new EndOperationDelegate(this.OnEndSetConnection);
+    }
+    if ((this.onSetConnectionCompletedDelegate == null)) {
+      this.onSetConnectionCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSetConnectionCompleted);
+    }
+    base.InvokeAsync(this.onBeginSetConnectionDelegate, new object[] {
+                    container}, this.onEndSetConnectionDelegate, this.onSetConnectionCompletedDelegate, userState);
+  }
+
+  public void Disconnect() {
+    base.Channel.Disconnect();
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public System.IAsyncResult BeginDisconnect(System.AsyncCallback callback, object asyncState) {
+    return base.Channel.BeginDisconnect(callback, asyncState);
+  }
+
+  [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+  public void EndDisconnect(System.IAsyncResult result) {
+    base.Channel.EndDisconnect(result);
+  }
+
+  private System.IAsyncResult OnBeginDisconnect(object[] inValues, System.AsyncCallback callback, object asyncState) {
+    return this.BeginDisconnect(callback, asyncState);
+  }
+
+  private object[] OnEndDisconnect(System.IAsyncResult result) {
+    this.EndDisconnect(result);
+    return null;
+  }
+
+  private void OnDisconnectCompleted(object state) {
+    if ((this.DisconnectCompleted != null)) {
+      InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+      this.DisconnectCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+    }
+  }
+
+  public void DisconnectAsync() {
+    this.DisconnectAsync(null);
+  }
+
+  public void DisconnectAsync(object userState) {
+    if ((this.onBeginDisconnectDelegate == null)) {
+      this.onBeginDisconnectDelegate = new BeginOperationDelegate(this.OnBeginDisconnect);
+    }
+    if ((this.onEndDisconnectDelegate == null)) {
+      this.onEndDisconnectDelegate = new EndOperationDelegate(this.OnEndDisconnect);
+    }
+    if ((this.onDisconnectCompletedDelegate == null)) {
+      this.onDisconnectCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnDisconnectCompleted);
+    }
+    base.InvokeAsync(this.onBeginDisconnectDelegate, null, this.onEndDisconnectDelegate, this.onDisconnectCompletedDelegate, userState);
+  }
+
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Calendar1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Calendar1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Calendar1.xsd	(revision 4073)
@@ -0,0 +1,32 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/Calendar" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/Calendar" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/System.Drawing" />
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="ArrayOfAppointment">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="Appointment" nillable="true" type="tns:Appointment" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfAppointment" nillable="true" type="tns:ArrayOfAppointment" />
+  <xs:complexType name="Appointment">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="AllDayEvent" type="xs:boolean" />
+      <xs:element minOccurs="0" name="AppointmentId" type="xs:int" />
+      <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/System.Drawing" minOccurs="0" name="BorderColor" type="q1:Color" />
+      <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/System.Drawing" minOccurs="0" name="Color" type="q2:Color" />
+      <xs:element minOccurs="0" name="DrawBorder" type="xs:boolean" />
+      <xs:element minOccurs="0" name="EndDate" type="xs:dateTime" />
+      <xs:element minOccurs="0" name="Group" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="Layer" type="xs:int" />
+      <xs:element minOccurs="0" name="Location" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="Locked" type="xs:boolean" />
+      <xs:element minOccurs="0" name="Note" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="Recurring" type="xs:boolean" />
+      <xs:element minOccurs="0" name="RecurringId" type="ser:guid" />
+      <xs:element minOccurs="0" name="StartDate" type="xs:dateTime" />
+      <xs:element minOccurs="0" name="Subject" nillable="true" type="xs:string" />
+      <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/System.Drawing" minOccurs="0" name="TextColor" type="q3:Color" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="Appointment" nillable="true" type="tns:Appointment" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Common.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Common.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Common.xsd	(revision 4073)
@@ -0,0 +1,12 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Common" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Common" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:simpleType name="NetworkEnum.WcfConnState">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Connected" />
+      <xs:enumeration value="Disconnected" />
+      <xs:enumeration value="Failed" />
+      <xs:enumeration value="Loggedin" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="NetworkEnum.WcfConnState" nillable="true" type="tns:NetworkEnum.WcfConnState" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ConnectionContainer" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer, Service References.ClientService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Console.ClientService.StatusCommons.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Console.ClientService.StatusCommons.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Console.ClientService.StatusCommons.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="StatusCommons" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Client.Console.ClientService.StatusCommons, Service References.ClientService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd	(revision 4073)
@@ -0,0 +1,40 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Common" />
+  <xs:complexType name="StatusCommons">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="ClientGuid" type="ser:guid" />
+      <xs:element minOccurs="0" name="ConnectedSince" type="xs:dateTime" />
+      <xs:element minOccurs="0" name="FreeCores" type="xs:int" />
+      <xs:element minOccurs="0" name="Jobs" nillable="true" type="tns:ArrayOfJobStatus" />
+      <xs:element minOccurs="0" name="JobsAborted" type="xs:int" />
+      <xs:element minOccurs="0" name="JobsDone" type="xs:int" />
+      <xs:element minOccurs="0" name="JobsFetched" type="xs:int" />
+      <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Common" minOccurs="0" name="Status" type="q1:NetworkEnum.WcfConnState" />
+      <xs:element minOccurs="0" name="TotalCores" type="xs:int" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="StatusCommons" nillable="true" type="tns:StatusCommons" />
+  <xs:complexType name="ArrayOfJobStatus">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="JobStatus" nillable="true" type="tns:JobStatus" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfJobStatus" nillable="true" type="tns:ArrayOfJobStatus" />
+  <xs:complexType name="JobStatus">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="JobId" type="ser:guid" />
+      <xs:element minOccurs="0" name="Progress" type="xs:double" />
+      <xs:element minOccurs="0" name="Since" type="xs:dateTime" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="JobStatus" nillable="true" type="tns:JobStatus" />
+  <xs:complexType name="ConnectionContainer">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="IPAdress" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="Port" type="xs:int" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ConnectionContainer" nillable="true" type="tns:ConnectionContainer" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Reference.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Reference.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Reference.cs	(revision 4073)
@@ -0,0 +1,884 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Client.Console.ClientService {
+    using System.Runtime.Serialization;
+    using System;
+    
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="StatusCommons", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+        "leService")]
+    [System.SerializableAttribute()]
+    public partial class StatusCommons : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ClientGuidField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime ConnectedSinceField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int FreeCoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Console.ClientService.JobStatus[] JobsField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int JobsAbortedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int JobsDoneField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int JobsFetchedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Hive.Client.Console.ClientService.NetworkEnumWcfConnState StatusField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int TotalCoresField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid ClientGuid {
+            get {
+                return this.ClientGuidField;
+            }
+            set {
+                if ((this.ClientGuidField.Equals(value) != true)) {
+                    this.ClientGuidField = value;
+                    this.RaisePropertyChanged("ClientGuid");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime ConnectedSince {
+            get {
+                return this.ConnectedSinceField;
+            }
+            set {
+                if ((this.ConnectedSinceField.Equals(value) != true)) {
+                    this.ConnectedSinceField = value;
+                    this.RaisePropertyChanged("ConnectedSince");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int FreeCores {
+            get {
+                return this.FreeCoresField;
+            }
+            set {
+                if ((this.FreeCoresField.Equals(value) != true)) {
+                    this.FreeCoresField = value;
+                    this.RaisePropertyChanged("FreeCores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Console.ClientService.JobStatus[] Jobs {
+            get {
+                return this.JobsField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.JobsField, value) != true)) {
+                    this.JobsField = value;
+                    this.RaisePropertyChanged("Jobs");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int JobsAborted {
+            get {
+                return this.JobsAbortedField;
+            }
+            set {
+                if ((this.JobsAbortedField.Equals(value) != true)) {
+                    this.JobsAbortedField = value;
+                    this.RaisePropertyChanged("JobsAborted");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int JobsDone {
+            get {
+                return this.JobsDoneField;
+            }
+            set {
+                if ((this.JobsDoneField.Equals(value) != true)) {
+                    this.JobsDoneField = value;
+                    this.RaisePropertyChanged("JobsDone");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int JobsFetched {
+            get {
+                return this.JobsFetchedField;
+            }
+            set {
+                if ((this.JobsFetchedField.Equals(value) != true)) {
+                    this.JobsFetchedField = value;
+                    this.RaisePropertyChanged("JobsFetched");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Hive.Client.Console.ClientService.NetworkEnumWcfConnState Status {
+            get {
+                return this.StatusField;
+            }
+            set {
+                if ((this.StatusField.Equals(value) != true)) {
+                    this.StatusField = value;
+                    this.RaisePropertyChanged("Status");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int TotalCores {
+            get {
+                return this.TotalCoresField;
+            }
+            set {
+                if ((this.TotalCoresField.Equals(value) != true)) {
+                    this.TotalCoresField = value;
+                    this.RaisePropertyChanged("TotalCores");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="JobStatus", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+        "leService")]
+    [System.SerializableAttribute()]
+    public partial class JobStatus : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid JobIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private double ProgressField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime SinceField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid JobId {
+            get {
+                return this.JobIdField;
+            }
+            set {
+                if ((this.JobIdField.Equals(value) != true)) {
+                    this.JobIdField = value;
+                    this.RaisePropertyChanged("JobId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Progress {
+            get {
+                return this.ProgressField;
+            }
+            set {
+                if ((this.ProgressField.Equals(value) != true)) {
+                    this.ProgressField = value;
+                    this.RaisePropertyChanged("Progress");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime Since {
+            get {
+                return this.SinceField;
+            }
+            set {
+                if ((this.SinceField.Equals(value) != true)) {
+                    this.SinceField = value;
+                    this.RaisePropertyChanged("Since");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="NetworkEnum.WcfConnState", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Common")]
+    public enum NetworkEnumWcfConnState : int {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Connected = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Disconnected = 1,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Failed = 2,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Loggedin = 3,
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ConnectionContainer", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+        "leService")]
+    [System.SerializableAttribute()]
+    public partial class ConnectionContainer : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string IPAdressField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int PortField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string IPAdress {
+            get {
+                return this.IPAdressField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.IPAdressField, value) != true)) {
+                    this.IPAdressField = value;
+                    this.RaisePropertyChanged("IPAdress");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int Port {
+            get {
+                return this.PortField;
+            }
+            set {
+                if ((this.PortField.Equals(value) != true)) {
+                    this.PortField = value;
+                    this.RaisePropertyChanged("Port");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ClientService.IClientConsoleCommunicator")]
+    public interface IClientConsoleCommunicator {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfosResponse")]
+        HeuristicLab.Hive.Client.Console.ClientService.StatusCommons GetStatusInfos();
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfosResponse")]
+        System.IAsyncResult BeginGetStatusInfos(System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Console.ClientService.StatusCommons EndGetStatusInfos(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/SetConnection", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/SetConnectionResponse")]
+        void SetConnection(HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer container);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientConsoleCommunicator/SetConnection", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/SetConnectionResponse")]
+        System.IAsyncResult BeginSetConnection(HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer container, System.AsyncCallback callback, object asyncState);
+        
+        void EndSetConnection(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/Disconnect", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/DisconnectResponse")]
+        void Disconnect();
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientConsoleCommunicator/Disconnect", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/DisconnectResponse")]
+        System.IAsyncResult BeginDisconnect(System.AsyncCallback callback, object asyncState);
+        
+        void EndDisconnect(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/GetCurrentConnection", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetCurrentConnectionResponse")]
+        HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer GetCurrentConnection();
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientConsoleCommunicator/GetCurrentConnection", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetCurrentConnectionResponse")]
+        System.IAsyncResult BeginGetCurrentConnection(System.AsyncCallback callback, object asyncState);
+        
+        HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer EndGetCurrentConnection(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/ShutdownClient", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/ShutdownClientResponse")]
+        void ShutdownClient();
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientConsoleCommunicator/ShutdownClient", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/ShutdownClientResponse")]
+        System.IAsyncResult BeginShutdownClient(System.AsyncCallback callback, object asyncState);
+        
+        void EndShutdownClient(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/SetUptimeCalendar", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/SetUptimeCalendarResponse")]
+        void SetUptimeCalendar(Calendar.Appointment[] appointments);
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientConsoleCommunicator/SetUptimeCalendar", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/SetUptimeCalendarResponse")]
+        System.IAsyncResult BeginSetUptimeCalendar(Calendar.Appointment[] appointments, System.AsyncCallback callback, object asyncState);
+        
+        void EndSetUptimeCalendar(System.IAsyncResult result);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/GetUptimeCalendar", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetUptimeCalendarResponse")]
+        Calendar.Appointment[] GetUptimeCalendar();
+        
+        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientConsoleCommunicator/GetUptimeCalendar", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetUptimeCalendarResponse")]
+        System.IAsyncResult BeginGetUptimeCalendar(System.AsyncCallback callback, object asyncState);
+        
+        Calendar.Appointment[] EndGetUptimeCalendar(System.IAsyncResult result);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public interface IClientConsoleCommunicatorChannel : HeuristicLab.Hive.Client.Console.ClientService.IClientConsoleCommunicator, System.ServiceModel.IClientChannel {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class GetStatusInfosCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public GetStatusInfosCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Console.ClientService.StatusCommons Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Console.ClientService.StatusCommons)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class GetCurrentConnectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public GetCurrentConnectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer)(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class GetUptimeCalendarCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+        
+        private object[] results;
+        
+        public GetUptimeCalendarCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
+                base(exception, cancelled, userState) {
+            this.results = results;
+        }
+        
+        public Calendar.Appointment[] Result {
+            get {
+                base.RaiseExceptionIfNecessary();
+                return ((Calendar.Appointment[])(this.results[0]));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class ClientConsoleCommunicatorClient : System.ServiceModel.ClientBase<HeuristicLab.Hive.Client.Console.ClientService.IClientConsoleCommunicator>, HeuristicLab.Hive.Client.Console.ClientService.IClientConsoleCommunicator {
+        
+        private BeginOperationDelegate onBeginGetStatusInfosDelegate;
+        
+        private EndOperationDelegate onEndGetStatusInfosDelegate;
+        
+        private System.Threading.SendOrPostCallback onGetStatusInfosCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginSetConnectionDelegate;
+        
+        private EndOperationDelegate onEndSetConnectionDelegate;
+        
+        private System.Threading.SendOrPostCallback onSetConnectionCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginDisconnectDelegate;
+        
+        private EndOperationDelegate onEndDisconnectDelegate;
+        
+        private System.Threading.SendOrPostCallback onDisconnectCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginGetCurrentConnectionDelegate;
+        
+        private EndOperationDelegate onEndGetCurrentConnectionDelegate;
+        
+        private System.Threading.SendOrPostCallback onGetCurrentConnectionCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginShutdownClientDelegate;
+        
+        private EndOperationDelegate onEndShutdownClientDelegate;
+        
+        private System.Threading.SendOrPostCallback onShutdownClientCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginSetUptimeCalendarDelegate;
+        
+        private EndOperationDelegate onEndSetUptimeCalendarDelegate;
+        
+        private System.Threading.SendOrPostCallback onSetUptimeCalendarCompletedDelegate;
+        
+        private BeginOperationDelegate onBeginGetUptimeCalendarDelegate;
+        
+        private EndOperationDelegate onEndGetUptimeCalendarDelegate;
+        
+        private System.Threading.SendOrPostCallback onGetUptimeCalendarCompletedDelegate;
+        
+        public ClientConsoleCommunicatorClient() {
+        }
+        
+        public ClientConsoleCommunicatorClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName) {
+        }
+        
+        public ClientConsoleCommunicatorClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public ClientConsoleCommunicatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public ClientConsoleCommunicatorClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress) {
+        }
+        
+        public event System.EventHandler<GetStatusInfosCompletedEventArgs> GetStatusInfosCompleted;
+        
+        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SetConnectionCompleted;
+        
+        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> DisconnectCompleted;
+        
+        public event System.EventHandler<GetCurrentConnectionCompletedEventArgs> GetCurrentConnectionCompleted;
+        
+        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> ShutdownClientCompleted;
+        
+        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> SetUptimeCalendarCompleted;
+        
+        public event System.EventHandler<GetUptimeCalendarCompletedEventArgs> GetUptimeCalendarCompleted;
+        
+        public HeuristicLab.Hive.Client.Console.ClientService.StatusCommons GetStatusInfos() {
+            return base.Channel.GetStatusInfos();
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginGetStatusInfos(System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginGetStatusInfos(callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Console.ClientService.StatusCommons EndGetStatusInfos(System.IAsyncResult result) {
+            return base.Channel.EndGetStatusInfos(result);
+        }
+        
+        private System.IAsyncResult OnBeginGetStatusInfos(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            return this.BeginGetStatusInfos(callback, asyncState);
+        }
+        
+        private object[] OnEndGetStatusInfos(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Console.ClientService.StatusCommons retVal = this.EndGetStatusInfos(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnGetStatusInfosCompleted(object state) {
+            if ((this.GetStatusInfosCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.GetStatusInfosCompleted(this, new GetStatusInfosCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void GetStatusInfosAsync() {
+            this.GetStatusInfosAsync(null);
+        }
+        
+        public void GetStatusInfosAsync(object userState) {
+            if ((this.onBeginGetStatusInfosDelegate == null)) {
+                this.onBeginGetStatusInfosDelegate = new BeginOperationDelegate(this.OnBeginGetStatusInfos);
+            }
+            if ((this.onEndGetStatusInfosDelegate == null)) {
+                this.onEndGetStatusInfosDelegate = new EndOperationDelegate(this.OnEndGetStatusInfos);
+            }
+            if ((this.onGetStatusInfosCompletedDelegate == null)) {
+                this.onGetStatusInfosCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetStatusInfosCompleted);
+            }
+            base.InvokeAsync(this.onBeginGetStatusInfosDelegate, null, this.onEndGetStatusInfosDelegate, this.onGetStatusInfosCompletedDelegate, userState);
+        }
+        
+        public void SetConnection(HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer container) {
+            base.Channel.SetConnection(container);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginSetConnection(HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer container, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginSetConnection(container, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public void EndSetConnection(System.IAsyncResult result) {
+            base.Channel.EndSetConnection(result);
+        }
+        
+        private System.IAsyncResult OnBeginSetConnection(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer container = ((HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer)(inValues[0]));
+            return this.BeginSetConnection(container, callback, asyncState);
+        }
+        
+        private object[] OnEndSetConnection(System.IAsyncResult result) {
+            this.EndSetConnection(result);
+            return null;
+        }
+        
+        private void OnSetConnectionCompleted(object state) {
+            if ((this.SetConnectionCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.SetConnectionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void SetConnectionAsync(HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer container) {
+            this.SetConnectionAsync(container, null);
+        }
+        
+        public void SetConnectionAsync(HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer container, object userState) {
+            if ((this.onBeginSetConnectionDelegate == null)) {
+                this.onBeginSetConnectionDelegate = new BeginOperationDelegate(this.OnBeginSetConnection);
+            }
+            if ((this.onEndSetConnectionDelegate == null)) {
+                this.onEndSetConnectionDelegate = new EndOperationDelegate(this.OnEndSetConnection);
+            }
+            if ((this.onSetConnectionCompletedDelegate == null)) {
+                this.onSetConnectionCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSetConnectionCompleted);
+            }
+            base.InvokeAsync(this.onBeginSetConnectionDelegate, new object[] {
+                        container}, this.onEndSetConnectionDelegate, this.onSetConnectionCompletedDelegate, userState);
+        }
+        
+        public void Disconnect() {
+            base.Channel.Disconnect();
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginDisconnect(System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginDisconnect(callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public void EndDisconnect(System.IAsyncResult result) {
+            base.Channel.EndDisconnect(result);
+        }
+        
+        private System.IAsyncResult OnBeginDisconnect(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            return this.BeginDisconnect(callback, asyncState);
+        }
+        
+        private object[] OnEndDisconnect(System.IAsyncResult result) {
+            this.EndDisconnect(result);
+            return null;
+        }
+        
+        private void OnDisconnectCompleted(object state) {
+            if ((this.DisconnectCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.DisconnectCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void DisconnectAsync() {
+            this.DisconnectAsync(null);
+        }
+        
+        public void DisconnectAsync(object userState) {
+            if ((this.onBeginDisconnectDelegate == null)) {
+                this.onBeginDisconnectDelegate = new BeginOperationDelegate(this.OnBeginDisconnect);
+            }
+            if ((this.onEndDisconnectDelegate == null)) {
+                this.onEndDisconnectDelegate = new EndOperationDelegate(this.OnEndDisconnect);
+            }
+            if ((this.onDisconnectCompletedDelegate == null)) {
+                this.onDisconnectCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnDisconnectCompleted);
+            }
+            base.InvokeAsync(this.onBeginDisconnectDelegate, null, this.onEndDisconnectDelegate, this.onDisconnectCompletedDelegate, userState);
+        }
+        
+        public HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer GetCurrentConnection() {
+            return base.Channel.GetCurrentConnection();
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginGetCurrentConnection(System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginGetCurrentConnection(callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer EndGetCurrentConnection(System.IAsyncResult result) {
+            return base.Channel.EndGetCurrentConnection(result);
+        }
+        
+        private System.IAsyncResult OnBeginGetCurrentConnection(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            return this.BeginGetCurrentConnection(callback, asyncState);
+        }
+        
+        private object[] OnEndGetCurrentConnection(System.IAsyncResult result) {
+            HeuristicLab.Hive.Client.Console.ClientService.ConnectionContainer retVal = this.EndGetCurrentConnection(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnGetCurrentConnectionCompleted(object state) {
+            if ((this.GetCurrentConnectionCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.GetCurrentConnectionCompleted(this, new GetCurrentConnectionCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void GetCurrentConnectionAsync() {
+            this.GetCurrentConnectionAsync(null);
+        }
+        
+        public void GetCurrentConnectionAsync(object userState) {
+            if ((this.onBeginGetCurrentConnectionDelegate == null)) {
+                this.onBeginGetCurrentConnectionDelegate = new BeginOperationDelegate(this.OnBeginGetCurrentConnection);
+            }
+            if ((this.onEndGetCurrentConnectionDelegate == null)) {
+                this.onEndGetCurrentConnectionDelegate = new EndOperationDelegate(this.OnEndGetCurrentConnection);
+            }
+            if ((this.onGetCurrentConnectionCompletedDelegate == null)) {
+                this.onGetCurrentConnectionCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetCurrentConnectionCompleted);
+            }
+            base.InvokeAsync(this.onBeginGetCurrentConnectionDelegate, null, this.onEndGetCurrentConnectionDelegate, this.onGetCurrentConnectionCompletedDelegate, userState);
+        }
+        
+        public void ShutdownClient() {
+            base.Channel.ShutdownClient();
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginShutdownClient(System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginShutdownClient(callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public void EndShutdownClient(System.IAsyncResult result) {
+            base.Channel.EndShutdownClient(result);
+        }
+        
+        private System.IAsyncResult OnBeginShutdownClient(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            return this.BeginShutdownClient(callback, asyncState);
+        }
+        
+        private object[] OnEndShutdownClient(System.IAsyncResult result) {
+            this.EndShutdownClient(result);
+            return null;
+        }
+        
+        private void OnShutdownClientCompleted(object state) {
+            if ((this.ShutdownClientCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.ShutdownClientCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void ShutdownClientAsync() {
+            this.ShutdownClientAsync(null);
+        }
+        
+        public void ShutdownClientAsync(object userState) {
+            if ((this.onBeginShutdownClientDelegate == null)) {
+                this.onBeginShutdownClientDelegate = new BeginOperationDelegate(this.OnBeginShutdownClient);
+            }
+            if ((this.onEndShutdownClientDelegate == null)) {
+                this.onEndShutdownClientDelegate = new EndOperationDelegate(this.OnEndShutdownClient);
+            }
+            if ((this.onShutdownClientCompletedDelegate == null)) {
+                this.onShutdownClientCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnShutdownClientCompleted);
+            }
+            base.InvokeAsync(this.onBeginShutdownClientDelegate, null, this.onEndShutdownClientDelegate, this.onShutdownClientCompletedDelegate, userState);
+        }
+        
+        public void SetUptimeCalendar(Calendar.Appointment[] appointments) {
+            base.Channel.SetUptimeCalendar(appointments);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginSetUptimeCalendar(Calendar.Appointment[] appointments, System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginSetUptimeCalendar(appointments, callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public void EndSetUptimeCalendar(System.IAsyncResult result) {
+            base.Channel.EndSetUptimeCalendar(result);
+        }
+        
+        private System.IAsyncResult OnBeginSetUptimeCalendar(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            Calendar.Appointment[] appointments = ((Calendar.Appointment[])(inValues[0]));
+            return this.BeginSetUptimeCalendar(appointments, callback, asyncState);
+        }
+        
+        private object[] OnEndSetUptimeCalendar(System.IAsyncResult result) {
+            this.EndSetUptimeCalendar(result);
+            return null;
+        }
+        
+        private void OnSetUptimeCalendarCompleted(object state) {
+            if ((this.SetUptimeCalendarCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.SetUptimeCalendarCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void SetUptimeCalendarAsync(Calendar.Appointment[] appointments) {
+            this.SetUptimeCalendarAsync(appointments, null);
+        }
+        
+        public void SetUptimeCalendarAsync(Calendar.Appointment[] appointments, object userState) {
+            if ((this.onBeginSetUptimeCalendarDelegate == null)) {
+                this.onBeginSetUptimeCalendarDelegate = new BeginOperationDelegate(this.OnBeginSetUptimeCalendar);
+            }
+            if ((this.onEndSetUptimeCalendarDelegate == null)) {
+                this.onEndSetUptimeCalendarDelegate = new EndOperationDelegate(this.OnEndSetUptimeCalendar);
+            }
+            if ((this.onSetUptimeCalendarCompletedDelegate == null)) {
+                this.onSetUptimeCalendarCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSetUptimeCalendarCompleted);
+            }
+            base.InvokeAsync(this.onBeginSetUptimeCalendarDelegate, new object[] {
+                        appointments}, this.onEndSetUptimeCalendarDelegate, this.onSetUptimeCalendarCompletedDelegate, userState);
+        }
+        
+        public Calendar.Appointment[] GetUptimeCalendar() {
+            return base.Channel.GetUptimeCalendar();
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public System.IAsyncResult BeginGetUptimeCalendar(System.AsyncCallback callback, object asyncState) {
+            return base.Channel.BeginGetUptimeCalendar(callback, asyncState);
+        }
+        
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+        public Calendar.Appointment[] EndGetUptimeCalendar(System.IAsyncResult result) {
+            return base.Channel.EndGetUptimeCalendar(result);
+        }
+        
+        private System.IAsyncResult OnBeginGetUptimeCalendar(object[] inValues, System.AsyncCallback callback, object asyncState) {
+            return this.BeginGetUptimeCalendar(callback, asyncState);
+        }
+        
+        private object[] OnEndGetUptimeCalendar(System.IAsyncResult result) {
+            Calendar.Appointment[] retVal = this.EndGetUptimeCalendar(result);
+            return new object[] {
+                    retVal};
+        }
+        
+        private void OnGetUptimeCalendarCompleted(object state) {
+            if ((this.GetUptimeCalendarCompleted != null)) {
+                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+                this.GetUptimeCalendarCompleted(this, new GetUptimeCalendarCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
+            }
+        }
+        
+        public void GetUptimeCalendarAsync() {
+            this.GetUptimeCalendarAsync(null);
+        }
+        
+        public void GetUptimeCalendarAsync(object userState) {
+            if ((this.onBeginGetUptimeCalendarDelegate == null)) {
+                this.onBeginGetUptimeCalendarDelegate = new BeginOperationDelegate(this.OnBeginGetUptimeCalendar);
+            }
+            if ((this.onEndGetUptimeCalendarDelegate == null)) {
+                this.onEndGetUptimeCalendarDelegate = new EndOperationDelegate(this.OnEndGetUptimeCalendar);
+            }
+            if ((this.onGetUptimeCalendarCompletedDelegate == null)) {
+                this.onGetUptimeCalendarCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetUptimeCalendarCompleted);
+            }
+            base.InvokeAsync(this.onBeginGetUptimeCalendarDelegate, null, this.onEndGetUptimeCalendarDelegate, this.onGetUptimeCalendarCompletedDelegate, userState);
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Reference.svcmap
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Reference.svcmap	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/Reference.svcmap	(revision 4073)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="94ae11a7-d639-4d8a-b9e6-a027596236fd" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
+  <ClientOptions>
+    <GenerateAsynchronousMethods>true</GenerateAsynchronousMethods>
+    <EnableDataBinding>true</EnableDataBinding>
+    <ExcludedTypes />
+    <ImportXmlTypes>false</ImportXmlTypes>
+    <GenerateInternalTypes>false</GenerateInternalTypes>
+    <GenerateMessageContracts>false</GenerateMessageContracts>
+    <NamespaceMappings />
+    <CollectionMappings />
+    <GenerateSerializableTypes>true</GenerateSerializableTypes>
+    <Serializer>Auto</Serializer>
+    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
+    <ReferencedAssemblies />
+    <ReferencedDataContractTypes />
+    <ServiceContractMappings />
+  </ClientOptions>
+  <MetadataSources>
+    <MetadataSource Address="net.tcp://127.0.0.1:8000/ClientConsole/mex" Protocol="mex" SourceId="1" />
+  </MetadataSources>
+  <Metadata>
+    <MetadataFile FileName="service.wsdl" MetadataType="Wsdl" ID="87cfc3a8-46c3-4a46-bccf-6e5c33780b95" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="service.xsd" MetadataType="Schema" ID="5ac15a29-55d2-4845-abcf-d435bbebd28b" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="service1.xsd" MetadataType="Schema" ID="20c63a8d-de03-429b-88b0-36988795ef19" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd" MetadataType="Schema" ID="36748734-59b6-4ba4-950d-66ca1a4fc8bb" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="HeuristicLab.Hive.Client.Common.xsd" MetadataType="Schema" ID="0c1369fa-d4cc-4149-b202-00da9dd35972" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="Calendar1.xsd" MetadataType="Schema" ID="5ec19e4e-fed1-451d-971e-01b8df8dcb0a" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="System.Drawing1.xsd" MetadataType="Schema" ID="2aa97a8b-a12e-47ca-8bb7-93a3404f40e5" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+  </Metadata>
+  <Extensions>
+    <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
+    <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
+  </Extensions>
+</ReferenceGroup>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/System.Drawing1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/System.Drawing1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/System.Drawing1.xsd	(revision 4073)
@@ -0,0 +1,18 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/System.Drawing" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/System.Drawing" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="Color">
+    <xs:annotation>
+      <xs:appinfo>
+        <IsValueType xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</IsValueType>
+      </xs:appinfo>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="knownColor" type="xs:short" />
+      <xs:element name="name" nillable="true" type="xs:string" />
+      <xs:element name="state" type="xs:short" />
+      <xs:element name="value" type="xs:long" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="Color" nillable="true" type="tns:Color" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/configuration.svcinfo
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/configuration.svcinfo	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/configuration.svcinfo	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
+  <behaviors />
+  <bindings>
+    <binding digest="System.ServiceModel.Configuration.NetTcpBindingElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; listenBacklog=&quot;10&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetTcpBinding_IClientConsoleCommunicator&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;reliableSession enabled=&quot;false&quot; inactivityTimeout=&quot;00:10:00&quot; ordered=&quot;true&quot; /&gt;&lt;security mode=&quot;Transport&quot;&gt;&lt;message clientCredentialType=&quot;Windows&quot; /&gt;&lt;transport clientCredentialType=&quot;Windows&quot; protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netTcpBinding" name="NetTcpBinding_IClientConsoleCommunicator" />
+  </bindings>
+  <endpoints>
+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientConsoleCommunicator&quot; contract=&quot;ClientService.IClientConsoleCommunicator&quot; name=&quot;NetTcpBinding_IClientConsoleCommunicator&quot;&gt;&lt;identity&gt;&lt;userPrincipalName value=&quot;semteX-PC\semteX&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientConsoleCommunicator&quot; contract=&quot;ClientService.IClientConsoleCommunicator&quot; name=&quot;NetTcpBinding_IClientConsoleCommunicator&quot;&gt;&lt;identity&gt;&lt;userPrincipalName value=&quot;semteX-PC\semteX&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" contractName="ClientService.IClientConsoleCommunicator" name="NetTcpBinding_IClientConsoleCommunicator" />
+  </endpoints>
+</configurationSnapshot>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/configuration91.svcinfo
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/configuration91.svcinfo	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/configuration91.svcinfo	(revision 4073)
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="BEhVTwOR+7957ZuwDJOXr3mn9MQ=">
+  <bindingConfigurations>
+    <bindingConfiguration bindingType="netTcpBinding" name="NetTcpBinding_IClientConsoleCommunicator">
+      <properties>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientConsoleCommunicator</serializedValue>
+        </property>
+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/transactionFlow" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Buffered</serializedValue>
+        </property>
+        <property path="/transactionProtocol" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransactionProtocol, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.OleTransactionsProtocol</serializedValue>
+        </property>
+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>StrongWildcard</serializedValue>
+        </property>
+        <property path="/listenBacklog" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>10</serializedValue>
+        </property>
+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>524288</serializedValue>
+        </property>
+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/maxConnections" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>10</serializedValue>
+        </property>
+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/portSharingEnabled" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>32</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>8192</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>4096</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/reliableSession" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement</serializedValue>
+        </property>
+        <property path="/reliableSession/ordered" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>True</serializedValue>
+        </property>
+        <property path="/reliableSession/inactivityTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/reliableSession/enabled" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.NetTcpSecurityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.NetTcpSecurityElement</serializedValue>
+        </property>
+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.SecurityMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Transport</serializedValue>
+        </property>
+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.TcpTransportSecurityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.TcpTransportSecurityElement</serializedValue>
+        </property>
+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TcpClientCredentialType, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Windows</serializedValue>
+        </property>
+        <property path="/security/transport/protectionLevel" isComplexType="false" isExplicitlyDefined="true" clrType="System.Net.Security.ProtectionLevel, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>EncryptAndSign</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Never</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>TransportSelected</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>(Collection)</serializedValue>
+        </property>
+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.MessageSecurityOverTcpElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.MessageSecurityOverTcpElement</serializedValue>
+        </property>
+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.MessageCredentialType, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Windows</serializedValue>
+        </property>
+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Basic256</serializedValue>
+        </property>
+      </properties>
+    </bindingConfiguration>
+  </bindingConfigurations>
+  <endpoints>
+    <endpoint name="NetTcpBinding_IClientConsoleCommunicator" contract="ClientService.IClientConsoleCommunicator" bindingType="netTcpBinding" address="net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator" bindingConfiguration="NetTcpBinding_IClientConsoleCommunicator">
+      <properties>
+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator</serializedValue>
+        </property>
+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>netTcpBinding</serializedValue>
+        </property>
+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientConsoleCommunicator</serializedValue>
+        </property>
+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>ClientService.IClientConsoleCommunicator</serializedValue>
+        </property>
+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+        </property>
+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>&lt;Header /&gt;</serializedValue>
+        </property>
+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>semteX-PC\semteX</serializedValue>
+        </property>
+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+        </property>
+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+        </property>
+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+        </property>
+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>My</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>LocalMachine</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientConsoleCommunicator</serializedValue>
+        </property>
+      </properties>
+    </endpoint>
+  </endpoints>
+</SavedWcfConfigurationInformation>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service.wsdl
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service.wsdl	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service.wsdl	(revision 4073)
@@ -0,0 +1,197 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://tempuri.org/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="ClientConsoleCommunicator" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsp:Policy wsu:Id="NetTcpBinding_IClientConsoleCommunicator_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1">
+        </msb:BinaryEncoding>
+        <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <wsp:Policy>
+            <sp:TransportToken>
+              <wsp:Policy>
+                <msf:WindowsTransportSecurity xmlns:msf="http://schemas.microsoft.com/ws/2006/05/framing/policy">
+                  <msf:ProtectionLevel>EncryptAndSign</msf:ProtectionLevel>
+                </msf:WindowsTransportSecurity>
+              </wsp:Policy>
+            </sp:TransportToken>
+            <sp:AlgorithmSuite>
+              <wsp:Policy>
+                <sp:Basic256>
+                </sp:Basic256>
+              </wsp:Policy>
+            </sp:AlgorithmSuite>
+            <sp:Layout>
+              <wsp:Policy>
+                <sp:Strict>
+                </sp:Strict>
+              </wsp:Policy>
+            </sp:Layout>
+          </wsp:Policy>
+        </sp:TransportBinding>
+        <wsaw:UsingAddressing>
+        </wsaw:UsingAddressing>
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://tempuri.org/Imports">
+      <xsd:import namespace="http://tempuri.org/" />
+      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Common" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/Calendar" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/System.Drawing" />
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="IClientConsoleCommunicator_GetStatusInfos_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetStatusInfos" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetStatusInfos_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetStatusInfosResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_SetConnection_InputMessage">
+    <wsdl:part name="parameters" element="tns:SetConnection" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_SetConnection_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SetConnectionResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_Disconnect_InputMessage">
+    <wsdl:part name="parameters" element="tns:Disconnect" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_Disconnect_OutputMessage">
+    <wsdl:part name="parameters" element="tns:DisconnectResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetCurrentConnection_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetCurrentConnection" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetCurrentConnection_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetCurrentConnectionResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_ShutdownClient_InputMessage">
+    <wsdl:part name="parameters" element="tns:ShutdownClient" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_ShutdownClient_OutputMessage">
+    <wsdl:part name="parameters" element="tns:ShutdownClientResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_SetUptimeCalendar_InputMessage">
+    <wsdl:part name="parameters" element="tns:SetUptimeCalendar" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_SetUptimeCalendar_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SetUptimeCalendarResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetUptimeCalendar_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetUptimeCalendar" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetUptimeCalendar_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetUptimeCalendarResponse" />
+  </wsdl:message>
+  <wsdl:portType name="IClientConsoleCommunicator">
+    <wsdl:operation name="GetStatusInfos">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos" message="tns:IClientConsoleCommunicator_GetStatusInfos_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfosResponse" message="tns:IClientConsoleCommunicator_GetStatusInfos_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SetConnection">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/SetConnection" message="tns:IClientConsoleCommunicator_SetConnection_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/SetConnectionResponse" message="tns:IClientConsoleCommunicator_SetConnection_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="Disconnect">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/Disconnect" message="tns:IClientConsoleCommunicator_Disconnect_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/DisconnectResponse" message="tns:IClientConsoleCommunicator_Disconnect_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentConnection">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetCurrentConnection" message="tns:IClientConsoleCommunicator_GetCurrentConnection_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetCurrentConnectionResponse" message="tns:IClientConsoleCommunicator_GetCurrentConnection_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="ShutdownClient">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/ShutdownClient" message="tns:IClientConsoleCommunicator_ShutdownClient_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/ShutdownClientResponse" message="tns:IClientConsoleCommunicator_ShutdownClient_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SetUptimeCalendar">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/SetUptimeCalendar" message="tns:IClientConsoleCommunicator_SetUptimeCalendar_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/SetUptimeCalendarResponse" message="tns:IClientConsoleCommunicator_SetUptimeCalendar_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetUptimeCalendar">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetUptimeCalendar" message="tns:IClientConsoleCommunicator_GetUptimeCalendar_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetUptimeCalendarResponse" message="tns:IClientConsoleCommunicator_GetUptimeCalendar_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="NetTcpBinding_IClientConsoleCommunicator" type="tns:IClientConsoleCommunicator">
+    <wsp:PolicyReference URI="#NetTcpBinding_IClientConsoleCommunicator_policy">
+    </wsp:PolicyReference>
+    <soap12:binding transport="http://schemas.microsoft.com/soap/tcp" />
+    <wsdl:operation name="GetStatusInfos">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SetConnection">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/SetConnection" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="Disconnect">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/Disconnect" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetCurrentConnection">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/GetCurrentConnection" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ShutdownClient">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/ShutdownClient" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SetUptimeCalendar">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/SetUptimeCalendar" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetUptimeCalendar">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/GetUptimeCalendar" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="ClientConsoleCommunicator">
+    <wsdl:port name="NetTcpBinding_IClientConsoleCommunicator" binding="tns:NetTcpBinding_IClientConsoleCommunicator">
+      <soap12:address location="net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator" />
+      <wsa10:EndpointReference>
+        <wsa10:Address>net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator</wsa10:Address>
+        <Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
+          <Upn>semteX-PC\semteX</Upn>
+        </Identity>
+      </wsa10:EndpointReference>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service.xsd	(revision 4073)
@@ -0,0 +1,85 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" />
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/Calendar" />
+  <xs:element name="GetStatusInfos">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetStatusInfosResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" minOccurs="0" name="GetStatusInfosResult" nillable="true" type="q1:StatusCommons" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetConnection">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" minOccurs="0" name="container" nillable="true" type="q2:ConnectionContainer" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetConnectionResponse">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Disconnect">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="DisconnectResponse">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetCurrentConnection">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetCurrentConnectionResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" minOccurs="0" name="GetCurrentConnectionResult" nillable="true" type="q3:ConnectionContainer" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ShutdownClient">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ShutdownClientResponse">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetUptimeCalendar">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q4="http://schemas.datacontract.org/2004/07/Calendar" minOccurs="0" name="appointments" nillable="true" type="q4:ArrayOfAppointment" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetUptimeCalendarResponse">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetUptimeCalendar">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetUptimeCalendarResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q5="http://schemas.datacontract.org/2004/07/Calendar" minOccurs="0" name="GetUptimeCalendarResult" nillable="true" type="q5:ArrayOfAppointment" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientService/service1.xsd	(revision 4073)
@@ -0,0 +1,42 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="anyType" nillable="true" type="xs:anyType" />
+  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+  <xs:element name="boolean" nillable="true" type="xs:boolean" />
+  <xs:element name="byte" nillable="true" type="xs:byte" />
+  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+  <xs:element name="decimal" nillable="true" type="xs:decimal" />
+  <xs:element name="double" nillable="true" type="xs:double" />
+  <xs:element name="float" nillable="true" type="xs:float" />
+  <xs:element name="int" nillable="true" type="xs:int" />
+  <xs:element name="long" nillable="true" type="xs:long" />
+  <xs:element name="QName" nillable="true" type="xs:QName" />
+  <xs:element name="short" nillable="true" type="xs:short" />
+  <xs:element name="string" nillable="true" type="xs:string" />
+  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+  <xs:element name="char" nillable="true" type="tns:char" />
+  <xs:simpleType name="char">
+    <xs:restriction base="xs:int" />
+  </xs:simpleType>
+  <xs:element name="duration" nillable="true" type="tns:duration" />
+  <xs:simpleType name="duration">
+    <xs:restriction base="xs:duration">
+      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="guid" nillable="true" type="tns:guid" />
+  <xs:simpleType name="guid">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="FactoryType" type="xs:QName" />
+  <xs:attribute name="Id" type="xs:ID" />
+  <xs:attribute name="Ref" type="xs:IDREF" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ConnectionContainer" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer, Service References.ClientWCFService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons.datasource
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons.datasource	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons.datasource	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="StatusCommons" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons, Service References.ClientWCFService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd	(revision 4073)
@@ -0,0 +1,45 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+  <xs:complexType name="StatusCommons">
+    <xs:sequence>
+      <xs:element name="_x003C_ClientGuid_x003E_k__BackingField" type="ser:guid" />
+      <xs:element name="_x003C_ConnectedSince_x003E_k__BackingField" type="xs:dateTime" />
+      <xs:element name="_x003C_JobsAborted_x003E_k__BackingField" type="xs:int" />
+      <xs:element name="_x003C_JobsDone_x003E_k__BackingField" type="xs:int" />
+      <xs:element name="_x003C_JobsFetched_x003E_k__BackingField" type="xs:int" />
+      <xs:element name="_x003C_Jobs_x003E_k__BackingField" nillable="true" type="tns:ArrayOfJobStatus" />
+      <xs:element name="_x003C_Status_x003E_k__BackingField" type="tns:StatusCommons.ClientStatusEnum" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="StatusCommons" nillable="true" type="tns:StatusCommons" />
+  <xs:complexType name="ArrayOfJobStatus">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="JobStatus" nillable="true" type="tns:JobStatus" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfJobStatus" nillable="true" type="tns:ArrayOfJobStatus" />
+  <xs:complexType name="JobStatus">
+    <xs:sequence>
+      <xs:element name="_x003C_JobId_x003E_k__BackingField" type="xs:long" />
+      <xs:element name="_x003C_Progress_x003E_k__BackingField" type="xs:double" />
+      <xs:element name="_x003C_Since_x003E_k__BackingField" type="xs:dateTime" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="JobStatus" nillable="true" type="tns:JobStatus" />
+  <xs:simpleType name="StatusCommons.ClientStatusEnum">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="Connected" />
+      <xs:enumeration value="Disconnected" />
+      <xs:enumeration value="ConnInterrupted" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="StatusCommons.ClientStatusEnum" nillable="true" type="tns:StatusCommons.ClientStatusEnum" />
+  <xs:complexType name="ConnectionContainer">
+    <xs:sequence>
+      <xs:element name="_x003C_IPAdress_x003E_k__BackingField" nillable="true" type="xs:string" />
+      <xs:element name="_x003C_Port_x003E_k__BackingField" type="xs:int" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ConnectionContainer" nillable="true" type="tns:ConnectionContainer" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/Reference.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/Reference.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/Reference.cs	(revision 4073)
@@ -0,0 +1,354 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3053
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Client.Console.ClientWCFService {
+    using System.Runtime.Serialization;
+    using System;
+    
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="StatusCommons", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+        "leService")]
+    [System.SerializableAttribute()]
+    public partial class StatusCommons : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private System.Guid ClientGuidk__BackingFieldField;
+        
+        private System.DateTime ConnectedSincek__BackingFieldField;
+        
+        private int JobsAbortedk__BackingFieldField;
+        
+        private int JobsDonek__BackingFieldField;
+        
+        private int JobsFetchedk__BackingFieldField;
+        
+        private HeuristicLab.Hive.Client.Console.ClientWCFService.JobStatus[] Jobsk__BackingFieldField;
+        
+        private HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons.ClientStatusEnum Statusk__BackingFieldField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<ClientGuid>k__BackingField", IsRequired=true)]
+        public System.Guid ClientGuidk__BackingField {
+            get {
+                return this.ClientGuidk__BackingFieldField;
+            }
+            set {
+                if ((this.ClientGuidk__BackingFieldField.Equals(value) != true)) {
+                    this.ClientGuidk__BackingFieldField = value;
+                    this.RaisePropertyChanged("ClientGuidk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<ConnectedSince>k__BackingField", IsRequired=true)]
+        public System.DateTime ConnectedSincek__BackingField {
+            get {
+                return this.ConnectedSincek__BackingFieldField;
+            }
+            set {
+                if ((this.ConnectedSincek__BackingFieldField.Equals(value) != true)) {
+                    this.ConnectedSincek__BackingFieldField = value;
+                    this.RaisePropertyChanged("ConnectedSincek__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<JobsAborted>k__BackingField", IsRequired=true)]
+        public int JobsAbortedk__BackingField {
+            get {
+                return this.JobsAbortedk__BackingFieldField;
+            }
+            set {
+                if ((this.JobsAbortedk__BackingFieldField.Equals(value) != true)) {
+                    this.JobsAbortedk__BackingFieldField = value;
+                    this.RaisePropertyChanged("JobsAbortedk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<JobsDone>k__BackingField", IsRequired=true)]
+        public int JobsDonek__BackingField {
+            get {
+                return this.JobsDonek__BackingFieldField;
+            }
+            set {
+                if ((this.JobsDonek__BackingFieldField.Equals(value) != true)) {
+                    this.JobsDonek__BackingFieldField = value;
+                    this.RaisePropertyChanged("JobsDonek__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<JobsFetched>k__BackingField", IsRequired=true)]
+        public int JobsFetchedk__BackingField {
+            get {
+                return this.JobsFetchedk__BackingFieldField;
+            }
+            set {
+                if ((this.JobsFetchedk__BackingFieldField.Equals(value) != true)) {
+                    this.JobsFetchedk__BackingFieldField = value;
+                    this.RaisePropertyChanged("JobsFetchedk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<Jobs>k__BackingField", IsRequired=true)]
+        public HeuristicLab.Hive.Client.Console.ClientWCFService.JobStatus[] Jobsk__BackingField {
+            get {
+                return this.Jobsk__BackingFieldField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.Jobsk__BackingFieldField, value) != true)) {
+                    this.Jobsk__BackingFieldField = value;
+                    this.RaisePropertyChanged("Jobsk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<Status>k__BackingField", IsRequired=true)]
+        public HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons.ClientStatusEnum Statusk__BackingField {
+            get {
+                return this.Statusk__BackingFieldField;
+            }
+            set {
+                if ((this.Statusk__BackingFieldField.Equals(value) != true)) {
+                    this.Statusk__BackingFieldField = value;
+                    this.RaisePropertyChanged("Statusk__BackingField");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+        
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+        [System.Runtime.Serialization.DataContractAttribute(Name="StatusCommons.ClientStatusEnum", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+            "leService")]
+        public enum ClientStatusEnum : int {
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            Connected = 0,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            Disconnected = 1,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            ConnInterrupted = 2,
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="JobStatus", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+        "leService")]
+    [System.SerializableAttribute()]
+    public partial class JobStatus : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private long JobIdk__BackingFieldField;
+        
+        private double Progressk__BackingFieldField;
+        
+        private System.DateTime Sincek__BackingFieldField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<JobId>k__BackingField", IsRequired=true)]
+        public long JobIdk__BackingField {
+            get {
+                return this.JobIdk__BackingFieldField;
+            }
+            set {
+                if ((this.JobIdk__BackingFieldField.Equals(value) != true)) {
+                    this.JobIdk__BackingFieldField = value;
+                    this.RaisePropertyChanged("JobIdk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<Progress>k__BackingField", IsRequired=true)]
+        public double Progressk__BackingField {
+            get {
+                return this.Progressk__BackingFieldField;
+            }
+            set {
+                if ((this.Progressk__BackingFieldField.Equals(value) != true)) {
+                    this.Progressk__BackingFieldField = value;
+                    this.RaisePropertyChanged("Progressk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<Since>k__BackingField", IsRequired=true)]
+        public System.DateTime Sincek__BackingField {
+            get {
+                return this.Sincek__BackingFieldField;
+            }
+            set {
+                if ((this.Sincek__BackingFieldField.Equals(value) != true)) {
+                    this.Sincek__BackingFieldField = value;
+                    this.RaisePropertyChanged("Sincek__BackingField");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ConnectionContainer", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConso" +
+        "leService")]
+    [System.SerializableAttribute()]
+    public partial class ConnectionContainer : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private string IPAdressk__BackingFieldField;
+        
+        private int Portk__BackingFieldField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<IPAdress>k__BackingField", IsRequired=true)]
+        public string IPAdressk__BackingField {
+            get {
+                return this.IPAdressk__BackingFieldField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.IPAdressk__BackingFieldField, value) != true)) {
+                    this.IPAdressk__BackingFieldField = value;
+                    this.RaisePropertyChanged("IPAdressk__BackingField");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute(Name="<Port>k__BackingField", IsRequired=true)]
+        public int Portk__BackingField {
+            get {
+                return this.Portk__BackingFieldField;
+            }
+            set {
+                if ((this.Portk__BackingFieldField.Equals(value) != true)) {
+                    this.Portk__BackingFieldField = value;
+                    this.RaisePropertyChanged("Portk__BackingField");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ClientWCFService.IClientConsoleCommunicator")]
+    public interface IClientConsoleCommunicator {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfosResponse")]
+        HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons GetStatusInfos();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/GetConnection", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/GetConnectionResponse")]
+        HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer GetConnection();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientConsoleCommunicator/SetConnection", ReplyAction="http://tempuri.org/IClientConsoleCommunicator/SetConnectionResponse")]
+        void SetConnection(HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer container);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public interface IClientConsoleCommunicatorChannel : HeuristicLab.Hive.Client.Console.ClientWCFService.IClientConsoleCommunicator, System.ServiceModel.IClientChannel {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public partial class ClientConsoleCommunicatorClient : System.ServiceModel.ClientBase<HeuristicLab.Hive.Client.Console.ClientWCFService.IClientConsoleCommunicator>, HeuristicLab.Hive.Client.Console.ClientWCFService.IClientConsoleCommunicator {
+        
+        public ClientConsoleCommunicatorClient() {
+        }
+        
+        public ClientConsoleCommunicatorClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName) {
+        }
+        
+        public ClientConsoleCommunicatorClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public ClientConsoleCommunicatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public ClientConsoleCommunicatorClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress) {
+        }
+        
+        public HeuristicLab.Hive.Client.Console.ClientWCFService.StatusCommons GetStatusInfos() {
+            return base.Channel.GetStatusInfos();
+        }
+        
+        public HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer GetConnection() {
+            return base.Channel.GetConnection();
+        }
+        
+        public void SetConnection(HeuristicLab.Hive.Client.Console.ClientWCFService.ConnectionContainer container) {
+            base.Channel.SetConnection(container);
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/Reference.svcmap
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/Reference.svcmap	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/Reference.svcmap	(revision 4073)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="9ea57ddc-eea2-4ddf-9d73-9a67a3dd8193" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
+  <ClientOptions>
+    <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
+    <EnableDataBinding>true</EnableDataBinding>
+    <ExcludedTypes />
+    <ImportXmlTypes>false</ImportXmlTypes>
+    <GenerateInternalTypes>false</GenerateInternalTypes>
+    <GenerateMessageContracts>false</GenerateMessageContracts>
+    <NamespaceMappings />
+    <CollectionMappings />
+    <GenerateSerializableTypes>true</GenerateSerializableTypes>
+    <Serializer>Auto</Serializer>
+    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
+    <ReferencedAssemblies />
+    <ReferencedDataContractTypes />
+    <ServiceContractMappings />
+  </ClientOptions>
+  <MetadataSources>
+    <MetadataSource Address="net.tcp://127.0.0.1:8000/ClientConsole/mex" Protocol="mex" SourceId="1" />
+  </MetadataSources>
+  <Metadata>
+    <MetadataFile FileName="service.wsdl" MetadataType="Wsdl" ID="5425b0cf-62ce-4ca2-af78-a048e9784640" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="service.xsd" MetadataType="Schema" ID="0d878304-2c0b-4e74-8041-58b12e2da1e9" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="service1.xsd" MetadataType="Schema" ID="6a4352ef-3d11-42ef-8ebf-0c9f0978884b" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+    <MetadataFile FileName="HeuristicLab.Hive.Client.Core.ClientConsoleService.xsd" MetadataType="Schema" ID="af1f5bc1-1eeb-44bd-ad6a-d97746a645e5" SourceId="1" SourceUrl="net.tcp://127.0.0.1:8000/ClientConsole/mex" />
+  </Metadata>
+  <Extensions>
+    <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
+    <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
+  </Extensions>
+</ReferenceGroup>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/configuration.svcinfo
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/configuration.svcinfo	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/configuration.svcinfo	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
+  <behaviors />
+  <bindings>
+    <binding digest="System.ServiceModel.Configuration.NetTcpBindingElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; listenBacklog=&quot;10&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetTcpBinding_IClientConsoleCommunicator2&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;reliableSession enabled=&quot;false&quot; inactivityTimeout=&quot;00:10:00&quot; ordered=&quot;true&quot; /&gt;&lt;security mode=&quot;Transport&quot;&gt;&lt;message clientCredentialType=&quot;Windows&quot; /&gt;&lt;transport clientCredentialType=&quot;Windows&quot; protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netTcpBinding" name="NetTcpBinding_IClientConsoleCommunicator2" />
+  </bindings>
+  <endpoints>
+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientConsoleCommunicator2&quot; contract=&quot;ClientWCFService.IClientConsoleCommunicator&quot; name=&quot;NetTcpBinding_IClientConsoleCommunicator2&quot;&gt;&lt;identity&gt;&lt;userPrincipalName value=&quot;mse08004@fhs-hagenberg.ac.at&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientConsoleCommunicator2&quot; contract=&quot;ClientWCFService.IClientConsoleCommunicator&quot; name=&quot;NetTcpBinding_IClientConsoleCommunicator2&quot;&gt;&lt;identity&gt;&lt;userPrincipalName value=&quot;mse08004@fhs-hagenberg.ac.at&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" contractName="ClientWCFService.IClientConsoleCommunicator" name="NetTcpBinding_IClientConsoleCommunicator2" />
+  </endpoints>
+</configurationSnapshot>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/configuration91.svcinfo
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/configuration91.svcinfo	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/configuration91.svcinfo	(revision 4073)
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="JNLo0XZb7XeV8gd1Vd1M13/GZZM=">
+  <bindingConfigurations>
+    <bindingConfiguration bindingType="netTcpBinding" name="NetTcpBinding_IClientConsoleCommunicator2">
+      <properties>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientConsoleCommunicator2</serializedValue>
+        </property>
+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/transactionFlow" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Buffered</serializedValue>
+        </property>
+        <property path="/transactionProtocol" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransactionProtocol, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.OleTransactionsProtocol</serializedValue>
+        </property>
+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>StrongWildcard</serializedValue>
+        </property>
+        <property path="/listenBacklog" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>10</serializedValue>
+        </property>
+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>524288</serializedValue>
+        </property>
+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/maxConnections" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>10</serializedValue>
+        </property>
+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/portSharingEnabled" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>32</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>8192</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>4096</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/reliableSession" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement</serializedValue>
+        </property>
+        <property path="/reliableSession/ordered" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>True</serializedValue>
+        </property>
+        <property path="/reliableSession/inactivityTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/reliableSession/enabled" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.NetTcpSecurityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.NetTcpSecurityElement</serializedValue>
+        </property>
+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.SecurityMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Transport</serializedValue>
+        </property>
+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.TcpTransportSecurityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.TcpTransportSecurityElement</serializedValue>
+        </property>
+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TcpClientCredentialType, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Windows</serializedValue>
+        </property>
+        <property path="/security/transport/protectionLevel" isComplexType="false" isExplicitlyDefined="true" clrType="System.Net.Security.ProtectionLevel, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>EncryptAndSign</serializedValue>
+        </property>
+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.MessageSecurityOverTcpElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.MessageSecurityOverTcpElement</serializedValue>
+        </property>
+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.MessageCredentialType, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Windows</serializedValue>
+        </property>
+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Basic256</serializedValue>
+        </property>
+      </properties>
+    </bindingConfiguration>
+  </bindingConfigurations>
+  <endpoints>
+    <endpoint name="NetTcpBinding_IClientConsoleCommunicator2" contract="ClientWCFService.IClientConsoleCommunicator" bindingType="netTcpBinding" address="net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator" bindingConfiguration="NetTcpBinding_IClientConsoleCommunicator2">
+      <properties>
+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator</serializedValue>
+        </property>
+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>netTcpBinding</serializedValue>
+        </property>
+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientConsoleCommunicator2</serializedValue>
+        </property>
+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>ClientWCFService.IClientConsoleCommunicator</serializedValue>
+        </property>
+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+        </property>
+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>&lt;Header /&gt;</serializedValue>
+        </property>
+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>mse08004@fhs-hagenberg.ac.at</serializedValue>
+        </property>
+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+        </property>
+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+        </property>
+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+        </property>
+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>My</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>LocalMachine</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>NetTcpBinding_IClientConsoleCommunicator2</serializedValue>
+        </property>
+      </properties>
+    </endpoint>
+  </endpoints>
+</SavedWcfConfigurationInformation>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service.wsdl
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service.wsdl	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service.wsdl	(revision 4073)
@@ -0,0 +1,118 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://tempuri.org/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="ClientConsoleCommunicator" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsp:Policy wsu:Id="NetTcpBinding_IClientConsoleCommunicator_policy">
+    <wsp:ExactlyOne>
+      <wsp:All>
+        <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1">
+        </msb:BinaryEncoding>
+        <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+          <wsp:Policy>
+            <sp:TransportToken>
+              <wsp:Policy>
+                <msf:WindowsTransportSecurity xmlns:msf="http://schemas.microsoft.com/ws/2006/05/framing/policy">
+                  <msf:ProtectionLevel>EncryptAndSign</msf:ProtectionLevel>
+                </msf:WindowsTransportSecurity>
+              </wsp:Policy>
+            </sp:TransportToken>
+            <sp:AlgorithmSuite>
+              <wsp:Policy>
+                <sp:Basic256>
+                </sp:Basic256>
+              </wsp:Policy>
+            </sp:AlgorithmSuite>
+            <sp:Layout>
+              <wsp:Policy>
+                <sp:Strict>
+                </sp:Strict>
+              </wsp:Policy>
+            </sp:Layout>
+          </wsp:Policy>
+        </sp:TransportBinding>
+        <wsaw:UsingAddressing>
+        </wsaw:UsingAddressing>
+      </wsp:All>
+    </wsp:ExactlyOne>
+  </wsp:Policy>
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://tempuri.org/Imports">
+      <xsd:import namespace="http://tempuri.org/" />
+      <xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+      <xsd:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" />
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="IClientConsoleCommunicator_GetStatusInfos_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetStatusInfos" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetStatusInfos_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetStatusInfosResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetConnection_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetConnection" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_GetConnection_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetConnectionResponse" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_SetConnection_InputMessage">
+    <wsdl:part name="parameters" element="tns:SetConnection" />
+  </wsdl:message>
+  <wsdl:message name="IClientConsoleCommunicator_SetConnection_OutputMessage">
+    <wsdl:part name="parameters" element="tns:SetConnectionResponse" />
+  </wsdl:message>
+  <wsdl:portType name="IClientConsoleCommunicator">
+    <wsdl:operation name="GetStatusInfos">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos" message="tns:IClientConsoleCommunicator_GetStatusInfos_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfosResponse" message="tns:IClientConsoleCommunicator_GetStatusInfos_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetConnection">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetConnection" message="tns:IClientConsoleCommunicator_GetConnection_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/GetConnectionResponse" message="tns:IClientConsoleCommunicator_GetConnection_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="SetConnection">
+      <wsdl:input wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/SetConnection" message="tns:IClientConsoleCommunicator_SetConnection_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IClientConsoleCommunicator/SetConnectionResponse" message="tns:IClientConsoleCommunicator_SetConnection_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="NetTcpBinding_IClientConsoleCommunicator" type="tns:IClientConsoleCommunicator">
+    <wsp:PolicyReference URI="#NetTcpBinding_IClientConsoleCommunicator_policy">
+    </wsp:PolicyReference>
+    <soap12:binding transport="http://schemas.microsoft.com/soap/tcp" />
+    <wsdl:operation name="GetStatusInfos">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/GetStatusInfos" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetConnection">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/GetConnection" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SetConnection">
+      <soap12:operation soapAction="http://tempuri.org/IClientConsoleCommunicator/SetConnection" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="ClientConsoleCommunicator">
+    <wsdl:port name="NetTcpBinding_IClientConsoleCommunicator" binding="tns:NetTcpBinding_IClientConsoleCommunicator">
+      <soap12:address location="net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator" />
+      <wsa10:EndpointReference>
+        <wsa10:Address>net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator</wsa10:Address>
+        <Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
+          <Upn>mse08004@fhs-hagenberg.ac.at</Upn>
+        </Identity>
+      </wsa10:EndpointReference>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service.xsd	(revision 4073)
@@ -0,0 +1,40 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" />
+  <xs:element name="GetStatusInfos">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetStatusInfosResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" minOccurs="0" name="GetStatusInfosResult" nillable="true" type="q1:StatusCommons" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetConnection">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetConnectionResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" minOccurs="0" name="GetConnectionResult" nillable="true" type="q2:ConnectionContainer" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetConnection">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Client.Core.ClientConsoleService" minOccurs="0" name="container" nillable="true" type="q3:ConnectionContainer" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SetConnectionResponse">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service1.xsd
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service1.xsd	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/Service References/ClientWCFService/service1.xsd	(revision 4073)
@@ -0,0 +1,42 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="anyType" nillable="true" type="xs:anyType" />
+  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+  <xs:element name="boolean" nillable="true" type="xs:boolean" />
+  <xs:element name="byte" nillable="true" type="xs:byte" />
+  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+  <xs:element name="decimal" nillable="true" type="xs:decimal" />
+  <xs:element name="double" nillable="true" type="xs:double" />
+  <xs:element name="float" nillable="true" type="xs:float" />
+  <xs:element name="int" nillable="true" type="xs:int" />
+  <xs:element name="long" nillable="true" type="xs:long" />
+  <xs:element name="QName" nillable="true" type="xs:QName" />
+  <xs:element name="short" nillable="true" type="xs:short" />
+  <xs:element name="string" nillable="true" type="xs:string" />
+  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+  <xs:element name="char" nillable="true" type="tns:char" />
+  <xs:simpleType name="char">
+    <xs:restriction base="xs:int" />
+  </xs:simpleType>
+  <xs:element name="duration" nillable="true" type="tns:duration" />
+  <xs:simpleType name="duration">
+    <xs:restriction base="xs:duration">
+      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="guid" nillable="true" type="tns:guid" />
+  <xs:simpleType name="guid">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="FactoryType" type="xs:QName" />
+  <xs:attribute name="Id" type="xs:ID" />
+  <xs:attribute name="Ref" type="xs:IDREF" />
+</xs:schema>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/ServiceLocator.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/ServiceLocator.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/ServiceLocator.cs	(revision 4073)
@@ -0,0 +1,23 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+//using HeuristicLab.Hive.Client.ClientConsole;
+
+namespace HeuristicLab.Hive.Client.Console {
+  public class ServiceLocator {
+    private static ClientConsoleCommunicatorClient proxy = null;
+
+    public static ClientConsoleCommunicatorClient ClientConsoleCommunicatorClient() {
+      if (proxy == null) {
+        proxy = new ClientConsoleCommunicatorClient(
+          new NetTcpBinding(),
+          new EndpointAddress("net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator")
+          );
+      }
+
+      return proxy;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/app.config
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/app.config	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/app.config	(revision 4073)
@@ -0,0 +1,47 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
+            <section name="HeuristicLab.Hive.Client.Console.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+        </sectionGroup>
+    </configSections>
+       <userSettings>
+        <HeuristicLab.Hive.Client.Console.Properties.Settings>
+            <setting name="IpAdress" serializeAs="String">
+                <value>10.0.0.1</value>
+            </setting>
+        </HeuristicLab.Hive.Client.Console.Properties.Settings>
+    </userSettings>
+       <system.serviceModel>
+              <bindings>
+                     <netTcpBinding>
+                            <binding name="NetTcpBinding_IClientConsoleCommunicator" closeTimeout="00:01:00"
+                                   openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                                   transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+                                   hostNameComparisonMode="StrongWildcard" listenBacklog="10"
+                                   maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
+                                   maxReceivedMessageSize="65536">
+                                   <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                                          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+                                   <reliableSession ordered="true" inactivityTimeout="00:10:00"
+                                          enabled="false" />
+                                   <security mode="Transport">
+                                          <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
+                                                 <extendedProtectionPolicy policyEnforcement="Never" />
+                                          </transport>
+                                          <message clientCredentialType="Windows" />
+                                   </security>
+                            </binding>
+                     </netTcpBinding>
+              </bindings>
+              <client>
+                     <endpoint address="net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator"
+                            binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IClientConsoleCommunicator"
+                            contract="ClientService.IClientConsoleCommunicator" name="NetTcpBinding_IClientConsoleCommunicator">
+                            <identity>
+                                   <userPrincipalName value="semteX-PC\semteX" />
+                            </identity>
+                     </endpoint>
+              </client>
+       </system.serviceModel>
+</configuration>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs	(revision 4073)
@@ -57,5 +57,5 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.2.0.4064")]
-[assembly: AssemblyFileVersion("3.2.0.4064")]
-[assembly: AssemblyBuildDate("2010/07/22 09:53:28")]
+[assembly: AssemblyVersion("3.2.0.4071")]
+[assembly: AssemblyFileVersion("3.2.0.4071")]
+[assembly: AssemblyBuildDate("2010/07/22 10:11:18")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/ExecutionEnginePlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/ExecutionEnginePlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/ExecutionEnginePlugin.cs	(revision 4073)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Client.ExecutionEngine {
+  [Plugin("HeuristicLab.Hive.Client.ExecutionEngine-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.ExecutionEngine-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Common-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Communication-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.JobBase-3.2")] 
+  public class ExecutionEnginePlugin: PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/Executor.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/Executor.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/Executor.cs	(revision 4073)
@@ -0,0 +1,147 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Client.Common;
+using System.Xml;
+using System.Xml.Serialization;
+using System.IO;
+using HeuristicLab.Core;
+using HeuristicLab.Hive.JobBase;
+using HeuristicLab.Hive.Contracts;
+
+namespace HeuristicLab.Hive.Client.ExecutionEngine {
+  public class Executor: MarshalByRefObject, IDisposable {
+    public Guid JobId { get; set; }
+    public IJob Job { get; set; }
+    public MessageContainer.MessageType CurrentMessage { get; set; }
+    public MessageQueue Queue { get; set; }
+
+    public bool JobIsFinished { get; set; }
+
+    public bool Running {
+      get {
+        return Job.Running;
+      }
+    }
+
+    public double Progress {
+      get {
+        return Job.Progress;
+      }
+    }
+
+    public DateTime CreationTime { get; set; }
+
+    public void Start(byte[] serializedJob) {
+      CreationTime = DateTime.Now;
+      Job = (IJob)PersistenceManager.RestoreFromGZip(serializedJob);
+      //debug
+      //Job = new TestJob();
+      Job.JobStopped += new EventHandler(Job_JobStopped);
+      Job.JobFailed += new EventHandler(Job_JobFailed);
+      Job.Start();
+    }
+
+    void Job_JobFailed(object sender, EventArgs e) {
+      Queue.AddMessage(new MessageContainer(MessageContainer.MessageType.JobFailed, JobId));
+    }
+
+    public void StartOnlyJob() {
+      Job.Start();
+    }
+
+    public void Abort() {
+      CurrentMessage = MessageContainer.MessageType.AbortJob;
+      Job.Stop();      
+    }
+
+    void Job_JobStopped(object sender, EventArgs e) {
+      if (CurrentMessage == MessageContainer.MessageType.NoMessage) {
+        Queue.AddMessage(new MessageContainer(MessageContainer.MessageType.FinishedJob, JobId));
+        JobIsFinished = true;
+      } else if (CurrentMessage == MessageContainer.MessageType.RequestSnapshot) {
+          Queue.AddMessage(new MessageContainer(MessageContainer.MessageType.SnapshotReady, JobId));
+      } else if (CurrentMessage == MessageContainer.MessageType.AbortJob) {
+          Queue.AddMessage(new MessageContainer(MessageContainer.MessageType.JobAborted, JobId));
+      }
+    }
+
+    public byte[] GetSnapshot() {
+      //if the job is still running, something went VERY bad.
+      if (Job.Running) {
+        return null;
+      } else {
+        // Clear the Status message
+        CurrentMessage = MessageContainer.MessageType.NoMessage;
+        // Pack the whole job inside an xml document
+        byte[] job = SerializeJobObject();        
+        // Restart the job
+        // Return the Snapshot
+        return job;
+      }
+    }
+
+    public byte[] GetFinishedJob() {
+      //Job isn't finished!
+      if (Job.Running) {
+        throw new InvalidStateException("Job is still running");
+      } else {
+        byte[] jobArr = SerializeJobObject();        
+        return jobArr;
+      }
+    }    
+
+
+    public void RequestSnapshot() {
+      CurrentMessage = MessageContainer.MessageType.RequestSnapshot;
+      Job.Stop();
+    }
+
+    private byte[] SerializeJobObject() {
+      return PersistenceManager.SaveToGZip(Job);
+    }
+
+    private void RestoreJobObject(byte[] sjob) {
+      Job = (IJob)PersistenceManager.RestoreFromGZip(sjob);
+    }
+
+    public Executor() {
+      CurrentMessage = MessageContainer.MessageType.NoMessage;
+      JobIsFinished = false;
+      Job = new TestJob();
+    }
+
+    #region IDisposable Members
+
+    public void Dispose() {
+      Job.JobFailed -= new EventHandler(Job_JobFailed);
+      Job.JobFailed -= new EventHandler(Job_JobStopped);
+      Queue = null;
+      Job = null;
+    }
+
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/HeuristicLab.Hive.Client.ExecutionEngine-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/HeuristicLab.Hive.Client.ExecutionEngine-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/HeuristicLab.Hive.Client.ExecutionEngine-3.3.csproj	(revision 4073)
@@ -0,0 +1,143 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1605256A-1CB3-44AB-AAFF-577093EE5789}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Client.ExecutionEngine</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Client.ExecutionEngine-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Executor.cs" />
+    <Compile Include="ExecutionEnginePlugin.cs" />
+    <Compile Include="InvalidStateException.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Client.Common\3.3\HeuristicLab.Hive.Client.Common-3.3.csproj">
+      <Project>{89F4BC52-C174-481E-9BD2-3814171020E8}</Project>
+      <Name>HeuristicLab.Hive.Client.Common-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Client.Communication\3.3\HeuristicLab.Hive.Client.Communication-3.3.csproj">
+      <Project>{AEB51212-CDBA-4FC6-A2EE-02359AA53ECE}</Project>
+      <Name>HeuristicLab.Hive.Client.Communication-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.2\HeuristicLab.Hive.Contracts-3.2.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.JobBase\3.2\HeuristicLab.Hive.JobBase-3.2.csproj">
+      <Project>{21187322-52DD-4243-80A4-A85F0263E63B}</Project>
+      <Name>HeuristicLab.Hive.JobBase-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/InvalidStateException.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/InvalidStateException.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/InvalidStateException.cs	(revision 4073)
@@ -0,0 +1,24 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Hive.Client.ExecutionEngine {
+  [global::System.Serializable]
+  public class InvalidStateException : Exception {
+    //
+    // For guidelines regarding the creation of new exception types, see
+    //    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp
+    // and
+    //    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp
+    //
+
+    public InvalidStateException() { }
+    public InvalidStateException(string message) : base(message) { }
+    public InvalidStateException(string message, Exception inner) : base(message, inner) { }
+    protected InvalidStateException(
+    System.Runtime.Serialization.SerializationInfo info,
+    System.Runtime.Serialization.StreamingContext context)
+      : base(info, context) { }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,61 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+using System.Security;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Client.ExecutionEngine")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: AllowPartiallyTrustedCallers]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("B6BA196A-F2E3-4de2-AE8A-02D4995F8B57")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ApplicationConstants.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ApplicationConstants.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ApplicationConstants.cs	(revision 4073)
@@ -0,0 +1,115 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data;
+
+namespace HeuristicLab.Hive.Contracts {
+  public class ApplicationConstants {
+
+    public static System.Data.IsolationLevel ISOLATION_LEVEL = IsolationLevel.ReadUncommitted;
+
+    public static System.Transactions.IsolationLevel ISOLATION_LEVEL_SCOPE =
+      System.Transactions.IsolationLevel.ReadUncommitted;
+    public static int HEARTBEAT_MAX_DIF = 120; // value in seconds
+    public static int JOB_TIME_TO_LIVE = 5;
+
+    public static string RESPONSE_SERVERCONSOLE_LOGIN_SUCCESS = "Logged in";
+    public static string RESPONSE_SERVERCONSOLE_LOGIN_FAILED = "Login failed";
+
+    public static string RESPONSE_USERROLE_GET_ALL_USERS = "UserRole.GetAllUsers";
+    public static string RESPONSE_USERROLE_USER_EXISTS_ALLREADY = "UserRole.UserExistsAllready";
+    public static string RESPONSE_USERROLE_USER_SUCCESSFULLY_ADDED = "UserRole.UserSuccessfullyAdded";
+    public static string RESPONSE_USERROLE_USER_DOESNT_EXIST = "UserRole.UserDoesntExist";
+    public static string RESPONSE_USERROLE_USER_REMOVED = "UserRole.UserRemoved";
+    public static string RESPONSE_USERROLE_USERGROUP_EXISTS_ALLREADY = "UserRole.UsergroupExistsAllready";
+    public static string RESPONSE_USERROLE_USERGROUP_ADDED = "UserRole.UserGroupAdded";
+    public static string RESPONSE_USERROLE_USERGROUP_DOESNT_EXIST = "UserRole.UserGroupDoesntExist";
+    public static string RESPONSE_USERROLE_PERMISSIONOWNER_DOESNT_EXIST = "UserRole.PermissionOwnerDoesntExist";
+    public static string RESPONSE_USERROLE_PERMISSIONOWNER_REMOVED = "UserRole.PermissionOwnerRemoved";
+    public static string RESPONSE_USERROLE_PERMISSIONOWNER_ADDED = "UserRole.PermissionOwnerAdded";
+    public static string RESPONSE_USERROLE_GET_ALL_USERGROUPS = "UserRole.AllUserGroupsReturned";
+    public static string RESPONSE_USERROLE_ID_MUST_NOT_BE_SET = "UserRole.IdMustNotBeSet";
+    public static string RESPONSE_USERROLE_USERGROUP_ADDED_TO_USERGROUP = "UserRole.UserGroupAddedToUserGroup";
+    public static string RESPONSE_USERROLE_USERNAME_EXISTS_ALLREADY = "UserRole.UsernameExistsAllready";
+
+    public static string RESPONSE_CLIENT_GET_ALL_CLIENTS = "Client.GetAllClients";
+    public static string RESPONSE_CLIENT_GET_ALL_CLIENTGROUPS = "Client.GetAllClientGroups";
+    public static string RESPONSE_CLIENT_ID_MUST_NOT_BE_SET = "Client.IdMustNotBeSet";
+    public static string RESPONSE_CLIENT_CLIENTGROUP_ADDED = "Client.ClientGroupAdded";
+    public static string RESPONSE_CLIENT_CLIENTGROUP_DOESNT_EXIST = "Client.ClientGroupDoesntExist";
+    public static string RESPONSE_CLIENT_CLIENTGROUP_DELETED = "Client group sucessfully deleted"; 
+    public static string RESPONSE_CLIENT_RESOURCE_ADDED_TO_GROUP = "Client.ResourceAddedToGroup";
+    public static string RESPONSE_CLIENT_RESOURCE_REMOVED = "Client.ResourceRemoved";
+    public static string RESPONSE_CLIENT_RESOURCE_NOT_FOUND = "Client.ResourceNotFound";
+    public static string RESPONSE_CLIENT_PERMISSIONOWNER_DOESNT_EXIST = "Client.PermissionOwnerDoesntExist";
+    public static string RESPONSE_CLIENT_GET_GROUPS_OF_CLIENT = "Get all groups of a client";
+
+    public static string RESPONSE_COMMUNICATOR_HEARTBEAT_RECEIVED = "Communicator.HeardbeatReceived";
+    public static string RESPONSE_COMMUNICATOR_JOB_PULLED = "Communicator.JobPulled";
+    public static string RESPONSE_COMMUNICATOR_JOBRESULT_RECEIVED = "Communicator.JobResultReceived";
+    public static string RESPONSE_COMMUNICATOR_LOGIN_USER_ALLREADY_ONLINE = "Communicator.LoginUserAllreadyOnline";
+    public static string RESPONSE_COMMUNICATOR_LOGIN_SUCCESS = "Communicator.LoginSuccess";
+    public static string RESPONSE_COMMUNICATOR_LOGOUT_CLIENT_NOT_REGISTERED = "Communicator.LogoutClientNotRegistered";
+    public static string RESPONSE_COMMUNICATOR_LOGOUT_SUCCESS = "Communicator.LogoutSuccess";
+    public static string RESPONSE_COMMUNICATOR_NO_JOBS_LEFT = "Communicator.NoJobsLeft";
+    public static string RESPONSE_COMMUNICATOR_ID_MUST_NOT_BE_SET = "Communicator.IdMustNotBeSet";
+    public static string RESPONSE_COMMUNICATOR_NO_JOB_WITH_THIS_ID = "Communicator.NoJobWithThisId";
+    public static string RESPONSE_COMMUNICATOR_WRONG_JOB_STATE = "Communicator.WrongJobState";
+    public static string RESPONSE_COMMUNICATOR_USER_NOT_LOGGED_IN = "Communicator.UserNotLoggedIn";
+    public static string RESPONSE_COMMUNICATOR_JOB_IS_NOT_BEEING_CALCULATED = "Communicator.JobIsNotBeenigCalculated";
+    public static string RESPONSE_COMMUNICATOR_WRONG_CLIENT_FOR_JOB = "Communicator.WrongClientForJob";
+    public static string RESPONSE_COMMUNICATOR_JOB_ALLREADY_FINISHED = "Job allready finished. Not needed anymore";
+    public static string RESPONSE_COMMUNICATOR_JOB_DOESNT_EXIST = "No job exists with this id";
+    public static string RESPONSE_COMMUNICATOR_SEND_JOBRESULT = "Please send the Jobresult to the server";
+    public static string RESPONSE_COMMUNICATOR_PLUGINS_SENT = "Communicator.PluginsSent";
+    public static string RESPONSE_COMMUNICATOR_JOB_WAS_ABORTED = "Job was aborted";
+
+    public static string RESPONSE_COMMUNICATOR_FETCH_OR_FORCEFETCH_CALENDAR =
+      "new Calendar must be fetched / force fetched";
+
+    public static string RESPONSE_JOB_ALL_JOBS = "Job.AllJobs";
+    public static string RESPONSE_JOB_GET_JOB_BY_ID = "Job.GetJobById";
+    public static string RESPONSE_JOB_ID_MUST_NOT_BE_SET = "Job.IdMustNotBeSet";
+    public static string RESPONSE_JOB_JOB_ADDED = "Job.JobAdded";
+    public static string RESPONSE_JOB_JOB_NULL = "Job.JobNull";
+    public static string RESPONSE_JOB_JOB_DOESNT_EXIST = "JobDoesntExist";
+    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_IS_NOT_BEEING_CALCULATED = "Job.IsNotBeeingCalculated";
+    public static string RESPONSE_JOB_JOB_RESULT_SENT = "Job.JobResultSent";
+    public static string RESPONSE_JOB_REQUEST_ALLREADY_SET = "Job.RequestAllreadySet";
+    public static string RESPONSE_JOB_ABORT_REQUEST_ALLREADY_SET = "Job.AbortRequestAllreadySet";
+    public static string RESPONSE_JOB_REQUEST_SET = "Job.RequestSet";
+    public static string RESPONSE_JOB_ABORT_REQUEST_SET = "Job.AbortRequestSet";
+    public static string RESPONSE_JOB_RESULT_NOT_YET_HERE = "Requested job result is not yet finished";
+    public static string RESPONSE_JOB_PROJECT_NAME_EMPTY = "Please specifiy a project name";
+    public static string RESPONSE_JOB_PROJECT_ADDED = "Project successfully added";
+    public static string RESPONSE_JOB_PROJECT_DOESNT_EXIST = "The specified project doesn't exist";
+    public static string RESPONSE_JOB_PROJECT_DELETED = "The project was sucessfully deleted";
+
+    public static string RESPONSE_UPTIMECALENDAR_NO_CALENDAR_FOUND = "No Calendar could be found anywhere in the tree";
+    public static string RESPONSE_UPTIMECALENDAR_STATUS_UPDATED = "Calendar status has been updated";
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/AppointmentDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/AppointmentDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/AppointmentDto.cs	(revision 4073)
@@ -0,0 +1,25 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  
+  [DataContract]
+  public class AppointmentDto: PersistableObject {
+    [DataMember]
+    public DateTime StartDate { get; set; }
+    [DataMember]
+    public DateTime EndDate { get; set; }
+    [DataMember]
+    public bool AllDayEvent { get; set; }
+    [DataMember]
+    public bool Recurring { get; set; }
+    [DataMember]
+    public Guid RecurringId { get; set; }
+    [DataMember]
+    public Guid ResourceId { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/CachedHivePluginInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/CachedHivePluginInfo.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/CachedHivePluginInfo.cs	(revision 4073)
@@ -0,0 +1,43 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.PluginInfrastructure {
+  [DataContract]
+  [Serializable]
+  public class CachedHivePluginInfo : HivePluginInfo {
+
+    private List<byte[]> pluginFiles = new List<byte[]>();
+    /// <summary>
+    /// stores the plugin files in a list of byte arrays
+    /// </summary>
+    [DataMember]
+    public List<byte[]> PluginFiles {
+      get { return pluginFiles; }
+      set { pluginFiles = value; }
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/CachedHivePluginInfoDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/CachedHivePluginInfoDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/CachedHivePluginInfoDto.cs	(revision 4073)
@@ -0,0 +1,44 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Runtime.Serialization;
+using HeuristicLab.PluginInfrastructure.Manager;
+
+namespace HeuristicLab.PluginInfrastructure {
+  [DataContract]
+  [Serializable]
+  public class CachedHivePluginInfoDto : HivePluginInfoDto {
+    
+    /// <summary>
+    /// stores the plugin files in a list of byte arrays
+    /// </summary>
+    [DataMember]
+    public List<HivePluginFile> PluginFiles { get; set; }
+
+    public CachedHivePluginInfoDto() {
+      PluginFiles = new List<HivePluginFile>();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Client.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Client.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Client.cs	(revision 4073)
@@ -0,0 +1,56 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+                                   
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  public enum State { nullState, idle, calculating, offline, finished, abort, requestSnapshot, requestSnapshotSent, pending };
+
+  [DataContract]
+  [Serializable]
+  public class ClientInfo : Resource {
+    [DataMember]
+    public int NrOfCores { get; set; }
+    [DataMember]
+    public int NrOfFreeCores { get; set; }
+    [DataMember]
+    public int CpuSpeedPerCore { get; set; }
+    [DataMember]
+    public int Memory { get; set; }
+    [DataMember]
+    public int FreeMemory { get; set; }
+    [DataMember]
+    public DateTime Login { get; set; }
+    [DataMember]
+    public State State { get; set; }
+    [DataMember]
+    public ClientConfig Config { get; set; }
+
+    public override string ToString() {
+      return base.ToString() + ", NrOfCores: " + NrOfCores + ", NrOfFreeCores " + NrOfFreeCores + ", Login: " + Login + ", State: " + State;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientConfig.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientConfig.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientConfig.cs	(revision 4073)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class ClientConfig : PersistableObject {
+    [DataMember]
+    public String UpDownTimeCalendar { get; set; }
+    [DataMember]
+    public int HeartBeatIntervall { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientConfigDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientConfigDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientConfigDto.cs	(revision 4073)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class ClientConfigDto : PersistableObject {
+    [DataMember]
+    public String UpDownTimeCalendar { get; set; }
+    [DataMember]
+    public int? HeartBeatIntervall { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientDto.cs	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+                                   
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  public enum State { nullState, idle, calculating, offline, finished, abort, requestSnapshot, requestSnapshotSent, pending };
+  public enum CalendarState { Fetch, ForceFetch, Fetching, Fetched, NotAllowedToFetch };
+
+  [DataContract]
+  [Serializable]
+  public class ClientDto : ResourceDto {
+    [DataMember]
+    public int NrOfCores { get; set; }
+    [DataMember]
+    public int NrOfFreeCores { get; set; }
+    [DataMember]
+    public int? CpuSpeedPerCore { get; set; }
+    [DataMember]
+    public int Memory { get; set; }
+    [DataMember]
+    public int FreeMemory { get; set; }
+    [DataMember]
+    public DateTime? Login { get; set; }
+    [DataMember]
+    public State State { get; set; }
+    [DataMember]
+    public CalendarState CalendarSyncStatus { get; set; }
+    [DataMember]
+    public ClientConfigDto Config { get; set; }
+
+    public override string ToString() {
+      return base.ToString() + ", NrOfCores: " + NrOfCores + ", NrOfFreeCores " + NrOfFreeCores + ", Login: " + Login + ", State: " + State;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientGroup.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientGroup.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientGroup.cs	(revision 4073)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class ClientGroup : Resource {
+    [DataMember]
+    public List<Resource> Resources { get; set; }
+
+    public ClientGroup() {
+      Resources = new List<Resource>();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientGroupDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientGroupDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ClientGroupDto.cs	(revision 4073)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class ClientGroupDto : ResourceDto {
+    [DataMember]
+    public List<ResourceDto> Resources { get; set; }
+
+    public ClientGroupDto() {
+      Resources = new List<ResourceDto>();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/GrantedPermissions.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/GrantedPermissions.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/GrantedPermissions.cs	(revision 4073)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  
+  [DataContract]
+  public class GrantedPermissions: HiveBaseObject {
+    [DataMember]
+    public Permission Permission { get; set; }
+    [DataMember]
+    public Resource Resource { get; set; }
+    [DataMember]
+    public PermissionOwner PermissionOwner { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HeartBeatData.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HeartBeatData.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HeartBeatData.cs	(revision 4073)
@@ -0,0 +1,49 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class HeartBeatData {
+    [DataMember]
+    public Guid ClientId { get; set; }
+    [DataMember]
+    public int FreeMemory { get; set; }
+    [DataMember]
+    public int FreeCores { get; set; }
+    [DataMember]
+    public Dictionary<Guid, double> JobProgress { get; set; } // TODO: define Type 
+
+    public override string ToString() {
+      String val = "ClientId: " + ClientId + ", FreeCores: " + FreeCores;
+      foreach (KeyValuePair<Guid, double> kvp in JobProgress) {
+        val += "\nId" + kvp.Key + " Progress " + kvp.Value;
+      }
+      return val;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HiveBaseObject.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HiveBaseObject.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HiveBaseObject.cs	(revision 4073)
@@ -0,0 +1,46 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  [DataContract]
+  public class HiveBaseObject: IHiveObject {
+    [DataMember]
+    public long Id { get; set; }
+
+    public override bool Equals(object obj) {
+      if (obj is IHiveObject)
+        return this.Id.Equals(
+          (obj as IHiveObject).Id);
+      else
+        return base.Equals(obj);
+    }
+
+    public override int GetHashCode() {
+      return this.Id.GetHashCode();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginFile.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginFile.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginFile.cs	(revision 4073)
@@ -0,0 +1,21 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  [Serializable]
+  [DataContract]
+  public class HivePluginFile {
+    [DataMember]
+    public byte[] BinaryFile { get; set; }
+    [DataMember]
+    public String Name { get; set; }  
+
+    public HivePluginFile(byte[] binaryFile, String name) {
+      BinaryFile = binaryFile;
+      Name = name;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginInfo.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginInfo.cs	(revision 4073)
@@ -0,0 +1,44 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class HivePluginInfo : PersistableObject {
+    [DataMember]
+    public String Name { get; set; }
+
+    [DataMember]
+    public String Version { get; set; }
+
+    [DataMember]
+    public DateTime BuildDate { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginInfoDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginInfoDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/HivePluginInfoDto.cs	(revision 4073)
@@ -0,0 +1,44 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class HivePluginInfoDto : PersistableObject {
+    [DataMember]
+    public String Name { get; set; }
+
+    [DataMember]
+    public Version Version { get; set; }
+
+    [DataMember]
+    public DateTime BuildDate { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/IHiveObject.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/IHiveObject.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/IHiveObject.cs	(revision 4073)
@@ -0,0 +1,31 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  public interface IHiveObject {
+    long Id { get; set;  }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Job.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Job.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Job.cs	(revision 4073)
@@ -0,0 +1,72 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class Job : PersistableObject {
+    [DataMember]
+    public State State { get; set; }
+    [DataMember]
+    public Guid UserId { get; set; }
+    [DataMember]
+    public ClientInfo Client { get; set; }
+    [DataMember]
+    public Job ParentJob { get; set; }
+    [DataMember]
+    public double Percentage { get; set; }
+    [DataMember]
+    public DateTime DateCreated { get; set; }
+    [DataMember]
+    public DateTime DateCalculated { get; set; }
+    [DataMember]
+    public int Priority { get; set; }
+    [DataMember]
+    public int CoresNeeded { get; set; }
+    [DataMember]
+    public int MemoryNeeded { get; set; }
+    [DataMember]
+    public List<HivePluginInfo> PluginsNeeded { get; set; }
+    [DataMember]
+    public List<Guid> AssignedResourceIds { get; set; }
+    [DataMember]
+    public Project Project { get; set; }
+
+    public override string ToString() {
+      return base.ToString() + "State: " + State + ", [Ressource : " + Client + " ] , DateCreated: " + DateCreated + ", DateCalculated: " + DateCalculated +
+        "Priority: " + Priority + ", CoresNeeded: " + CoresNeeded + "AssignedResources: " + AssignedResourceIds;
+    }
+
+    public Job() {
+      PluginsNeeded = new List<HivePluginInfo>();
+      AssignedResourceIds = new List<Guid>();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/JobDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/JobDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/JobDto.cs	(revision 4073)
@@ -0,0 +1,74 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class JobDto : PersistableObject {
+    [DataMember]
+    public State State { get; set; }
+    [DataMember]
+    public Guid UserId { get; set; }
+    [DataMember]
+    public ClientDto Client { get; set; }
+    [DataMember]
+    public JobDto ParentJob { get; set; }
+    [DataMember]
+    public double? Percentage { get; set; }
+    [DataMember]
+    public DateTime? DateCreated { get; set; }
+    [DataMember]
+    public DateTime? DateCalculated { get; set; }
+    [DataMember]
+    public DateTime? DateFinished { get; set; }
+    [DataMember]
+    public int Priority { get; set; }
+    [DataMember]
+    public int CoresNeeded { get; set; }
+    [DataMember]
+    public int MemoryNeeded { get; set; }
+    [DataMember]
+    public List<HivePluginInfoDto> PluginsNeeded { get; set; }
+    [DataMember]
+    public List<Guid> AssignedResourceIds { get; set; }
+    [DataMember]
+    public ProjectDto Project { get; set; }
+
+    public override string ToString() {
+      return base.ToString() + "State: " + State + ", [Ressource : " + Client + " ] , DateCreated: " + DateCreated + ", DateCalculated: " + DateCalculated +
+        "Priority: " + Priority + ", CoresNeeded: " + CoresNeeded + "AssignedResources: " + AssignedResourceIds;
+    }
+
+    public JobDto() {
+      PluginsNeeded = new List<HivePluginInfoDto>();
+      AssignedResourceIds = new List<Guid>();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/JobResult.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/JobResult.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/JobResult.cs	(revision 4073)
@@ -0,0 +1,47 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class JobResult : PersistableObject {
+    [DataMember]
+    public Guid JobId { get; set; }
+    [DataMember]
+    public double Percentage { get; set; }
+    [DataMember]
+    public DateTime Timestamp { get; set; }
+    [DataMember]
+    public Guid ClientId { get; set; }
+    [DataMember]
+    public Exception Exception { get; set; }
+    [DataMember]
+    public DateTime DateFinished { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Permission.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Permission.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Permission.cs	(revision 4073)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class Permission: HiveBaseObject {
+    [DataMember]
+    public String Name { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/PermissionOwner.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/PermissionOwner.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/PermissionOwner.cs	(revision 4073)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class PermissionOwner: HiveBaseObject {
+    [DataMember]
+    public string Name { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Project.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Project.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Project.cs	(revision 4073)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class Project : PersistableObject {
+    [DataMember]
+    public String Name { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ProjectDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ProjectDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ProjectDto.cs	(revision 4073)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class ProjectDto : PersistableObject {
+    [DataMember]
+    public String Name { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Resource.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Resource.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/Resource.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class Resource : PersistableObject {
+    [DataMember]
+    public string Name { get; set; }
+
+    public override string ToString() {
+      return Id + " " + Name;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ResourceDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ResourceDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/ResourceDto.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  [Serializable]
+  public class ResourceDto : PersistableObject {
+    [DataMember]
+    public string Name { get; set; }
+
+    public override string ToString() {
+      return Id + " " + Name;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/SerializedJob.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/SerializedJob.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/SerializedJob.cs	(revision 4073)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  [DataContract]
+  [Serializable]
+  public class SerializedJob {
+    [DataMember]
+    public JobDto JobInfo { get; set; }
+    
+    [DataMember]
+    public byte[] SerializedJobData { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/SerializedJobResult.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/SerializedJobResult.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/SerializedJobResult.cs	(revision 4073)
@@ -0,0 +1,38 @@
+﻿   #region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  [DataContract]
+  [Serializable]
+  public class SerializedJobResult {
+    [DataMember]
+    public JobResult JobResult { get; set; }
+
+    [DataMember]
+    public byte[] SerializedJobResultData { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UpTimeStatistics.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UpTimeStatistics.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UpTimeStatistics.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class UpTimeStatistics : PersistableObject {
+    [DataMember]
+    public ClientInfo Client { get; set; }
+    [DataMember]
+    public DateTime Login { get; set; }
+    [DataMember]
+    public DateTime Logout { get; set; }
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UpTimeStatisticsDto.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UpTimeStatisticsDto.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UpTimeStatisticsDto.cs	(revision 4073)
@@ -0,0 +1,41 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class UpTimeStatisticsDto : PersistableObject {
+    [DataMember]
+    public ClientDto Client { get; set; }
+    [DataMember]
+    public DateTime Login { get; set; }
+    [DataMember]
+    public DateTime Logout { get; set; }
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/User.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/User.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/User.cs	(revision 4073)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class User : PermissionOwner {
+    [DataMember]
+    public String Password { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UserGroup.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UserGroup.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/BusinessObjects/UserGroup.cs	(revision 4073)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class UserGroup : PermissionOwner {
+    [DataMember]
+    public IList<PermissionOwner> Members { get; set; }
+
+    public UserGroup() {
+      Members = new List<PermissionOwner>();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HeuristicLab.Hive.Contracts-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HeuristicLab.Hive.Contracts-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HeuristicLab.Hive.Contracts-3.3.csproj	(revision 4073)
@@ -0,0 +1,182 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Contracts</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Contracts-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Transactions" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ApplicationConstants.cs" />
+    <Compile Include="BusinessObjects\AppointmentDto.cs" />
+    <Compile Include="BusinessObjects\CachedHivePluginInfoDto.cs" />
+    <Compile Include="BusinessObjects\ClientGroupDto.cs" />
+    <Compile Include="BusinessObjects\HivePluginFile.cs" />
+    <Compile Include="BusinessObjects\ResourceDto.cs" />
+    <Compile Include="BusinessObjects\SerializedJob.cs" />
+    <Compile Include="BusinessObjects\ProjectDto.cs" />
+    <Compile Include="BusinessObjects\HivePluginInfoDto.cs" />
+    <Compile Include="BusinessObjects\HeartBeatData.cs" />
+    <Compile Include="BusinessObjects\JobDto.cs" />
+    <Compile Include="BusinessObjects\JobResult.cs" />
+    <Compile Include="BusinessObjects\SerializedJobResult.cs" />
+    <Compile Include="BusinessObjects\UpTimeStatisticsDto.cs" />
+    <Compile Include="BusinessObjects\ClientDto.cs" />
+    <Compile Include="BusinessObjects\ClientConfigDto.cs" />
+    <Compile Include="RecurrentEvent.cs" />
+    <Compile Include="ResponseCalendar.cs" />
+    <Compile Include="ResponseSerializedJob.cs" />
+    <Compile Include="MultiStream.cs" />
+    <Compile Include="Interfaces\IClientFacade.cs" />
+    <Compile Include="Interfaces\IExecutionEngineFacade.cs" />
+    <Compile Include="ResponseObject.cs" />
+    <Compile Include="Interfaces\IClientManager.cs" />
+    <Compile Include="Interfaces\IJobManager.cs" />
+    <Compile Include="Interfaces\ILifecycleManager.cs" />
+    <Compile Include="Interfaces\IServerConsoleFacade.cs" />
+    <Compile Include="MessageContainer.cs" />
+    <Compile Include="ResponseJob.cs" />
+    <Compile Include="HiveContractPlugin.cs" />
+    <Compile Include="Interfaces\IClientCommunicator.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Response.cs" />
+    <Compile Include="ResponseHB.cs" />
+    <Compile Include="ResponseList.cs" />
+    <Compile Include="ResponsePlugin.cs" />
+    <Compile Include="ResponseResultReceived.cs" />
+    <Compile Include="StreamedObject.cs" />
+    <Compile Include="WcfSettings.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="HiveServerMessages.resx">
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HiveContractPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HiveContractPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HiveContractPlugin.cs	(revision 4073)
@@ -0,0 +1,34 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Server {
+  [Plugin("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginFile("HeuristicLab.Hive.Contracts-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  public class HiveServerContracts : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HiveServerMessages.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HiveServerMessages.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HiveServerMessages.resx	(revision 4073)
@@ -0,0 +1,240 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Client.GetAllClientGroups" xml:space="preserve">
+    <value>All ClientGroups returned</value>
+  </data>
+  <data name="Client.GetAllClients" xml:space="preserve">
+    <value>All Clients returned</value>
+  </data>
+  <data name="Communicator.HeardbeatReceived" xml:space="preserve">
+    <value>Heartbeat received</value>
+  </data>
+  <data name="Communicator.JobPulled" xml:space="preserve">
+    <value>Job sent</value>
+  </data>
+  <data name="Communicator.JobResultReceived" xml:space="preserve">
+    <value>JobResult received, thanks for calculating</value>
+  </data>
+  <data name="Communicator.LoginClientNotRegistered" xml:space="preserve">
+    <value>Sorry this client was not registered yet</value>
+  </data>
+  <data name="Communicator.LoginSuccess" xml:space="preserve">
+    <value>The Login was successfull</value>
+  </data>
+  <data name="Communicator.LogoutSuccess" xml:space="preserve">
+    <value>You where logged out successfully. Good bye</value>
+  </data>
+  <data name="Communicator.LogoutUserAllreadyOnline" xml:space="preserve">
+    <value>A User with this GUID is allready logged in</value>
+  </data>
+  <data name="UserRole.AllUserGroupsReturned" xml:space="preserve">
+    <value>All UserGroups returned</value>
+  </data>
+  <data name="UserRole.GetAllUsers" xml:space="preserve">
+    <value>All Users returned</value>
+  </data>
+  <data name="UserRole.PermissionOwnerAdded" xml:space="preserve">
+    <value>PermissionOwner successfully added</value>
+  </data>
+  <data name="UserRole.PermissionOwnerDoesntExist" xml:space="preserve">
+    <value>PermissionOwner doesnt exist</value>
+  </data>
+  <data name="UserRole.PermissionOwnerRemoved" xml:space="preserve">
+    <value>PermissionOwner successfully removed</value>
+  </data>
+  <data name="UserRole.UserDoesntExist" xml:space="preserve">
+    <value>Sorry, but this user doesn't exist</value>
+  </data>
+  <data name="UserRole.UserExistsAllready" xml:space="preserve">
+    <value>Sorry, but a user with this name exists allready in database</value>
+  </data>
+  <data name="UserRole.UserGroupAdded" xml:space="preserve">
+    <value>UserGroup successfully added to database</value>
+  </data>
+  <data name="UserRole.UsergroupExistsAllready" xml:space="preserve">
+    <value>The UserGroup exists allready</value>
+  </data>
+  <data name="UserRole.UserRemoved" xml:space="preserve">
+    <value>User sucessfully removed from database</value>
+  </data>
+  <data name="UserRole.UserSuccessfullyAdded" xml:space="preserve">
+    <value>User successfully added to database</value>
+  </data>
+  <data name="Client.ClientGroupAdded" xml:space="preserve">
+    <value>ClientGroup successfully added</value>
+  </data>
+  <data name="Client.ClientGroupDoesntExist" xml:space="preserve">
+    <value>The specified ClientGroup doesn't exist</value>
+  </data>
+  <data name="Client.IdMustNotBeSet" xml:space="preserve">
+    <value>In this context the id must not be set</value>
+  </data>
+  <data name="Client.ResourceAddedToGroup" xml:space="preserve">
+    <value>Resource successfully added to ClientGroup</value>
+  </data>
+  <data name="Client.ResourceRemoved" xml:space="preserve">
+    <value>Resource successfully removed from ClientGroup</value>
+  </data>
+  <data name="UserRole.IdMustNotBeSet" xml:space="preserve">
+    <value>In this context the id must not be set</value>
+  </data>
+  <data name="Job.AllJobs" xml:space="preserve">
+    <value>All Jobs returned</value>
+  </data>
+  <data name="Job.IdMustNotBeSet" xml:space="preserve">
+    <value>Id must not be set in this context</value>
+  </data>
+  <data name="Job.JobAdded" xml:space="preserve">
+    <value>Job successfully added to database</value>
+  </data>
+  <data name="Job.JobNull" xml:space="preserve">
+    <value>The job you sent was null</value>
+  </data>
+  <data name="Job.JobRemoved" xml:space="preserve">
+    <value>Job successfully removed</value>
+  </data>
+  <data name="JobDoesntExist" xml:space="preserve">
+    <value>The specified job doesn't exist</value>
+  </data>
+  <data name="UserRole.UsernameExistsAllready" xml:space="preserve">
+    <value>A user with this username exists allready</value>
+  </data>
+  <data name="Communicator.IdMustNotBeSet" xml:space="preserve">
+    <value>The id must not be set in this context</value>
+  </data>
+  <data name="Communicator.NoJobWithThisId" xml:space="preserve">
+    <value>There exists no job with this id</value>
+  </data>
+  <data name="Job.JobStateMustBeOffline" xml:space="preserve">
+    <value>The state of the job must be offline</value>
+  </data>
+  <data name="Communicator.UserNotLoggedIn" xml:space="preserve">
+    <value>User is not logged in, you must login before sending Heartbeats</value>
+  </data>
+  <data name="Communicator.JobIsNotBeenigCalculated" xml:space="preserve">
+    <value>There is no client registered to calculate this job</value>
+  </data>
+  <data name="Communicator.WrongClientForJob" xml:space="preserve">
+    <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: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientCommunicator.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientCommunicator.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientCommunicator.cs	(revision 4073)
@@ -0,0 +1,69 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {
+  /// <summary>
+  /// This is the facade for the client communication
+  /// </summary>
+  [ServiceContract]
+  public interface IClientCommunicator {
+    [OperationContract]
+    Response Login(ClientDto clientInfo);
+    [OperationContract]
+    ResponseHB ProcessHeartBeat(HeartBeatData hbData);
+    [OperationContract]
+    ResponseJob SendJob(Guid clientId);
+    //[OperationContract]
+    //ResponseSerializedJob SendSerializedJob(Guid clientId);
+    [OperationContract]
+    ResponseResultReceived StoreFinishedJobResult(Guid clientId, 
+      Guid jobId, 
+      byte[] result, 
+      double percentage,
+      Exception exception);
+    [OperationContract]
+    ResponseResultReceived ProcessSnapshot(Guid clientId,
+      Guid jobId, 
+      byte[] result, 
+      double percentage, 
+      Exception exception);
+    [OperationContract]
+    Response Logout(Guid clientId);
+    [OperationContract]
+    Response IsJobStillNeeded(Guid jobId);
+    [OperationContract]
+    ResponsePlugin SendPlugins(List<HivePluginInfoDto> pluginList);
+
+    [OperationContract]
+    ResponseCalendar GetCalendar(Guid clientId);
+    [OperationContract]
+    Response SetCalendarStatus(Guid clientId, CalendarState state);
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientFacade.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientFacade.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientFacade.cs	(revision 4073)
@@ -0,0 +1,45 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using System.IO;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {
+  [ServiceContract]
+  public interface IClientFacade: IClientCommunicator {
+    [OperationContract]
+    Stream SendStreamedJob(Guid clientId);
+
+    [OperationContract]
+    Stream SendStreamedPlugins(List<HivePluginInfoDto> pluginList);
+
+    [OperationContract]
+    ResponseResultReceived StoreFinishedJobResultStreamed(Stream stream);
+
+    [OperationContract]
+    ResponseResultReceived ProcessSnapshotStreamed(Stream stream);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientManager.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IClientManager.cs	(revision 4073)
@@ -0,0 +1,62 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {
+  /// <summary>
+  /// This is the faced for the management console
+  /// </summary>
+  [ServiceContract]
+  public interface IClientManager {
+    [OperationContract]
+    ResponseList<ClientDto> GetAllClients();
+    [OperationContract]
+    [ServiceKnownType(typeof (ResourceDto))]
+    [ServiceKnownType(typeof(ClientDto))]
+    [ServiceKnownType(typeof(ClientGroupDto))]
+    ResponseList<ClientGroupDto> GetAllClientGroups();
+    [OperationContract]
+    ResponseObject<List<ClientGroupDto>> GetAllGroupsOfResource(Guid resourceId);
+    [OperationContract]
+    ResponseObject<ClientGroupDto> AddClientGroup(ClientGroupDto clientGroup);
+    [OperationContract]
+    Response DeleteClientGroup(Guid clientGroupId);
+    [OperationContract]
+    [ServiceKnownType(typeof(ResourceDto))]
+    [ServiceKnownType(typeof(ClientDto))]
+    [ServiceKnownType(typeof(ClientGroupDto))]
+    Response AddResourceToGroup(Guid clientGroupId, ResourceDto resource);
+    [OperationContract]
+    Response DeleteResourceFromGroup(Guid clientGroupId, Guid resourceId);
+    [OperationContract]
+    ResponseList<UpTimeStatisticsDto> GetAllUpTimeStatistics();
+    [OperationContract]
+    ResponseList<AppointmentDto> GetUptimeCalendarForResource(Guid guid);
+    [OperationContract]
+    Response SetUptimeCalendarForResource(Guid guid, IEnumerable<AppointmentDto> appointments, bool isForced);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IExecutionEngineFacade.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IExecutionEngineFacade.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IExecutionEngineFacade.cs	(revision 4073)
@@ -0,0 +1,43 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {
+  [ServiceContract]
+  public interface IExecutionEngineFacade {
+    [OperationContract]
+    ResponseObject<JobDto> AddJob(SerializedJob job);
+    [OperationContract]
+    ResponseObject<JobDto> AddJobWithGroupStrings(SerializedJob jobObj, IEnumerable<string> groups);
+    [OperationContract]
+    Response RequestSnapshot(Guid jobId);
+    [OperationContract]
+    ResponseObject<SerializedJob> GetLastSerializedResult(Guid jobId, bool requested, bool snapshot);
+    [OperationContract]
+    Response AbortJob(Guid jobId);    
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IJobManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IJobManager.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IJobManager.cs	(revision 4073)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {
+  /// <summary>
+  /// This is the facade for the Job Manager used by the Management Console
+  /// </summary>
+  [ServiceContract]
+  public interface IJobManager {
+    [OperationContract]
+    ResponseList<JobDto> GetAllJobsWithFilter(State jobState, int offset, int count);
+    [OperationContract]
+    ResponseList<JobDto> GetAllJobs();
+    [OperationContract]
+    ResponseObject<JobDto> GetJobById(Guid jobId);
+    [OperationContract]
+    ResponseObject<JobDto> GetJobByIdWithDetails(Guid jobId);
+    [OperationContract]
+    ResponseObject<JobDto> AddNewJob(SerializedJob job);
+    [OperationContract]
+    Response RemoveJob(Guid jobId);
+    [OperationContract]
+    ResponseObject<JobDto> GetLastJobResultOf(Guid jobId);
+    [OperationContract]
+    ResponseObject<SerializedJob> GetLastSerializedJobResultOf(Guid jobId, bool requested, bool snapshot);
+    [OperationContract]
+    ResponseList<JobResult> GetAllJobResults(Guid jobId);
+    [OperationContract]
+    Response RequestSnapshot(Guid jobId);
+    [OperationContract]
+    Response AbortJob(Guid jobId);
+    [OperationContract]
+    ResponseList<ProjectDto> GetAllProjects();
+    [OperationContract]
+    Response CreateProject(ProjectDto project);
+    [OperationContract]
+    Response ChangeProject(ProjectDto project);
+    [OperationContract]
+    Response DeleteProject(Guid projectId);
+    [OperationContract]
+    ResponseList<JobDto> GetJobsByProject(Guid projectId);
+    [OperationContract]
+    ResponseObject<JobDto> AddJobWithGroupStrings(SerializedJob job, IEnumerable<string> resources);    
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/ILifecycleManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/ILifecycleManager.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/ILifecycleManager.cs	(revision 4073)
@@ -0,0 +1,58 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {    
+  /// <summary>
+  /// Manages the lifecycle of the application
+  /// </summary>
+  public interface ILifecycleManager {    
+    /// <summary>
+    /// Initializes the application
+    /// </summary>
+    void Init();
+
+    /// <summary>
+    /// The server heartbeat
+    /// </summary>
+    void RegisterHeartbeat(EventHandler handler);
+
+    /// <summary>
+    /// The startup event
+    /// </summary>
+    void RegisterStartup(EventHandler handler);
+
+    /// <summary>
+    /// The shutdown event
+    /// </summary>
+    void RegisterShutdown(EventHandler handler);
+
+    /// <summary>
+    /// Shuts the application down
+    /// </summary>
+    void Shutdown();
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IServerConsoleFacade.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IServerConsoleFacade.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IServerConsoleFacade.cs	(revision 4073)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {
+  /// <summary>
+  /// Facade for the server management console
+  /// </summary>
+  [ServiceContract(SessionMode=SessionMode.Required)]
+  public interface IServerConsoleFacade : IClientManager, 
+    IJobManager {
+    [OperationContract]
+    Response Login(String username, String password); 
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IUserRoleManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IUserRoleManager.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IUserRoleManager.cs	(revision 4073)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts.Interfaces {
+  /// <summary>
+  /// This is the facade for the User/Role Manager used by the Management Console
+  /// </summary>
+  [ServiceContract]
+  public interface IUserRoleManager {
+    [OperationContract]
+    ResponseList<User> GetAllUsers();
+    [OperationContract]
+    ResponseObject<User> AddNewUser(User user);
+    [OperationContract]
+    Response RemoveUser(long userId);
+    [OperationContract]
+    ResponseObject<UserGroup> AddNewUserGroup(UserGroup userGroup);
+    [OperationContract]
+    Response RemoveUserGroup(long groupId);
+    [OperationContract]
+    [ServiceKnownType(typeof(PermissionOwner))]
+    [ServiceKnownType(typeof(User))]
+    [ServiceKnownType(typeof(UserGroup))]
+    ResponseList<UserGroup> GetAllUserGroups();
+    [OperationContract]
+    Response AddUserToGroup(long groupId, long userId);
+    [OperationContract]
+    Response AddUserGroupToGroup(long groupId, long groupToAddId);
+    [OperationContract]
+    Response RemovePermissionOwnerFromGroup(long groupId, long userId);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/MessageContainer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/MessageContainer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/MessageContainer.cs	(revision 4073)
@@ -0,0 +1,52 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Hive.Contracts {
+  /// <summary>
+  /// The MessageContainer is a container class for Messages. Its two parts are:
+  /// the actual message itself and the JobId, refered by the message
+  /// </summary>
+  [Serializable]
+  public class MessageContainer {
+
+    public enum MessageType { FetchJob, AbortJob, JobAborted, RequestSnapshot, FinishedJob, NoMessage, SnapshotReady, Shutdown, JobFailed, UptimeLimitDisconnect,
+      FetchOrForceFetchCalendar
+    };
+
+    public MessageType Message { get; set; }
+    public Guid JobId { get; set; }
+
+    public MessageContainer(MessageType message) {
+      Message = message;
+      JobId = Guid.Empty;
+    }
+    public MessageContainer(MessageType message, Guid jobId) {
+      Message = message;
+      JobId = jobId;
+    }
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/MultiStream.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/MultiStream.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/MultiStream.cs	(revision 4073)
@@ -0,0 +1,115 @@
+/* taken from: 
+ * http://www.clevercomponents.com/articles/article017/multistreamcs.asp
+ * */
+
+using System;
+using System.IO;
+using System.Collections;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Contracts {
+  public class MultiStream : Stream {
+    ArrayList streamList = new ArrayList();
+    long position = 0;
+    public override bool CanRead {
+      get { return true; }
+    }
+
+    public override bool CanSeek {
+      get { return true; }
+    }
+
+    public override bool CanWrite {
+      get { return false; }
+    }
+
+    public override long Length {
+      get {
+        long result = 0;
+        foreach (Stream stream in streamList) {
+          result += stream.Length;
+        }
+        return result;
+      }
+    }
+
+    public override long Position {
+      get { return position; }
+      set { Seek(value, SeekOrigin.Begin); }
+    }
+
+    public override void Flush() { }
+
+    public override long Seek(long offset, SeekOrigin origin) {
+      long len = Length;
+      switch (origin) {
+        case SeekOrigin.Begin:
+          position = offset;
+          break;
+        case SeekOrigin.Current:
+          position += offset;
+          break;
+        case SeekOrigin.End:
+          position = len - offset;
+          break;
+      }
+      if (position > len) {
+        position = len;
+      } else if (position < 0) {
+        position = 0;
+      }
+      return position;
+    }
+
+    public override void SetLength(long value) { }
+
+    public void AddStream(Stream stream) {
+      streamList.Add(stream);
+    }
+
+    public override int Read(byte[] buffer, int offset, int count) {
+      long len = 0;
+      int result = 0;
+      int buf_pos = offset;
+      int bytesRead;
+      foreach (Stream stream in streamList) {
+        if (position < (len + stream.Length)) {
+          stream.Position = position - len;
+          bytesRead = stream.Read(buffer, buf_pos, count);
+          result += bytesRead;
+          buf_pos += bytesRead;
+          position += bytesRead;
+          if (bytesRead < count) {
+            count -= bytesRead;
+          } else {
+            break;
+          }
+        }
+        len += stream.Length;
+      }
+      return result;
+    }
+
+    public override void Write(byte[] buffer, int offset, int count) {
+    }
+
+    public override void Close() {
+      foreach (Stream s in this.streamList) {
+        s.Close();
+      }
+      
+      base.Close();
+    }
+
+    protected override void Dispose(bool disposing) {
+      //if (!disposing) {
+        foreach (Stream s in this.streamList) {
+          Console.WriteLine("DISPOSING STREAM");
+          s.Dispose();
+        }
+      //}
+      
+      base.Dispose(disposing);
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,61 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+using System.Security;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Contracts")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: AllowPartiallyTrustedCallers]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("B6BA196A-F2E3-4de2-AE8A-02D4995F8B57")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/RecurrentEvent.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/RecurrentEvent.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/RecurrentEvent.cs	(revision 4073)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Hive.Client.Console
+{
+  public class RecurrentEvent
+  {
+    public DateTime DateFrom { get; set; }
+    public DateTime DateTo { get; set; }
+    public bool AllDay { get; set; }
+    public int IncWeeks { get; set; }
+    public HashSet<DayOfWeek> WeekDays { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Response.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Response.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Response.cs	(revision 4073)
@@ -0,0 +1,40 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+  /// <summary>
+  /// Server response class
+  /// </summary>
+  [DataContract]
+  [Serializable]
+  public class Response {
+    [DataMember]
+    public bool Success { get; set; }
+    [DataMember]
+    public string StatusMessage { get; set; } 
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseCalendar.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseCalendar.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseCalendar.cs	(revision 4073)
@@ -0,0 +1,15 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts {
+  public class ResponseCalendar: Response {
+    [DataMember]
+    public bool ForceFetch { get; set; }
+    [DataMember]
+    public IEnumerable<AppointmentDto> Appointments { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseHB.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseHB.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseHB.cs	(revision 4073)
@@ -0,0 +1,40 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+
+
+  /// <summary>
+  /// Response Heartbeat class
+  /// Return value to hearbeats sent by the client
+  /// </summary>
+  [DataContract]
+  public class ResponseHB : Response {
+    [DataMember]
+    public List<MessageContainer> ActionRequest { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseJob.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseJob.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseJob.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+
+  /// <summary>
+  /// Response Job class
+  /// If a client pulls a Job from the server he gets a ResponseJob as answer
+  /// </summary>
+  [DataContract]
+  [Serializable]
+  public class ResponseJob : Response {
+    [DataMember]
+    public JobDto Job { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseList.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseList.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseList.cs	(revision 4073)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts {
+
+  [DataContract]
+  public class ResponseList<T> : Response {
+    [DataMember]
+    public IList<T> List { get; set; }
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseObject.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseObject.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseObject.cs	(revision 4073)
@@ -0,0 +1,36 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+
+  [DataContract]
+  public class ResponseObject<T> : Response {
+    [DataMember]
+    public T Obj { get; set; }
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponsePlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponsePlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponsePlugin.cs	(revision 4073)
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Contracts {
+
+  [DataContract]
+  [Serializable]
+  public class ResponsePlugin : Response {
+    public ResponsePlugin() {
+      Plugins = new List<CachedHivePluginInfoDto>();
+    }
+
+    [DataMember]
+    public List<CachedHivePluginInfoDto> Plugins { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseResultReceived.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseResultReceived.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseResultReceived.cs	(revision 4073)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Contracts {
+  [DataContract]
+  public class ResponseResultReceived : Response {
+    [DataMember]
+    public Guid JobId { get; set; }
+    [DataMember]
+    public bool finished { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseSerializedJob.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseSerializedJob.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ResponseSerializedJob.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+
+  /// <summary>
+  /// Response Job class
+  /// If a client pulls a Job from the server he gets a ResponseJob as answer
+  /// </summary>
+  [DataContract]
+  [Serializable]
+  public class ResponseSerializedJob : Response {
+    [DataMember]
+    public SerializedJob Job { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/StreamedObject.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/StreamedObject.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/StreamedObject.cs	(revision 4073)
@@ -0,0 +1,90 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+  [DataContract]
+  public class StreamedObject<T> : Stream {
+    private T encapsulatedObject;
+
+    private Stream stream = 
+      new MemoryStream();
+
+    public StreamedObject(T encapsulatedObject) {
+      this.encapsulatedObject = encapsulatedObject;
+
+      BinaryFormatter formatter =
+        new BinaryFormatter();
+      formatter.Serialize(this.stream, this.encapsulatedObject);
+
+      this.stream.Seek(0, SeekOrigin.Begin);
+    }
+
+    public T EncapsulatedObject {
+      get {
+        return this.encapsulatedObject;
+      }
+    }
+
+    public override bool CanRead {
+      get { return this.stream.CanRead; }
+    }
+
+    public override bool CanSeek {
+      get { throw new NotImplementedException(); }
+    }
+
+    public override bool CanWrite {
+      get { throw new NotImplementedException(); }
+    }
+
+    public override void Flush() {
+      throw new NotImplementedException();
+    }
+
+    public override long Length {
+      get { return this.stream.Length; }
+    }
+
+    public override long Position {
+      get {
+        return this.stream.Position;
+      }
+      set {
+        if(this.stream.Position != value)
+          throw new NotImplementedException();
+      }
+    }
+
+    public override int Read(byte[] buffer, int offset, int count) {
+      int read = this.stream.Read(buffer, offset, count);
+
+      return read;
+    }
+
+    public override long Seek(long offset, SeekOrigin origin) {
+      throw new NotImplementedException();
+    }
+
+    public override void SetLength(long value) {
+      throw new NotImplementedException();
+    }
+
+    public override void Write(byte[] buffer, int offset, int count) {
+      throw new NotImplementedException();
+    }
+
+    public override void Close() {
+      this.stream.Close();
+      base.Close();
+    }
+    protected override void Dispose(bool disposing) {
+      this.stream.Dispose();
+      base.Dispose(disposing);
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/WcfSettings.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/WcfSettings.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/WcfSettings.cs	(revision 4073)
@@ -0,0 +1,117 @@
+﻿//#define USE_MSG_BINDING
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceModel.Channels;
+using System.ServiceModel;
+using System.Security.Cryptography.X509Certificates;
+using System.Net;
+
+namespace HeuristicLab.Hive.Contracts {
+  public static class WcfSettings {
+
+    public const string SERVERCERT = "HIVE-Server";
+    public const int DEFAULTPORT = 9000;
+    
+    /// <summary>
+    /// Gets a pre-defined binding using TCP for secure transport.
+    /// </summary>
+    /// <returns>A binding type of <see cref="NetTcpBinding"/></returns>
+    public static Binding GetBinding() {
+#if USE_MSG_BINDING
+      NetTcpBinding binding = new NetTcpBinding(SecurityMode.Message);
+#else
+      NetTcpBinding binding = new NetTcpBinding();
+#endif
+      binding.MaxBufferSize = int.MaxValue;
+      binding.MaxReceivedMessageSize = int.MaxValue;
+      binding.ReaderQuotas.MaxArrayLength = int.MaxValue;
+      binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
+      binding.CloseTimeout = new TimeSpan(0, 5, 0);
+      binding.ReceiveTimeout = new TimeSpan(0, 5, 0);
+      binding.SendTimeout = new TimeSpan(0, 5, 0);
+      return binding;
+    }
+
+    public static Binding GetStreamedBinding() {
+#if USE_MSG_BINDING
+      NetTcpBinding binding = new NetTcpBinding(SecurityMode.Message);
+#else
+      NetTcpBinding binding = new NetTcpBinding();
+#endif
+      binding.TransferMode = TransferMode.Streamed;
+      binding.MaxReceivedMessageSize = int.MaxValue;
+      binding.ReaderQuotas.MaxArrayLength = int.MaxValue;
+      binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
+      binding.CloseTimeout = new TimeSpan(0, 5, 0);
+      binding.ReceiveTimeout = new TimeSpan(0, 5, 0);
+      binding.SendTimeout = new TimeSpan(0, 5, 0);
+      //Disabling security mode, for the moment
+      binding.Security.Mode = SecurityMode.None;
+      
+      return binding;
+    }
+
+    /// <summary>
+    /// Defines the used certificate for authentification located in a certification store.
+    /// </summary>
+    /// <param name="svchost">A service for which this certificate is applicable.</param>
+    public static void SetServiceCertificate(ServiceHost svchost) {
+#if USE_MSG_BINDING
+      svchost.Credentials.ServiceCertificate.SetCertificate(
+        StoreLocation.LocalMachine,
+        StoreName.My,
+        X509FindType.FindBySubjectName,
+        SERVERCERT);
+#endif
+    }
+
+    /// <summary>
+    /// Gets the currently active IP address.
+    /// <remarks>If more than one IP connections is active, the first one will be used.</remarks>
+    /// </summary>
+    /// <returns></returns>
+    public static string GetActiveIP() {
+      return System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()[0].LocalEndPoint.Address.ToString();
+    }
+
+    /// <summary>
+    /// Gets the default port used for HIVE services.
+    /// </summary>
+    /// <returns></returns>
+    public static int GetDefaultPort() {
+      return DEFAULTPORT;
+    }
+  }
+
+  /// <summary>
+  /// This class verifies the certificate defined by <see cref="SetServerCertificate"></see> method. Normally,
+  /// the verification process is managed by the underlying operating system.
+  /// </summary>
+  /// <remarks>
+  /// WARNUNG: Dieser Code wird nur für Testzertifikate benötigt, wie sie beispielsweise von makecert erstellt werden.
+  /// Sie sollten diesen Code nicht in einer Produktionsumgebung verwenden.
+  /// </remarks>
+  /*
+  public class PermissiveCertificatePolicy {
+    string subjectName;
+    static PermissiveCertificatePolicy currentPolicy;
+    PermissiveCertificatePolicy(string subjectName) {
+      this.subjectName = subjectName;
+      ServicePointManager.ServerCertificateValidationCallback +=
+          new System.Net.Security.RemoteCertificateValidationCallback(RemoteCertValidate);
+    }
+
+    public static void Enact(string subjectName) {
+      currentPolicy = new PermissiveCertificatePolicy(subjectName);
+    }
+
+    bool RemoteCertValidate(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) {
+      if (cert.Subject == subjectName) {
+        return true;
+      }
+      return false;
+    }
+  }             */
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLab.Hive.Engine-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLab.Hive.Engine-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLab.Hive.Engine-3.3.csproj	(revision 4073)
@@ -0,0 +1,173 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{C8FEDAC1-0326-4293-B585-F0FEDDEDFC11}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Engine</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Engine-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Job.cs" />
+    <Compile Include="HeuristicLabHiveEnginePlugin.cs" />
+    <Compile Include="HiveEngine.cs" />
+    <Compile Include="HiveEngineEditor.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="HiveEngineEditor.Designer.cs">
+      <DependentUpon>HiveEngineEditor.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ServiceLocator.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.2\HeuristicLab.Common-3.2.csproj">
+      <Project>{1FC004FC-59AF-4249-B1B6-FF25873A20E4}</Project>
+      <Name>HeuristicLab.Common-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.2\HeuristicLab.Data-3.2.csproj">
+      <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project>
+      <Name>HeuristicLab.Data-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.JobBase\3.2\HeuristicLab.Hive.JobBase-3.2.csproj">
+      <Project>{21187322-52DD-4243-80A4-A85F0263E63B}</Project>
+      <Name>HeuristicLab.Hive.JobBase-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.SequentialEngine\3.2\HeuristicLab.SequentialEngine-3.2.csproj">
+      <Project>{B4BE8E53-BA06-4237-9A01-24255F880201}</Project>
+      <Name>HeuristicLab.SequentialEngine-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="HiveEngineEditor.resx">
+      <DependentUpon>HiveEngineEditor.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLabHiveEnginePlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLabHiveEnginePlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLabHiveEnginePlugin.cs	(revision 4073)
@@ -0,0 +1,43 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Engine {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Hive.Engine plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Hive.Engine-3.2")]
+  [PluginFile("HeuristicLab.Hive.Engine-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common","3.2.0.0")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.JobBase-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
+  [PluginDependency("HeuristicLab.Tracing","3.2.0.0")]
+  public class HeuristicLabHiveEnginePlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngine.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngine.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngine.cs	(revision 4073)
@@ -0,0 +1,353 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Core;
+using System.Threading;
+using System.IO;
+using System.Xml;
+using System.IO.Compression;
+using HeuristicLab.Common;
+using HeuristicLab.Hive.JobBase;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Engine {
+  /// <summary>
+  /// Represents an engine that executes its operator-graph on the hive.
+  /// in parallel.
+  /// </summary>
+  public class HiveEngine : ItemBase, IEngine, IEditable {
+    private const int SNAPSHOT_POLLING_INTERVAL_MS = 1000;
+    private const int RESULT_POLLING_INTERVAL_MS = 10000;
+    private const int MAX_SNAPSHOT_RETRIES = 20;
+    private Guid jobId;
+    private Job job;
+    private object locker = new object();
+    private volatile bool abortRequested;
+
+    public string HiveServerUrl { get; set; }
+    public string MultiSubmitCount { get; set; }
+    public string RessourceIds { get; set; }
+
+    public HiveEngine() {
+      job = new Job();
+      abortRequested = false;
+      Priority = ThreadPriority.Lowest;
+    }
+
+    #region IEngine Members
+
+    public IOperatorGraph OperatorGraph {
+      get { return job.Engine.OperatorGraph; }
+    }
+
+    public IScope GlobalScope {
+      get { return job.Engine.GlobalScope; }
+    }
+
+    public TimeSpan ExecutionTime {
+      get { return job.Engine.ExecutionTime; }
+    }
+
+    public ThreadPriority Priority {
+      get { return job.Engine.Priority; }
+      set { job.Engine.Priority = value; }
+    }
+
+    public bool Running {
+      get { return job.Engine.Running; }
+    }
+
+    public bool Canceled {
+      get { return job.Engine.Canceled; }
+    }
+
+    public bool Terminated {
+      get { return job.Engine.Terminated; }
+    }
+
+    public void Execute() {
+      var jobObj = CreateJobObj();
+      IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);
+
+      List<string> groups = new List<string>();
+      if (!String.Empty.Equals(RessourceIds)) {
+        groups.AddRange(RessourceIds.Split(';'));        
+      }
+
+      /*if(!String.Empty.Equals(RessourceIds)) {
+        String[] ids = RessourceIds.Split(';');
+        foreach (string sid in ids) {        
+          try {
+            System.Guid gid = new Guid(sid);
+            jobObj.JobInfo.AssignedResourceIds.Add(gid);
+          } catch(Exception ex) {
+            
+          }   
+        }
+      } */     
+
+      int loops = 1;
+      
+      Int32.TryParse(MultiSubmitCount, out loops);
+      if(loops == 0)
+        loops = 1;
+
+      for (int i = 0; i < loops; i++) {
+        ResponseObject<Contracts.BusinessObjects.JobDto> res = executionEngineFacade.AddJobWithGroupStrings(jobObj, groups);
+        jobId = res.Obj.Id;
+      }
+      
+      StartResultPollingThread();
+    }
+
+    private void StartResultPollingThread() {
+      // start a backgroud thread to poll the final result of the job
+      Thread t = new Thread(() => {
+        IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);
+        ResponseObject<SerializedJob> response = null;
+        Job restoredJob = null;
+        do {
+          Thread.Sleep(RESULT_POLLING_INTERVAL_MS);
+          lock (locker) {
+            Logger.Debug("HiveEngine: Results-polling - GetLastResult");
+            response = executionEngineFacade.GetLastSerializedResult(jobId, false, false);
+            Logger.Debug("HiveEngine: Results-polling - Server: " + response.StatusMessage + " success: " + response.Success);
+            // loop while 
+            // 1. the user doesn't request an abort 
+            // 2. there is a problem with server communication (success==false)
+            // 3. no result for the job is available yet (response.Obj==null)
+            // 4. the result that we get from the server is a snapshot and not the final result
+            if (abortRequested) return;
+              if (response.Success && response.Obj != null && response.StatusMessage != ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE) {
+              Logger.Debug("HiveEngine: Results-polling - Got result!");
+              restoredJob = (Job)PersistenceManager.RestoreFromGZip(response.Obj.SerializedJobData);
+              Logger.Debug("HiveEngine: Results-polling - IsSnapshotResult: " + (restoredJob.Progress < 1.0));
+            }
+          }
+        } while (restoredJob == null || (restoredJob.Progress < 1.0));
+
+        job = restoredJob;
+        ControlManager.Manager.ShowControl(job.Engine.CreateView());
+        OnChanged();
+        OnFinished();
+      });
+      Logger.Debug("HiveEngine: Starting results-polling thread");
+      t.Start();
+    }
+
+    public void RequestSnapshot() {
+      IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);
+      int retryCount = 0;
+      ResponseObject<SerializedJob> response;
+      lock (locker) {
+        Logger.Debug("HiveEngine: Abort - RequestSnapshot");
+        Response snapShotResponse = executionEngineFacade.RequestSnapshot(jobId);
+        if (snapShotResponse.StatusMessage == ApplicationConstants.RESPONSE_JOB_IS_NOT_BEEING_CALCULATED) {
+          // job is finished already
+          Logger.Debug("HiveEngine: Abort - GetLastResult(false)");
+          response = executionEngineFacade.GetLastSerializedResult(jobId, false, false);
+          Logger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success);
+        } else {
+          // server sent snapshot request to client
+          // poll until snapshot is ready
+          do {
+            Thread.Sleep(SNAPSHOT_POLLING_INTERVAL_MS);
+            Logger.Debug("HiveEngine: Abort - GetLastResult(true)");
+            response = executionEngineFacade.GetLastSerializedResult(jobId, false, true);
+            Logger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success);
+            retryCount++;
+            // loop while
+            // 1. problem with communication with server
+            // 2. job result not yet ready
+          } while (
+            (retryCount < MAX_SNAPSHOT_RETRIES) && (
+            !response.Success ||
+            response.StatusMessage == ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE)
+            );
+        }
+      }
+      SerializedJob jobResult = response.Obj;
+      if (jobResult != null) {
+        Logger.Debug("HiveEngine: Results-polling - Got result!");
+        job = (Job)PersistenceManager.RestoreFromGZip(jobResult.SerializedJobData);
+        ControlManager.Manager.ShowControl(job.Engine.CreateView());
+      }
+      //HiveLogger.Debug("HiveEngine: Results-polling - Exception!");
+      //Exception ex = new Exception(response.Obj.Exception.Message);
+      //ThreadPool.QueueUserWorkItem(delegate(object state) { OnExceptionOccurred(ex); });
+    }
+
+    public void ExecuteStep() {
+      throw new NotSupportedException();
+    }
+
+    public void ExecuteSteps(int steps) {
+      throw new NotSupportedException();
+    }
+
+    public void Abort() {
+      abortRequested = true;
+      // RequestSnapshot();
+      IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);
+      executionEngineFacade.AbortJob(jobId);
+      OnChanged();
+      OnFinished();
+    }
+
+    public void Reset() {
+      abortRequested = false;
+      job.Engine.Reset();
+      jobId = Guid.NewGuid();
+      OnInitialized();
+    }
+
+    private HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob CreateJobObj() {
+      HeuristicLab.Hive.Contracts.BusinessObjects.JobDto jobObj =
+        new HeuristicLab.Hive.Contracts.BusinessObjects.JobDto();
+
+      MemoryStream memStream = new MemoryStream();
+      GZipStream stream = new GZipStream(memStream, CompressionMode.Compress, true);
+      XmlDocument document = PersistenceManager.CreateXmlDocument();
+      Dictionary<Guid, IStorable> dictionary = new Dictionary<Guid, IStorable>();
+      XmlNode rootNode = document.CreateElement("Root");
+      document.AppendChild(rootNode);
+      rootNode.AppendChild(PersistenceManager.Persist(job, document, dictionary));
+      document.Save(stream);
+      stream.Close();
+
+      HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob executableJobObj =
+        new HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob();
+      executableJobObj.JobInfo = jobObj;
+      executableJobObj.SerializedJobData = memStream.ToArray();
+
+      List<IPluginDescription> plugins = new List<IPluginDescription>();
+
+      foreach (IStorable storeable in dictionary.Values) {
+        IPluginDescription pluginInfo = ApplicationManager.Manager.GetDeclaringPlugin(storeable.GetType());
+        if (!plugins.Contains(pluginInfo)) {
+          plugins.Add(pluginInfo);
+          foreach (var dependency in pluginInfo.Dependencies) {
+            if (!plugins.Contains(dependency)) plugins.Add(dependency);
+          }
+        }
+      }
+
+      List<HivePluginInfoDto> pluginsNeeded =
+        new List<HivePluginInfoDto>();
+      foreach (IPluginDescription uniquePlugin in plugins) {
+        HivePluginInfoDto pluginInfo =
+          new HivePluginInfoDto();
+        pluginInfo.Name = uniquePlugin.Name;
+        pluginInfo.Version = uniquePlugin.Version;
+        pluginInfo.BuildDate = uniquePlugin.BuildDate;
+        pluginsNeeded.Add(pluginInfo);
+      }
+
+      jobObj.CoresNeeded = 1;
+      jobObj.PluginsNeeded = pluginsNeeded;
+      jobObj.State = HeuristicLab.Hive.Contracts.BusinessObjects.State.offline;
+      return executableJobObj;
+    }
+
+    public event EventHandler Initialized;
+    /// <summary>
+    /// Fires a new <c>Initialized</c> event.
+    /// </summary>
+    protected virtual void OnInitialized() {
+      if (Initialized != null)
+        Initialized(this, new EventArgs());
+    }
+
+    public event EventHandler<EventArgs<IOperation>> OperationExecuted;
+    /// <summary>
+    /// Fires a new <c>OperationExecuted</c> event.
+    /// </summary>
+    /// <param name="operation">The operation that has been executed.</param>
+    protected virtual void OnOperationExecuted(IOperation operation) {
+      if (OperationExecuted != null)
+        OperationExecuted(this, new EventArgs<IOperation>(operation));
+    }
+
+    public event EventHandler<EventArgs<Exception>> ExceptionOccurred;
+    /// <summary>
+    /// Aborts the execution and fires a new <c>ExceptionOccurred</c> event.
+    /// </summary>
+    /// <param name="exception">The exception that was thrown.</param>
+    protected virtual void OnExceptionOccurred(Exception exception) {
+      Abort();
+      if (ExceptionOccurred != null)
+        ExceptionOccurred(this, new EventArgs<Exception>(exception));
+    }
+
+    public event EventHandler ExecutionTimeChanged;
+    /// <summary>
+    /// Fires a new <c>ExecutionTimeChanged</c> event.
+    /// </summary>
+    protected virtual void OnExecutionTimeChanged() {
+      if (ExecutionTimeChanged != null)
+        ExecutionTimeChanged(this, new EventArgs());
+    }
+
+    public event EventHandler Finished;
+    /// <summary>
+    /// Fires a new <c>Finished</c> event.
+    /// </summary>
+    protected virtual void OnFinished() {
+      if (Finished != null)
+        Finished(this, new EventArgs());
+    }
+
+    #endregion
+
+    public override IView CreateView() {
+      return new HiveEngineEditor(this);
+    }
+
+    #region IEditable Members
+
+    public IEditor CreateEditor() {
+      return new HiveEngineEditor(this);
+    }
+    #endregion
+
+    public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
+      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
+      XmlAttribute attr = document.CreateAttribute("HiveServerUrl");
+      attr.Value = HiveServerUrl;
+      node.Attributes.Append(attr);
+      node.AppendChild(PersistenceManager.Persist("Job", job, document, persistedObjects));
+      return node;
+    }
+
+    public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
+      base.Populate(node, restoredObjects);
+      HiveServerUrl = node.Attributes["HiveServerUrl"].Value;
+      job = (Job)PersistenceManager.Restore(node.SelectSingleNode("Job"), restoredObjects);
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.Designer.cs	(revision 4073)
@@ -0,0 +1,188 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Hive.Engine {
+  partial class HiveEngineEditor {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.urlLabel = new System.Windows.Forms.Label();
+      this.snapshotButton = new System.Windows.Forms.Button();
+      this.multiSubmitTextbox = new System.Windows.Forms.TextBox();
+      this.urlTextBox = new System.Windows.Forms.TextBox();
+      this.assignedRessourceTextBox = new System.Windows.Forms.TextBox();
+      this.label1 = new System.Windows.Forms.Label();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.operatorGraphGroupBox.SuspendLayout();
+      this.globalScopeGroupBox.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // executionTimeTextBox
+      // 
+      this.executionTimeTextBox.Location = new System.Drawing.Point(686, 460);
+      // 
+      // executionTimeLabel
+      // 
+      this.executionTimeLabel.Location = new System.Drawing.Point(683, 444);
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Size = new System.Drawing.Size(827, 441);
+      this.splitContainer1.SplitterDistance = 639;
+      // 
+      // operatorGraphGroupBox
+      // 
+      this.operatorGraphGroupBox.Size = new System.Drawing.Size(639, 441);
+      // 
+      // globalScopeGroupBox
+      // 
+      this.globalScopeGroupBox.Size = new System.Drawing.Size(184, 441);
+      // 
+      // operatorGraphView
+      // 
+      this.operatorGraphView.Size = new System.Drawing.Size(633, 422);
+      // 
+      // scopeView
+      // 
+      this.scopeView.Size = new System.Drawing.Size(178, 422);
+      // 
+      // urlLabel
+      // 
+      this.urlLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.urlLabel.AutoSize = true;
+      this.urlLabel.Location = new System.Drawing.Point(523, 444);
+      this.urlLabel.Name = "urlLabel";
+      this.urlLabel.Size = new System.Drawing.Size(82, 13);
+      this.urlLabel.TabIndex = 8;
+      this.urlLabel.Text = "Hive Server Url:";
+      // 
+      // snapshotButton
+      // 
+      this.snapshotButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.snapshotButton.Enabled = false;
+      this.snapshotButton.Location = new System.Drawing.Point(294, 457);
+      this.snapshotButton.Name = "snapshotButton";
+      this.snapshotButton.Size = new System.Drawing.Size(75, 23);
+      this.snapshotButton.TabIndex = 9;
+      this.snapshotButton.Text = "Sna&pshot";
+      this.snapshotButton.UseVisualStyleBackColor = true;
+      this.snapshotButton.Click += new System.EventHandler(this.snapshotButton_Click);
+      // 
+      // multiSubmitTextbox
+      // 
+      this.multiSubmitTextbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.multiSubmitTextbox.Location = new System.Drawing.Point(375, 460);
+      this.multiSubmitTextbox.Name = "multiSubmitTextbox";
+      this.multiSubmitTextbox.Size = new System.Drawing.Size(31, 20);
+      this.multiSubmitTextbox.TabIndex = 10;
+      this.multiSubmitTextbox.Text = "1";
+      // 
+      // urlTextBox
+      // 
+      this.urlTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.urlTextBox.Location = new System.Drawing.Point(526, 459);
+      this.urlTextBox.Name = "urlTextBox";
+      this.urlTextBox.Size = new System.Drawing.Size(154, 20);
+      this.urlTextBox.TabIndex = 7;
+      // 
+      // assignedRessourceTextBox
+      // 
+      this.assignedRessourceTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.assignedRessourceTextBox.Location = new System.Drawing.Point(412, 457);
+      this.assignedRessourceTextBox.Name = "assignedRessourceTextBox";
+      this.assignedRessourceTextBox.Size = new System.Drawing.Size(100, 20);
+      this.assignedRessourceTextBox.TabIndex = 11;
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(409, 444);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(85, 13);
+      this.label1.TabIndex = 12;
+      this.label1.Text = "Ressource GIDs";
+      // 
+      // HiveEngineEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.multiSubmitTextbox);
+      this.Controls.Add(this.snapshotButton);
+      this.Controls.Add(this.urlTextBox);
+      this.Controls.Add(this.urlLabel);
+      this.Controls.Add(this.assignedRessourceTextBox);
+      this.Controls.Add(this.label1);
+      this.Name = "HiveEngineEditor";
+      this.Size = new System.Drawing.Size(827, 480);
+      this.Controls.SetChildIndex(this.label1, 0);
+      this.Controls.SetChildIndex(this.assignedRessourceTextBox, 0);
+      this.Controls.SetChildIndex(this.urlLabel, 0);
+      this.Controls.SetChildIndex(this.urlTextBox, 0);
+      this.Controls.SetChildIndex(this.snapshotButton, 0);
+      this.Controls.SetChildIndex(this.multiSubmitTextbox, 0);
+      this.Controls.SetChildIndex(this.executeButton, 0);
+      this.Controls.SetChildIndex(this.abortButton, 0);
+      this.Controls.SetChildIndex(this.resetButton, 0);
+      this.Controls.SetChildIndex(this.splitContainer1, 0);
+      this.Controls.SetChildIndex(this.executionTimeLabel, 0);
+      this.Controls.SetChildIndex(this.executionTimeTextBox, 0);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.operatorGraphGroupBox.ResumeLayout(false);
+      this.globalScopeGroupBox.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label urlLabel;
+    private System.Windows.Forms.Button snapshotButton;
+    private System.Windows.Forms.TextBox multiSubmitTextbox;
+    private System.Windows.Forms.TextBox urlTextBox;
+    private System.Windows.Forms.TextBox assignedRessourceTextBox;
+    private System.Windows.Forms.Label label1;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.cs	(revision 4073)
@@ -0,0 +1,133 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Engine {
+  /// <summary>
+  /// Visual representation of a <see cref="HiveEngine"/>.
+  /// </summary>
+  public partial class HiveEngineEditor : EngineBaseEditor {
+    /// <summary>
+    /// Gets or set the engine to represent visually.
+    /// </summary>
+    /// <remarks>Uses property <see cref="EngineBaseEditor.Engine"/> of base class 
+    /// <see cref="EngineBaseEditor"/>. No own data storage present.</remarks>
+    public HiveEngine HiveEngine {
+      get { return (HiveEngine)Engine; }
+      set {
+        if (base.Engine != null) RemoveItemEvents();
+        base.Engine = value;
+        AddItemEvents();
+        SetDataBinding();
+      }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="HiveEngineEditor"/>.
+    /// </summary>
+    public HiveEngineEditor() {
+      InitializeComponent();
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="HiveEngineEditor"/> with the given
+    /// <paramref name="hiveEngine"/>.
+    /// </summary>
+    /// <param name="hiveEngine">The engine to display.</param>
+    public HiveEngineEditor(HiveEngine hiveEngine)
+      : this() {
+      HiveEngine = hiveEngine;
+      base.executeButton.Click += new EventHandler(executeButton_Click);
+      base.abortButton.Click += new EventHandler(abortButton_Click);
+    }
+
+    void abortButton_Click(object sender, EventArgs e) {
+      snapshotButton.Enabled = false;
+    }
+
+    void executeButton_Click(object sender, EventArgs e) {
+      abortButton.Enabled = true;
+      snapshotButton.Enabled = true;
+    }
+
+    private void SetDataBinding() {
+      urlTextBox.DataBindings.Add("Text", HiveEngine, "HiveServerUrl");
+      multiSubmitTextbox.DataBindings.Add("Text", HiveEngine, "MultiSubmitCount");
+      assignedRessourceTextBox.DataBindings.Add("Text", HiveEngine, "RessourceIds");         
+    }
+
+    protected override void RemoveItemEvents() {
+      Engine.Initialized -= new EventHandler(Engine_Initialized);
+      Engine.Finished -= new EventHandler(Engine_Finished);
+      base.RemoveItemEvents();
+    }
+
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      Engine.Finished += new EventHandler(Engine_Finished);
+      Engine.Initialized += new EventHandler(Engine_Initialized);
+    }
+
+    void Engine_Initialized(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke((EventHandler)Engine_Initialized, sender, e);
+      } else {
+        abortButton.Enabled = false;
+        snapshotButton.Enabled = false;
+      }
+    }
+
+    void Engine_Finished(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke((EventHandler)Engine_Initialized, sender, e);
+      } else {
+        abortButton.Enabled = false;
+        snapshotButton.Enabled = false;
+      }
+    }
+
+    private void snapshotButton_Click(object sender, EventArgs e) {
+      BackgroundWorker worker = new BackgroundWorker();
+      worker.DoWork += (s, args) => {
+        HiveEngine.RequestSnapshot();
+      };
+      worker.RunWorkerCompleted += (s, args) => {
+        Logger.Debug("HiveEngineEditor: RunWorkerCompleted");
+        this.Cursor = Cursors.Default;
+        abortButton.Enabled = true;
+        snapshotButton.Enabled = true;
+      };
+      this.Cursor = Cursors.WaitCursor;
+      abortButton.Enabled = false;
+      snapshotButton.Enabled = false;
+      Logger.Debug("HiveEngineEditor: RunWorkerAsync");
+      worker.RunWorkerAsync();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HiveEngineEditor.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/Job.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/Job.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/Job.cs	(revision 4073)
@@ -0,0 +1,138 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Core;
+using System.Threading;
+using HeuristicLab.Hive.JobBase;
+using System.Xml;
+using HeuristicLab.Data;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Hive.Engine {
+  /// <summary>
+  /// Represents an job that wraps an engine that should be executed in the hive.
+  /// </summary>
+  public class Job : StorableBase, IJob {
+    private IEngine engine;
+    public IEngine Engine {
+      get { return engine; }
+    }
+
+    public Job()
+      : base() {
+      engine = new SequentialEngine.SequentialEngine();
+      engine.Priority = ThreadPriority.Lowest;
+      RegisterEvents();
+    }
+
+    private void RegisterEvents() {
+      engine.Finished += new EventHandler(engine_Finished);
+      engine.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(engine_ExceptionOccurred);
+    }
+
+    private void DeregisterEvents() {
+      engine.Finished -= new EventHandler(engine_Finished);
+      engine.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(engine_ExceptionOccurred);
+    }
+
+    void engine_Finished(object sender, EventArgs e) {
+      if (Engine.Canceled) this.progress = 0.0;
+      else this.progress = 1.0;
+      var listeners = JobStopped;
+      if (listeners != null)
+        listeners(this, e);
+    }
+
+    void engine_ExceptionOccurred(object sender, EventArgs<Exception> e) {
+      this.progress = 0.0;
+      var listeners = JobFailed;
+      if (listeners != null)
+        listeners(this, e);
+    }
+
+
+    #region IJob Members
+
+    public event EventHandler JobStopped;
+    public event EventHandler JobFailed;
+
+    public long JobId {
+      get;
+      set;
+    }
+
+    private double progress;
+    public double Progress {
+      get {
+        DoubleData progress = Engine.GlobalScope.GetVariableValue<DoubleData>("Progress", false,
+          false);
+        return progress == null ? this.progress : progress.Data;
+      }
+      set { throw new NotSupportedException(); }
+    }
+
+    public bool Running {
+      get {
+        return Engine.Running;
+      }
+      set {
+        throw new NotSupportedException();
+      }
+    }
+
+    public void Run() {
+      throw new NotSupportedException();
+    }
+
+    public void Start() {
+      Engine.Execute();
+    }
+
+    public void Stop() {
+      Engine.Abort();
+    }
+
+    #endregion
+
+    public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
+      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
+      XmlAttribute idAttr = document.CreateAttribute("JobId");
+      idAttr.Value = XmlConvert.ToString(JobId);
+      XmlAttribute progressAttr = document.CreateAttribute("Progress");
+      progressAttr.Value = XmlConvert.ToString(progress);
+      node.Attributes.Append(idAttr);
+      node.Attributes.Append(progressAttr);
+      node.AppendChild(PersistenceManager.Persist("Engine", Engine, document, persistedObjects));
+      return node;
+    }
+    public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
+      base.Populate(node, restoredObjects);
+      JobId = XmlConvert.ToInt64(node.Attributes["JobId"].Value);
+      progress = XmlConvert.ToDouble(node.Attributes["Progress"].Value);
+      DeregisterEvents();
+      engine = (SequentialEngine.SequentialEngine)PersistenceManager.Restore(node.SelectSingleNode("Engine"), restoredObjects);
+      RegisterEvents();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+using System.Security;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Engine")]
+[assembly: AssemblyDescription("HeuristicLab engine for distributed processing")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: AllowPartiallyTrustedCallers]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9721605F-C79D-434a-8E42-C0A384477D53")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/ServiceLocator.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/ServiceLocator.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/ServiceLocator.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using HeuristicLab.Hive.Contracts.Interfaces;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts;
+
+namespace HeuristicLab.Hive.Engine {
+  internal class ServiceLocator {
+    internal static IExecutionEngineFacade CreateExecutionEngineFacade(string url) {
+      ChannelFactory<IExecutionEngineFacade> factory =
+        new ChannelFactory<IExecutionEngineFacade>(
+          WcfSettings.GetStreamedBinding(),
+          new EndpointAddress(url));
+
+      return factory.CreateChannel();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.Designer.cs	(revision 4073)
@@ -0,0 +1,94 @@
+﻿namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class AddGroup {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.tbName = new System.Windows.Forms.TextBox();
+      this.lblName = new System.Windows.Forms.Label();
+      this.btnClose = new System.Windows.Forms.Button();
+      this.btnAdd = new System.Windows.Forms.Button();
+      this.SuspendLayout();
+      // 
+      // tbName
+      // 
+      this.tbName.Location = new System.Drawing.Point(45, 6);
+      this.tbName.Name = "tbName";
+      this.tbName.Size = new System.Drawing.Size(276, 20);
+      this.tbName.TabIndex = 7;
+      this.tbName.TextChanged += new System.EventHandler(this.tbName_TextChanged);
+      // 
+      // lblName
+      // 
+      this.lblName.AutoSize = true;
+      this.lblName.Location = new System.Drawing.Point(4, 9);
+      this.lblName.Name = "lblName";
+      this.lblName.Size = new System.Drawing.Size(35, 13);
+      this.lblName.TabIndex = 10;
+      this.lblName.Text = "Name";
+      // 
+      // btnClose
+      // 
+      this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.btnClose.Location = new System.Drawing.Point(246, 36);
+      this.btnClose.Name = "btnClose";
+      this.btnClose.Size = new System.Drawing.Size(75, 23);
+      this.btnClose.TabIndex = 9;
+      this.btnClose.Text = "Close";
+      this.btnClose.UseVisualStyleBackColor = true;
+      this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+      // 
+      // btnAdd
+      // 
+      this.btnAdd.Enabled = false;
+      this.btnAdd.Location = new System.Drawing.Point(7, 36);
+      this.btnAdd.Name = "btnAdd";
+      this.btnAdd.Size = new System.Drawing.Size(75, 23);
+      this.btnAdd.TabIndex = 8;
+      this.btnAdd.Text = "Add";
+      this.btnAdd.UseVisualStyleBackColor = true;
+      this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
+      // 
+      // AddGroup
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(337, 70);
+      this.Controls.Add(this.tbName);
+      this.Controls.Add(this.lblName);
+      this.Controls.Add(this.btnClose);
+      this.Controls.Add(this.btnAdd);
+      this.Name = "AddGroup";
+      this.Text = "AddGroup";
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox tbName;
+    private System.Windows.Forms.Label lblName;
+    private System.Windows.Forms.Button btnClose;
+    private System.Windows.Forms.Button btnAdd;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+
+  public delegate void AddGroupDelegate(string name);
+
+  public partial class AddGroup : Form {
+
+    public event AddGroupDelegate addGroupEvent;
+
+    public AddGroup() {
+      InitializeComponent();
+    }
+
+    private void btnAdd_Click(object sender, EventArgs e) {
+      if (addGroupEvent != null) {
+        addGroupEvent(tbName.Text);
+      }
+      this.Close();
+    }
+
+    private void btnClose_Click(object sender, EventArgs e) {
+      this.Close();
+    }
+
+    private void tbName_TextChanged(object sender, EventArgs e) {
+      if (string.IsNullOrEmpty(tbName.Text)) {
+        btnAdd.Enabled = false;
+      } else {
+        btnAdd.Enabled = true;
+      }
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddGroup.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.Designer.cs	(revision 4073)
@@ -0,0 +1,266 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class AddJobForm {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.btnAdd = new System.Windows.Forms.Button();
+      this.btnClose = new System.Windows.Forms.Button();
+      this.lblNumJobs = new System.Windows.Forms.Label();
+      this.tbNumJobs = new System.Windows.Forms.TextBox();
+      this.lblError = new System.Windows.Forms.Label();
+      this.lblProject = new System.Windows.Forms.Label();
+      this.cbProject = new System.Windows.Forms.ComboBox();
+      this.cbAllGroups = new System.Windows.Forms.CheckBox();
+      this.gbGroups = new System.Windows.Forms.GroupBox();
+      this.btnRemoveGroup = new System.Windows.Forms.Button();
+      this.btnAddGroup = new System.Windows.Forms.Button();
+      this.lbGroupsIn = new System.Windows.Forms.ListBox();
+      this.lbGroupsOut = new System.Windows.Forms.ListBox();
+      this.ofdLoadJob = new System.Windows.Forms.OpenFileDialog();
+      this.textBox1 = new System.Windows.Forms.TextBox();
+      this.btnLoad = new System.Windows.Forms.Button();
+      this.gbGroups.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // btnAdd
+      // 
+      this.btnAdd.Location = new System.Drawing.Point(6, 249);
+      this.btnAdd.Name = "btnAdd";
+      this.btnAdd.Size = new System.Drawing.Size(75, 23);
+      this.btnAdd.TabIndex = 3;
+      this.btnAdd.Text = "Add";
+      this.btnAdd.UseVisualStyleBackColor = true;
+      this.btnAdd.Click += new System.EventHandler(this.BtnAdd_Click);
+      // 
+      // btnClose
+      // 
+      this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.btnClose.Location = new System.Drawing.Point(291, 249);
+      this.btnClose.Name = "btnClose";
+      this.btnClose.Size = new System.Drawing.Size(75, 23);
+      this.btnClose.TabIndex = 4;
+      this.btnClose.Text = "Close";
+      this.btnClose.UseVisualStyleBackColor = true;
+      this.btnClose.Click += new System.EventHandler(this.BtnClose_Click);
+      // 
+      // lblNumJobs
+      // 
+      this.lblNumJobs.AutoSize = true;
+      this.lblNumJobs.Location = new System.Drawing.Point(12, 9);
+      this.lblNumJobs.Name = "lblNumJobs";
+      this.lblNumJobs.Size = new System.Drawing.Size(78, 13);
+      this.lblNumJobs.TabIndex = 6;
+      this.lblNumJobs.Text = "Number of jobs";
+      // 
+      // tbNumJobs
+      // 
+      this.tbNumJobs.Location = new System.Drawing.Point(117, 6);
+      this.tbNumJobs.Name = "tbNumJobs";
+      this.tbNumJobs.Size = new System.Drawing.Size(243, 20);
+      this.tbNumJobs.TabIndex = 1;
+      this.tbNumJobs.Text = "1";
+      // 
+      // lblError
+      // 
+      this.lblError.AutoSize = true;
+      this.lblError.Location = new System.Drawing.Point(87, 254);
+      this.lblError.Name = "lblError";
+      this.lblError.Size = new System.Drawing.Size(0, 13);
+      this.lblError.TabIndex = 8;
+      // 
+      // lblProject
+      // 
+      this.lblProject.AutoSize = true;
+      this.lblProject.Location = new System.Drawing.Point(12, 39);
+      this.lblProject.Name = "lblProject";
+      this.lblProject.Size = new System.Drawing.Size(59, 13);
+      this.lblProject.TabIndex = 9;
+      this.lblProject.Text = "Job project";
+      // 
+      // cbProject
+      // 
+      this.cbProject.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.cbProject.FormattingEnabled = true;
+      this.cbProject.Location = new System.Drawing.Point(117, 31);
+      this.cbProject.Name = "cbProject";
+      this.cbProject.Size = new System.Drawing.Size(245, 21);
+      this.cbProject.TabIndex = 10;
+      // 
+      // cbAllGroups
+      // 
+      this.cbAllGroups.AutoSize = true;
+      this.cbAllGroups.Checked = true;
+      this.cbAllGroups.CheckState = System.Windows.Forms.CheckState.Checked;
+      this.cbAllGroups.Location = new System.Drawing.Point(15, 90);
+      this.cbAllGroups.Name = "cbAllGroups";
+      this.cbAllGroups.Size = new System.Drawing.Size(91, 17);
+      this.cbAllGroups.TabIndex = 15;
+      this.cbAllGroups.Text = "use all groups";
+      this.cbAllGroups.UseVisualStyleBackColor = true;
+      this.cbAllGroups.CheckedChanged += new System.EventHandler(this.cbAllGroups_CheckedChanged);
+      // 
+      // gbGroups
+      // 
+      this.gbGroups.Controls.Add(this.btnRemoveGroup);
+      this.gbGroups.Controls.Add(this.btnAddGroup);
+      this.gbGroups.Controls.Add(this.lbGroupsIn);
+      this.gbGroups.Controls.Add(this.lbGroupsOut);
+      this.gbGroups.Location = new System.Drawing.Point(10, 115);
+      this.gbGroups.Name = "gbGroups";
+      this.gbGroups.Size = new System.Drawing.Size(357, 128);
+      this.gbGroups.TabIndex = 16;
+      this.gbGroups.TabStop = false;
+      this.gbGroups.Text = "choose groups";
+      // 
+      // btnRemoveGroup
+      // 
+      this.btnRemoveGroup.Enabled = false;
+      this.btnRemoveGroup.Location = new System.Drawing.Point(143, 56);
+      this.btnRemoveGroup.Name = "btnRemoveGroup";
+      this.btnRemoveGroup.Size = new System.Drawing.Size(75, 23);
+      this.btnRemoveGroup.TabIndex = 18;
+      this.btnRemoveGroup.Text = "<< Remove";
+      this.btnRemoveGroup.UseVisualStyleBackColor = true;
+      this.btnRemoveGroup.Click += new System.EventHandler(this.btnRemoveGroup_Click);
+      // 
+      // btnAddGroup
+      // 
+      this.btnAddGroup.Enabled = false;
+      this.btnAddGroup.Location = new System.Drawing.Point(143, 26);
+      this.btnAddGroup.Name = "btnAddGroup";
+      this.btnAddGroup.Size = new System.Drawing.Size(75, 23);
+      this.btnAddGroup.TabIndex = 17;
+      this.btnAddGroup.Text = "Add >>";
+      this.btnAddGroup.UseVisualStyleBackColor = true;
+      this.btnAddGroup.Click += new System.EventHandler(this.btnAddGroup_Click);
+      // 
+      // lbGroupsIn
+      // 
+      this.lbGroupsIn.Enabled = false;
+      this.lbGroupsIn.FormattingEnabled = true;
+      this.lbGroupsIn.Location = new System.Drawing.Point(224, 15);
+      this.lbGroupsIn.Name = "lbGroupsIn";
+      this.lbGroupsIn.Size = new System.Drawing.Size(128, 108);
+      this.lbGroupsIn.TabIndex = 16;
+      this.lbGroupsIn.DoubleClick += new System.EventHandler(this.lbGroupsIn_SelectedIndexChanged);
+      // 
+      // lbGroupsOut
+      // 
+      this.lbGroupsOut.Enabled = false;
+      this.lbGroupsOut.FormattingEnabled = true;
+      this.lbGroupsOut.Location = new System.Drawing.Point(6, 15);
+      this.lbGroupsOut.Name = "lbGroupsOut";
+      this.lbGroupsOut.Size = new System.Drawing.Size(130, 108);
+      this.lbGroupsOut.TabIndex = 15;
+      this.lbGroupsOut.DoubleClick += new System.EventHandler(this.lbGroupsOut_SelectedIndexChanged);
+      // 
+      // ofdLoadJob
+      // 
+      this.ofdLoadJob.FileName = "openFileDialog1";
+      // 
+      // textBox1
+      // 
+      this.textBox1.BackColor = System.Drawing.SystemColors.Window;
+      this.textBox1.Enabled = false;
+      this.textBox1.Location = new System.Drawing.Point(13, 64);
+      this.textBox1.Name = "textBox1";
+      this.textBox1.Size = new System.Drawing.Size(266, 20);
+      this.textBox1.TabIndex = 17;
+      // 
+      // btnLoad
+      // 
+      this.btnLoad.Location = new System.Drawing.Point(285, 63);
+      this.btnLoad.Name = "btnLoad";
+      this.btnLoad.Size = new System.Drawing.Size(75, 23);
+      this.btnLoad.TabIndex = 18;
+      this.btnLoad.Text = "Load Job";
+      this.btnLoad.UseVisualStyleBackColor = true;
+      this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click);
+      // 
+      // AddJobForm
+      // 
+      this.AcceptButton = this.btnAdd;
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.CancelButton = this.btnClose;
+      this.ClientSize = new System.Drawing.Size(372, 280);
+      this.Controls.Add(this.btnLoad);
+      this.Controls.Add(this.textBox1);
+      this.Controls.Add(this.gbGroups);
+      this.Controls.Add(this.cbAllGroups);
+      this.Controls.Add(this.cbProject);
+      this.Controls.Add(this.lblProject);
+      this.Controls.Add(this.lblError);
+      this.Controls.Add(this.tbNumJobs);
+      this.Controls.Add(this.lblNumJobs);
+      this.Controls.Add(this.btnClose);
+      this.Controls.Add(this.btnAdd);
+      this.Name = "AddJobForm";
+      this.Text = "Add Job";
+      this.gbGroups.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button btnAdd;
+    private System.Windows.Forms.Button btnClose;
+    private System.Windows.Forms.Label lblNumJobs;
+    private System.Windows.Forms.TextBox tbNumJobs;
+    private System.Windows.Forms.Label lblError;
+    private System.Windows.Forms.Label lblProject;
+    private System.Windows.Forms.ComboBox cbProject;
+    private System.Windows.Forms.CheckBox cbAllGroups;
+    private System.Windows.Forms.GroupBox gbGroups;
+    private System.Windows.Forms.Button btnRemoveGroup;
+    private System.Windows.Forms.Button btnAddGroup;
+    private System.Windows.Forms.ListBox lbGroupsIn;
+    private System.Windows.Forms.ListBox lbGroupsOut;
+    private System.Windows.Forms.OpenFileDialog ofdLoadJob;
+    private System.Windows.Forms.TextBox textBox1;
+    private System.Windows.Forms.Button btnLoad;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.cs	(revision 4073)
@@ -0,0 +1,198 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Contracts;
+using HeuristicLab.Hive.JobBase;
+using HeuristicLab.Core;
+using System.ServiceModel;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+
+  public delegate void addDelegate();
+
+  public partial class AddJobForm : Form {
+
+    public event addDelegate addJobEvent;
+
+    ResponseList<ProjectDto> projects = null;
+    IJobManager jobManager;
+    IClientManager clientManager; 
+    ResponseList<ClientGroupDto> clientGroups;
+
+    Dictionary<Guid, string> clients = null;
+
+    public AddJobForm() {
+      InitializeComponent();
+
+      clients = new Dictionary<Guid, string>();
+      AddJob();
+
+    }
+
+    private void AddJob() {
+      try {
+
+      jobManager =
+        ServiceLocator.GetJobManager();
+      projects = jobManager.GetAllProjects();
+      clientManager =
+        ServiceLocator.GetClientManager();
+      clientGroups = clientManager.GetAllClientGroups();
+      cbProject.Items.Add("none");
+      cbProject.SelectedIndex = 0;
+      foreach (ProjectDto project in projects.List) {
+        cbProject.Items.Add(project.Name);
+      }
+
+      AddClientGroups();
+
+      foreach (KeyValuePair<Guid, string> kvp in clients) {
+        lbGroupsOut.Items.Add(kvp.Value + " (" + kvp.Key + ")");
+      }
+      }
+      catch (FaultException fe) {
+        MessageBox.Show(fe.Message);
+      }
+
+    }
+
+    private void AddClientGroups() {
+     foreach (ClientGroupDto cg in clientGroups.List) {
+       if (cg.Id != Guid.Empty)
+       clients.Add(cg.Id, cg.Name);
+        AddClientOrGroup(cg);
+      }
+    }
+
+    private void AddClientOrGroup(ClientGroupDto clientGroup) {
+      foreach (ResourceDto resource in clientGroup.Resources) {
+        if (resource is ClientGroupDto) {
+          if (resource.Id != Guid.Empty)
+          clients.Add(resource.Id, resource.Name);
+          AddClientOrGroup(resource as ClientGroupDto);
+        }
+      }
+    
+    }
+
+    private void BtnAdd_Click(object sender, EventArgs e) {
+      try {
+        lblError.Text = "";
+        int numJobs = Convert.ToInt32(tbNumJobs.Text);
+        if (numJobs > 0) {
+          for (int i = 0; i < numJobs; i++) {
+            JobDto job = new JobDto { State = State.offline, CoresNeeded = 1 };
+            
+            // if project selected (0 -> none)
+            if (cbProject.SelectedIndex != 0) {
+              job.Project = projects.List[cbProject.SelectedIndex - 1];
+            }
+
+            if (!cbAllGroups.Checked) {
+              List<Guid> groupsToCalculate = new List<Guid>();
+              foreach (string item in lbGroupsIn.Items) {
+                int start = item.IndexOf("(");
+                int end = item.IndexOf(")");
+                string substring = item.Substring(start + 1, end - start - 1);
+                Guid guid = new Guid(substring);
+                groupsToCalculate.Add(guid);
+              }
+              job.AssignedResourceIds = groupsToCalculate;
+            }
+
+            SerializedJob computableJob =
+              new SerializedJob();
+            computableJob.JobInfo = job;
+            computableJob.SerializedJobData = PersistenceManager.SaveToGZip(new TestJob());
+            Response resp = jobManager.AddNewJob(computableJob);
+          }
+          if (addJobEvent != null) {
+            addJobEvent();
+          }
+          this.Close();
+        } else {
+          lblError.Text = "Wrong number of Jobs";
+        }
+
+      }
+      catch {
+        lblError.Text = "There should be a number";
+      }
+    }
+
+    private void BtnClose_Click(object sender, EventArgs e) {
+      this.Close();
+    }
+
+    private void cbAllGroups_CheckedChanged(object sender, EventArgs e) {
+      foreach (Control control in gbGroups.Controls) {
+        control.Enabled = !cbAllGroups.Checked;
+      }
+    }
+
+    private void btnAddGroup_Click(object sender, EventArgs e) {
+      AddGroup();
+    }
+
+    private void btnRemoveGroup_Click(object sender, EventArgs e) {
+      RemoveGroup();
+    }
+
+    private void lbGroupsOut_SelectedIndexChanged(object sender, EventArgs e) {
+      AddGroup();
+    }
+
+    private void lbGroupsIn_SelectedIndexChanged(object sender, EventArgs e) {
+      RemoveGroup();
+    }
+
+    private void AddGroup() {
+      if (lbGroupsOut.SelectedItem != null) {
+        lbGroupsIn.Items.Add(lbGroupsOut.SelectedItem);
+        lbGroupsOut.Items.RemoveAt(lbGroupsOut.SelectedIndex);
+      }
+  
+    }
+
+    private void RemoveGroup() {
+      if (lbGroupsIn.SelectedItem != null) {
+        lbGroupsOut.Items.Add(lbGroupsIn.SelectedItem);
+        lbGroupsIn.Items.RemoveAt(lbGroupsIn.SelectedIndex);
+      }
+    }
+
+    private void btnLoad_Click(object sender, EventArgs e) {
+
+    }
+
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddJobForm.resx	(revision 4073)
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="ofdLoadJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.Designer.cs	(revision 4073)
@@ -0,0 +1,96 @@
+﻿namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class AddProject {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.tbName = new System.Windows.Forms.TextBox();
+      this.lblName = new System.Windows.Forms.Label();
+      this.btnClose = new System.Windows.Forms.Button();
+      this.btnAdd = new System.Windows.Forms.Button();
+      this.SuspendLayout();
+      // 
+      // tbName
+      // 
+      this.tbName.Location = new System.Drawing.Point(45, 6);
+      this.tbName.Name = "tbName";
+      this.tbName.Size = new System.Drawing.Size(276, 20);
+      this.tbName.TabIndex = 7;
+      this.tbName.TextChanged += new System.EventHandler(this.tbName_TextChanged);
+      // 
+      // lblName
+      // 
+      this.lblName.AutoSize = true;
+      this.lblName.Location = new System.Drawing.Point(4, 9);
+      this.lblName.Name = "lblName";
+      this.lblName.Size = new System.Drawing.Size(35, 13);
+      this.lblName.TabIndex = 10;
+      this.lblName.Text = "Name";
+      // 
+      // btnClose
+      // 
+      this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.btnClose.Location = new System.Drawing.Point(246, 36);
+      this.btnClose.Name = "btnClose";
+      this.btnClose.Size = new System.Drawing.Size(75, 23);
+      this.btnClose.TabIndex = 9;
+      this.btnClose.Text = "Close";
+      this.btnClose.UseVisualStyleBackColor = true;
+      this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+      // 
+      // btnAdd
+      // 
+      this.btnAdd.Enabled = false;
+      this.btnAdd.Location = new System.Drawing.Point(7, 36);
+      this.btnAdd.Name = "btnAdd";
+      this.btnAdd.Size = new System.Drawing.Size(75, 23);
+      this.btnAdd.TabIndex = 8;
+      this.btnAdd.Text = "Add";
+      this.btnAdd.UseVisualStyleBackColor = true;
+      this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
+      // 
+      // AddProject
+      // 
+      this.AcceptButton = this.btnAdd;
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.CancelButton = this.btnClose;
+      this.ClientSize = new System.Drawing.Size(337, 70);
+      this.Controls.Add(this.tbName);
+      this.Controls.Add(this.lblName);
+      this.Controls.Add(this.btnClose);
+      this.Controls.Add(this.btnAdd);
+      this.Name = "AddProject";
+      this.Text = "AddProject";
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox tbName;
+    private System.Windows.Forms.Label lblName;
+    private System.Windows.Forms.Button btnClose;
+    private System.Windows.Forms.Button btnAdd;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.cs	(revision 4073)
@@ -0,0 +1,41 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+
+  public delegate void AddProjectDelegate(string name);
+
+  public partial class AddProject : Form {
+
+    public event AddProjectDelegate AddProjectEvent;
+
+    public AddProject() {
+      InitializeComponent();
+    }
+
+    private void btnAdd_Click(object sender, EventArgs e) {
+      if (AddProjectEvent != null) {
+        AddProjectEvent(tbName.Text);
+      }
+      this.Close();
+    }
+
+    private void btnClose_Click(object sender, EventArgs e) {
+      this.Close();
+    }
+
+    private void tbName_TextChanged(object sender, EventArgs e) {
+      if (string.IsNullOrEmpty(tbName.Text)) {
+        btnAdd.Enabled = false;
+      } else {
+        btnAdd.Enabled = true;
+      }
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddProject.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.Designer.cs	(revision 4073)
@@ -0,0 +1,159 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class AddUserForm {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.lblOne = new System.Windows.Forms.Label();
+      this.lblGroup = new System.Windows.Forms.Label();
+      this.tbOne = new System.Windows.Forms.TextBox();
+      this.cbGroups = new System.Windows.Forms.ComboBox();
+      this.btnAdd = new System.Windows.Forms.Button();
+      this.btnClose = new System.Windows.Forms.Button();
+      this.tbPwd = new System.Windows.Forms.TextBox();
+      this.lblPassword = new System.Windows.Forms.Label();
+      this.SuspendLayout();
+      // 
+      // lblOne
+      // 
+      this.lblOne.AutoSize = true;
+      this.lblOne.Location = new System.Drawing.Point(12, 14);
+      this.lblOne.Name = "lblOne";
+      this.lblOne.Size = new System.Drawing.Size(35, 13);
+      this.lblOne.TabIndex = 0;
+      this.lblOne.Text = "label1";
+      // 
+      // lblGroup
+      // 
+      this.lblGroup.AutoSize = true;
+      this.lblGroup.Location = new System.Drawing.Point(12, 71);
+      this.lblGroup.Name = "lblGroup";
+      this.lblGroup.Size = new System.Drawing.Size(35, 13);
+      this.lblGroup.TabIndex = 1;
+      this.lblGroup.Text = "label2";
+      // 
+      // tbOne
+      // 
+      this.tbOne.Location = new System.Drawing.Point(120, 7);
+      this.tbOne.Name = "tbOne";
+      this.tbOne.Size = new System.Drawing.Size(212, 20);
+      this.tbOne.TabIndex = 1;
+      // 
+      // cbGroups
+      // 
+      this.cbGroups.FormattingEnabled = true;
+      this.cbGroups.Location = new System.Drawing.Point(120, 68);
+      this.cbGroups.Name = "cbGroups";
+      this.cbGroups.Size = new System.Drawing.Size(212, 21);
+      this.cbGroups.TabIndex = 3;
+      // 
+      // btnAdd
+      // 
+      this.btnAdd.Location = new System.Drawing.Point(12, 95);
+      this.btnAdd.Name = "btnAdd";
+      this.btnAdd.Size = new System.Drawing.Size(75, 23);
+      this.btnAdd.TabIndex = 4;
+      this.btnAdd.Text = "Add";
+      this.btnAdd.UseVisualStyleBackColor = true;
+      this.btnAdd.Click += new System.EventHandler(this.BtnAdd_Click);
+      // 
+      // btnClose
+      // 
+      this.btnClose.Location = new System.Drawing.Point(257, 95);
+      this.btnClose.Name = "btnClose";
+      this.btnClose.Size = new System.Drawing.Size(75, 23);
+      this.btnClose.TabIndex = 5;
+      this.btnClose.Text = "Close";
+      this.btnClose.UseVisualStyleBackColor = true;
+      this.btnClose.Click += new System.EventHandler(this.BtnClose_Click);
+      // 
+      // tbPwd
+      // 
+      this.tbPwd.Location = new System.Drawing.Point(120, 37);
+      this.tbPwd.Name = "tbPwd";
+      this.tbPwd.Size = new System.Drawing.Size(212, 20);
+      this.tbPwd.TabIndex = 2;
+      this.tbPwd.UseSystemPasswordChar = true;
+      // 
+      // lblPassword
+      // 
+      this.lblPassword.AutoSize = true;
+      this.lblPassword.Location = new System.Drawing.Point(12, 44);
+      this.lblPassword.Name = "lblPassword";
+      this.lblPassword.Size = new System.Drawing.Size(53, 13);
+      this.lblPassword.TabIndex = 0;
+      this.lblPassword.Text = "Password";
+      // 
+      // AddUserForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.BackColor = System.Drawing.SystemColors.Control;
+      this.ClientSize = new System.Drawing.Size(344, 130);
+      this.Controls.Add(this.tbPwd);
+      this.Controls.Add(this.lblPassword);
+      this.Controls.Add(this.btnClose);
+      this.Controls.Add(this.btnAdd);
+      this.Controls.Add(this.cbGroups);
+      this.Controls.Add(this.tbOne);
+      this.Controls.Add(this.lblGroup);
+      this.Controls.Add(this.lblOne);
+      this.Name = "AddUserForm";
+      this.Text = "AddUserForm";
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label lblOne;
+    private System.Windows.Forms.Label lblGroup;
+    private System.Windows.Forms.TextBox tbOne;
+    private System.Windows.Forms.ComboBox cbGroups;
+    private System.Windows.Forms.Button btnAdd;
+    private System.Windows.Forms.Button btnClose;
+    private System.Windows.Forms.TextBox tbPwd;
+    private System.Windows.Forms.Label lblPassword;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.cs	(revision 4073)
@@ -0,0 +1,111 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Contracts;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  public partial class AddUserForm : Form {
+
+    public event addDelegate addUserEvent;
+    ResponseList<UserGroup> userGroups = null;
+    IUserRoleManager userRoleManager;
+    bool group;
+
+    public AddUserForm(string addForm, bool group) {
+      this.group = group;
+      InitializeComponent();
+      this.Name = "Add " + addForm;
+
+      lblOne.Text = addForm;
+      if (group) {
+        lblOne.Text += " Group";
+      }
+
+      lblGroup.Text = addForm + " Groups";
+
+      if (addForm == "User") {
+        AddUser();
+      }
+    }
+
+    private void AddUser() {
+     userRoleManager = ServiceLocator.GetUserRoleManager();
+      userGroups = userRoleManager.GetAllUserGroups();
+      cbGroups.Items.Add("none");
+      cbGroups.SelectedIndex = 0;
+      foreach (UserGroup ug in userGroups.List) {
+        cbGroups.Items.Add(ug.Name);
+      }
+    }
+
+    private void BtnAdd_Click(object sender, EventArgs e) {
+      if (!group) {
+        if (tbOne.Text != "") {
+          User u = new User() { Name = tbOne.Text, Password = tbPwd.Text };
+          ResponseObject<User> respUser = userRoleManager.AddNewUser(u);
+          if (respUser.Success == true) {
+            if (cbGroups.SelectedIndex != 0) {
+              u = respUser.Obj;
+              foreach (UserGroup ug in userGroups.List) {
+                if (cbGroups.SelectedItem.ToString().Equals(ug.Name)) {
+                  Response resp = userRoleManager.AddUserToGroup
+                    (ug.Id, u.Id);
+                }
+              }
+            }
+          }
+        }
+      } else {
+        UserGroup ug = new UserGroup { Name = tbOne.Text };
+        ResponseObject<UserGroup> respug = userRoleManager.AddNewUserGroup(ug);
+        if (respug.Success == true) {
+          if (!cbGroups.SelectedText.Equals("none")) {
+            ug = respug.Obj;
+            foreach (UserGroup ugs in userGroups.List) {
+              if (cbGroups.SelectedText.Equals(ugs.Name)) {
+                Response resp = userRoleManager.AddUserGroupToGroup
+                  (ug.Id, ugs.Id);
+              }
+            }
+          }
+        }
+      }
+      if (addUserEvent != null) {
+        addUserEvent();
+      }
+      this.Close();
+    }
+
+    private void BtnClose_Click(object sender, EventArgs e) {
+      this.Close();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/AddUserForm.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.Designer.cs	(revision 4073)
@@ -0,0 +1,260 @@
+﻿namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class CgCalendar {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      Calendar.DrawTool drawTool1 = new Calendar.DrawTool();
+      this.dvOnline = new Calendar.DayView();
+      this.btnSaveCal = new System.Windows.Forms.Button();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.txttimeTo = new System.Windows.Forms.DateTimePicker();
+      this.txttimeFrom = new System.Windows.Forms.DateTimePicker();
+      this.dtpTo = new System.Windows.Forms.DateTimePicker();
+      this.dtpFrom = new System.Windows.Forms.DateTimePicker();
+      this.chbade = new System.Windows.Forms.CheckBox();
+      this.btnRecurrence = new System.Windows.Forms.Button();
+      this.btbDelete = new System.Windows.Forms.Button();
+      this.label2 = new System.Windows.Forms.Label();
+      this.label1 = new System.Windows.Forms.Label();
+      this.btCreate = new System.Windows.Forms.Button();
+      this.mcOnline = new System.Windows.Forms.MonthCalendar();
+      this.btnClearCal = new System.Windows.Forms.Button();
+      this.cbx_forcePush = new System.Windows.Forms.CheckBox();
+      this.groupBox1.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // dvOnline
+      // 
+      drawTool1.DayView = this.dvOnline;
+      this.dvOnline.ActiveTool = drawTool1;
+      this.dvOnline.AmPmDisplay = false;
+      this.dvOnline.AppointmentDuration = Calendar.AppointmentSlotDuration.SixtyMinutes;
+      this.dvOnline.AppointmentHeightMode = Calendar.AppHeightDrawMode.TrueHeightAll;
+      this.dvOnline.DayHeadersHeight = 15;
+      this.dvOnline.DaysToShow = 7;
+      this.dvOnline.DrawAllAppBorder = false;
+      this.dvOnline.EnableDurationDisplay = false;
+      this.dvOnline.EnableRoundedCorners = false;
+      this.dvOnline.EnableShadows = false;
+      this.dvOnline.EnableTimeIndicator = false;
+      this.dvOnline.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+      this.dvOnline.Location = new System.Drawing.Point(18, 185);
+      this.dvOnline.MinHalfHourApp = false;
+      this.dvOnline.Name = "dvOnline";
+      this.dvOnline.SelectionEnd = new System.DateTime(((long)(0)));
+      this.dvOnline.SelectionStart = new System.DateTime(((long)(0)));
+      this.dvOnline.Size = new System.Drawing.Size(823, 354);
+      this.dvOnline.StartDate = new System.DateTime(((long)(0)));
+      this.dvOnline.TabIndex = 42;
+      this.dvOnline.OnSelectionChanged += new System.EventHandler<System.EventArgs>(this.dvOnline_OnSelectionChanged);
+      // 
+      // btnSaveCal
+      // 
+      this.btnSaveCal.Location = new System.Drawing.Point(642, 49);
+      this.btnSaveCal.Name = "btnSaveCal";
+      this.btnSaveCal.Size = new System.Drawing.Size(199, 23);
+      this.btnSaveCal.TabIndex = 45;
+      this.btnSaveCal.Text = "Save Calendar";
+      this.btnSaveCal.UseVisualStyleBackColor = true;
+      this.btnSaveCal.Click += new System.EventHandler(this.btnSaveCal_Click);
+      // 
+      // groupBox1
+      // 
+      this.groupBox1.Controls.Add(this.txttimeTo);
+      this.groupBox1.Controls.Add(this.txttimeFrom);
+      this.groupBox1.Controls.Add(this.dtpTo);
+      this.groupBox1.Controls.Add(this.dtpFrom);
+      this.groupBox1.Controls.Add(this.chbade);
+      this.groupBox1.Controls.Add(this.btnRecurrence);
+      this.groupBox1.Controls.Add(this.btbDelete);
+      this.groupBox1.Controls.Add(this.label2);
+      this.groupBox1.Controls.Add(this.label1);
+      this.groupBox1.Controls.Add(this.btCreate);
+      this.groupBox1.Location = new System.Drawing.Point(382, 13);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(254, 161);
+      this.groupBox1.TabIndex = 44;
+      this.groupBox1.TabStop = false;
+      // 
+      // txttimeTo
+      // 
+      this.txttimeTo.CustomFormat = "HH:00";
+      this.txttimeTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.txttimeTo.Location = new System.Drawing.Point(164, 45);
+      this.txttimeTo.Name = "txttimeTo";
+      this.txttimeTo.ShowUpDown = true;
+      this.txttimeTo.Size = new System.Drawing.Size(73, 20);
+      this.txttimeTo.TabIndex = 40;
+      // 
+      // txttimeFrom
+      // 
+      this.txttimeFrom.CustomFormat = "HH:00";
+      this.txttimeFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.txttimeFrom.Location = new System.Drawing.Point(164, 12);
+      this.txttimeFrom.Name = "txttimeFrom";
+      this.txttimeFrom.ShowUpDown = true;
+      this.txttimeFrom.Size = new System.Drawing.Size(73, 20);
+      this.txttimeFrom.TabIndex = 39;
+      // 
+      // dtpTo
+      // 
+      this.dtpTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpTo.Location = new System.Drawing.Point(72, 45);
+      this.dtpTo.Name = "dtpTo";
+      this.dtpTo.Size = new System.Drawing.Size(89, 20);
+      this.dtpTo.TabIndex = 33;
+      // 
+      // dtpFrom
+      // 
+      this.dtpFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpFrom.Location = new System.Drawing.Point(72, 12);
+      this.dtpFrom.Name = "dtpFrom";
+      this.dtpFrom.Size = new System.Drawing.Size(89, 20);
+      this.dtpFrom.TabIndex = 32;
+      // 
+      // chbade
+      // 
+      this.chbade.AutoSize = true;
+      this.chbade.Location = new System.Drawing.Point(135, 70);
+      this.chbade.Name = "chbade";
+      this.chbade.Size = new System.Drawing.Size(90, 17);
+      this.chbade.TabIndex = 31;
+      this.chbade.Text = "All Day Event";
+      this.chbade.UseVisualStyleBackColor = true;
+      this.chbade.CheckedChanged += new System.EventHandler(this.chbade_CheckedChanged);
+      // 
+      // btnRecurrence
+      // 
+      this.btnRecurrence.Location = new System.Drawing.Point(135, 129);
+      this.btnRecurrence.Name = "btnRecurrence";
+      this.btnRecurrence.Size = new System.Drawing.Size(113, 26);
+      this.btnRecurrence.TabIndex = 30;
+      this.btnRecurrence.Text = "Recurrence";
+      this.btnRecurrence.UseVisualStyleBackColor = true;
+      this.btnRecurrence.Click += new System.EventHandler(this.btnRecurrence_Click);
+      // 
+      // btbDelete
+      // 
+      this.btbDelete.Location = new System.Drawing.Point(8, 129);
+      this.btbDelete.Name = "btbDelete";
+      this.btbDelete.Size = new System.Drawing.Size(114, 26);
+      this.btbDelete.TabIndex = 25;
+      this.btbDelete.Text = "Delete";
+      this.btbDelete.UseVisualStyleBackColor = true;
+      this.btbDelete.Click += new System.EventHandler(this.btbDelete_Click);
+      // 
+      // label2
+      // 
+      this.label2.AutoSize = true;
+      this.label2.Location = new System.Drawing.Point(16, 46);
+      this.label2.Name = "label2";
+      this.label2.Size = new System.Drawing.Size(55, 13);
+      this.label2.TabIndex = 23;
+      this.label2.Text = "End Time:";
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(16, 15);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(58, 13);
+      this.label1.TabIndex = 21;
+      this.label1.Text = "Start Time:";
+      // 
+      // btCreate
+      // 
+      this.btCreate.Location = new System.Drawing.Point(6, 93);
+      this.btCreate.Name = "btCreate";
+      this.btCreate.Size = new System.Drawing.Size(242, 26);
+      this.btCreate.TabIndex = 20;
+      this.btCreate.Text = "Save Appointment";
+      this.btCreate.UseVisualStyleBackColor = true;
+      this.btCreate.Click += new System.EventHandler(this.btCreate_Click);
+      // 
+      // mcOnline
+      // 
+      this.mcOnline.CalendarDimensions = new System.Drawing.Size(2, 1);
+      this.mcOnline.Location = new System.Drawing.Point(18, 18);
+      this.mcOnline.Name = "mcOnline";
+      this.mcOnline.TabIndex = 43;
+      this.mcOnline.DateChanged += new System.Windows.Forms.DateRangeEventHandler(this.mcOnline_DateChanged);
+      // 
+      // btnClearCal
+      // 
+      this.btnClearCal.Location = new System.Drawing.Point(642, 18);
+      this.btnClearCal.Name = "btnClearCal";
+      this.btnClearCal.Size = new System.Drawing.Size(199, 23);
+      this.btnClearCal.TabIndex = 46;
+      this.btnClearCal.Text = "Clear Calendar";
+      this.btnClearCal.UseVisualStyleBackColor = true;
+      this.btnClearCal.Click += new System.EventHandler(this.btnClearCal_Click);
+      // 
+      // cbx_forcePush
+      // 
+      this.cbx_forcePush.AutoSize = true;
+      this.cbx_forcePush.Location = new System.Drawing.Point(642, 78);
+      this.cbx_forcePush.Name = "cbx_forcePush";
+      this.cbx_forcePush.Size = new System.Drawing.Size(80, 17);
+      this.cbx_forcePush.TabIndex = 47;
+      this.cbx_forcePush.Text = "Force Push";
+      this.cbx_forcePush.UseVisualStyleBackColor = true;
+      // 
+      // CgCalendar
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(859, 558);
+      this.Controls.Add(this.cbx_forcePush);
+      this.Controls.Add(this.btnClearCal);
+      this.Controls.Add(this.btnSaveCal);
+      this.Controls.Add(this.groupBox1);
+      this.Controls.Add(this.mcOnline);
+      this.Controls.Add(this.dvOnline);
+      this.Name = "CgCalendar";
+      this.groupBox1.ResumeLayout(false);
+      this.groupBox1.PerformLayout();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button btnSaveCal;
+    private System.Windows.Forms.GroupBox groupBox1;
+    private System.Windows.Forms.DateTimePicker txttimeTo;
+    private System.Windows.Forms.DateTimePicker txttimeFrom;
+    private System.Windows.Forms.DateTimePicker dtpTo;
+    private System.Windows.Forms.DateTimePicker dtpFrom;
+    private System.Windows.Forms.CheckBox chbade;
+    private System.Windows.Forms.Button btnRecurrence;
+    private System.Windows.Forms.Button btbDelete;
+    private System.Windows.Forms.Label label2;
+    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.Button btCreate;
+    private System.Windows.Forms.MonthCalendar mcOnline;
+    private Calendar.DayView dvOnline;
+    private System.Windows.Forms.Button btnClearCal;
+    private System.Windows.Forms.CheckBox cbx_forcePush;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.cs	(revision 4073)
@@ -0,0 +1,296 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.Xml.Serialization;
+using Calendar;
+using HeuristicLab.Hive.Client.Console;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Contracts;
+using System.Collections;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+
+  //delegate to write text in the textbox from another process
+  public delegate void AppendTextDelegate(String message);
+
+  //delegate to remove text in the textbox from another process
+  public delegate void RemoveTextDelegate(int newLength, int maxChars);
+
+  //delegate fired, if a dialog is being closed
+  public delegate void OnDialogClosedDelegate(RecurrentEvent e);
+
+  public partial class CgCalendar : Form {
+
+    public Guid ResourceId { get; set; }
+    public string Name { get; set; }
+
+    [XmlArray("Appointments")]
+    [XmlArrayItem("Appointment", typeof(Appointment))]
+    public List<Appointment> onlineTimes = new List<Appointment>();
+
+    public CgCalendar(Guid resourceId, String name) {      
+      Name = name;
+      ResourceId = resourceId;
+      this.Text = Name + "(" + ResourceId + ")";
+      InitializeComponent();
+      InitCalender();
+      UpdateCalendar();
+    }
+
+    private void InitCalender() {
+      dvOnline.StartDate = DateTime.Now;
+      dvOnline.OnNewAppointment += new EventHandler<NewAppointmentEventArgs>(dvOnline_OnNewAppointment);
+      dvOnline.OnResolveAppointments += new EventHandler<ResolveAppointmentsEventArgs>(dvOnline_OnResolveAppointments);
+
+      //get calender from client
+      
+    }
+
+    private void UpdateCalendar() {
+      onlineTimes.Clear();
+      ResponseList<AppointmentDto> response = ServiceLocator.GetClientManager().GetUptimeCalendarForResource(ResourceId);
+      if(response.Success) {
+        foreach (AppointmentDto appointmentDto in response.List) {
+          onlineTimes.Add(new Appointment {
+                                            AllDayEvent = appointmentDto.AllDayEvent,
+                                            EndDate = appointmentDto.EndDate,
+                                            StartDate = appointmentDto.StartDate,
+                                            Recurring = appointmentDto.Recurring,
+                                            
+                                            RecurringId = appointmentDto.RecurringId,
+                                            BorderColor = Color.Red,
+                                            Locked = true,
+                                            Subject = "Online",
+                                          });
+        }
+        dvOnline.Invalidate();
+      }   
+    }
+
+    private bool CreateAppointment() {
+      DateTime from, to;
+
+      if (!string.IsNullOrEmpty(dtpFrom.Text) && !string.IsNullOrEmpty(dtpTo.Text)) {
+        if (chbade.Checked) {
+          //whole day appointment, only dates are visible
+          if (DateTime.TryParse(dtpFrom.Text, out from) && DateTime.TryParse(dtpTo.Text, out to) && from <= to)
+            onlineTimes.Add(CreateAppointment(from, to.AddDays(1), true));
+          else
+            MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        } else if (!string.IsNullOrEmpty(txttimeFrom.Text) && !string.IsNullOrEmpty(txttimeTo.Text)) {
+          //Timeframe appointment
+          if (DateTime.TryParse(dtpFrom.Text + " " + txttimeFrom.Text, out from) && DateTime.TryParse(dtpTo.Text + " " + txttimeTo.Text, out to) && from < to) {
+            if (from.Date == to.Date)
+              onlineTimes.Add(CreateAppointment(from, to, false));
+            else {
+              //more than 1 day selected
+              while (from.Date != to.Date) {
+                onlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
+                from = from.AddDays(1);
+              }
+              onlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
+            }
+          } else
+            MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+        dvOnline.Invalidate();
+        return true;
+      } else {
+        MessageBox.Show("Error in create appointment, please fill out all textboxes!", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        return false;
+      }
+    }
+
+    private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay) {
+      Appointment App = new Appointment();
+      App.StartDate = startDate;
+      App.EndDate = endDate;
+      App.AllDayEvent = allDay;
+      App.BorderColor = Color.Red;
+      App.Locked = true;
+      App.Subject = "Online";
+      App.Recurring = false;
+      return App;
+    }
+
+    private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId) {
+      Appointment App = new Appointment();
+      App.StartDate = startDate;
+      App.EndDate = endDate;
+      App.AllDayEvent = allDay;
+      App.BorderColor = Color.Red;
+      App.Locked = true;
+      App.Subject = "Online";
+      App.Recurring = recurring;
+      App.RecurringId = recurringId;
+      return App;
+    }
+
+    private void DeleteAppointment() {
+      onlineTimes.Remove(dvOnline.SelectedAppointment);
+    }
+
+    private void DeleteRecurringAppointment(Guid recurringId) {
+      onlineTimes.RemoveAll(a => a.RecurringId.ToString() == dvOnline.SelectedAppointment.RecurringId.ToString());
+    }
+
+    private void ChangeRecurrenceAppointment(Guid recurringId) {
+      int hourfrom = int.Parse(txttimeFrom.Text.Substring(0, txttimeFrom.Text.IndexOf(':')));
+      int hourTo = int.Parse(txttimeTo.Text.Substring(0, txttimeTo.Text.IndexOf(':')));
+      List<Appointment> recurringAppointments = onlineTimes.Where(appointment => appointment.RecurringId == recurringId).ToList();
+      recurringAppointments.ForEach(appointment => appointment.StartDate = new DateTime(appointment.StartDate.Year, appointment.StartDate.Month, appointment.StartDate.Day, hourfrom, 0, 0));
+      recurringAppointments.ForEach(appointment => appointment.EndDate = new DateTime(appointment.EndDate.Year, appointment.EndDate.Month, appointment.EndDate.Day, hourTo, 0, 0));
+
+      DeleteRecurringAppointment(recurringId);
+      onlineTimes.AddRange(recurringAppointments);
+    }
+
+    public void DialogClosed(RecurrentEvent e) {
+      CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.IncWeeks, e.WeekDays);
+    }
+
+    private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, int incWeek, HashSet<DayOfWeek> daysOfWeek) {
+      DateTime incDate = dateFrom;
+      Guid guid = Guid.NewGuid();
+
+      while (incDate.Date <= dateTo.Date) {
+        if (daysOfWeek.Contains(incDate.Date.DayOfWeek))
+          onlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid));
+        incDate = incDate.AddDays(1);
+      }
+
+      dvOnline.Invalidate();
+    }
+
+    private void btbDelete_Click(object sender, EventArgs e) {
+      Appointment selectedAppointment = dvOnline.SelectedAppointment;
+      if (dvOnline.SelectedAppointment != null) {
+        if (!selectedAppointment.Recurring)
+          DeleteAppointment();
+        else {
+          DialogResult res = MessageBox.Show("Delete all events in this series?", "Delete recurrences", MessageBoxButtons.YesNo);
+          if (res != DialogResult.Yes)
+            DeleteAppointment();
+          else
+            DeleteRecurringAppointment(selectedAppointment.RecurringId);
+        }
+      }
+      dvOnline.Invalidate();
+    }
+
+    private void chbade_CheckedChanged(object sender, EventArgs e) {
+      txttimeFrom.Visible = !chbade.Checked;
+      txttimeTo.Visible = !chbade.Checked;
+    }
+
+    private void dvOnline_OnSelectionChanged(object sender, EventArgs e) {
+      //btCreate.Enabled = true;
+      if (dvOnline.Selection == SelectionType.DateRange) {
+        dtpFrom.Text = dvOnline.SelectionStart.ToShortDateString();
+        dtpTo.Text = dvOnline.SelectionEnd.Date.ToShortDateString();
+        txttimeFrom.Text = dvOnline.SelectionStart.ToShortTimeString();
+        txttimeTo.Text = dvOnline.SelectionEnd.ToShortTimeString();
+
+        btCreate.Text = "Save";
+      }
+
+      if (dvOnline.Selection == SelectionType.Appointment) {
+
+        dtpFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortDateString();
+        dtpTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortDateString();
+        txttimeFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortTimeString();
+        txttimeTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortTimeString();
+
+        if (dvOnline.SelectedAppointment.Recurring)
+          //btCreate.Enabled = false;
+          //also change the caption of the save button
+          btCreate.Text = "Save changes";
+      }
+
+      if (dvOnline.Selection == SelectionType.None) {
+        //also change the caption of the save button
+        btCreate.Text = "Save";
+      }
+
+    }
+
+    private void mcOnline_DateChanged(object sender, DateRangeEventArgs e) {
+      dvOnline.StartDate = mcOnline.SelectionStart;
+    }
+
+    private void btCreate_Click(object sender, EventArgs e) {
+      if (dvOnline.Selection != SelectionType.Appointment) {
+        CreateAppointment();
+      } else {
+        //now we want to change an existing appointment
+        if (!dvOnline.SelectedAppointment.Recurring) {
+          if (CreateAppointment())
+            DeleteAppointment();
+        } else {
+          //change recurring appointment
+          //check, if only selected appointment has to change or whole recurrence
+          DialogResult res = MessageBox.Show("Change all events in this series?", "Change recurrences", MessageBoxButtons.YesNo);
+          if (res != DialogResult.Yes) {
+            if (CreateAppointment())
+              DeleteAppointment();
+          } else
+            ChangeRecurrenceAppointment(dvOnline.SelectedAppointment.RecurringId);
+        }
+      }
+      dvOnline.Invalidate();
+    }
+
+    private void btnRecurrence_Click(object sender, EventArgs e) {
+      Recurrence recurrence = new Recurrence();
+      recurrence.dialogClosedDelegate = new OnDialogClosedDelegate(this.DialogClosed);
+      recurrence.Show();
+    }
+
+    private void btnSaveCal_Click(object sender, EventArgs e) {
+      List<AppointmentDto> appointments = new List<AppointmentDto>();
+      foreach(Appointment app in onlineTimes) {
+        AppointmentDto apdto = new AppointmentDto {
+                                                    AllDayEvent = app.AllDayEvent,
+                                                    EndDate = app.EndDate,
+                                                    Recurring = app.Recurring,
+                                                    RecurringId = app.RecurringId,
+                                                    StartDate = app.StartDate
+                                                  };
+        appointments.Add(apdto);
+      }
+      ServiceLocator.GetClientManager().SetUptimeCalendarForResource(ResourceId, appointments, cbx_forcePush.Checked);      
+    }
+
+    private void dvOnline_OnResolveAppointments(object sender, ResolveAppointmentsEventArgs e) {
+      List<Appointment> Apps = new List<Appointment>();
+
+      foreach (Appointment m_App in onlineTimes)
+        if ((m_App.StartDate >= e.StartDate) &&
+            (m_App.StartDate <= e.EndDate))
+          Apps.Add(m_App);
+      e.Appointments = Apps;
+    }
+
+    private void dvOnline_OnNewAppointment(object sender, NewAppointmentEventArgs e) {
+      Appointment Appointment = new Appointment();
+
+      Appointment.StartDate = e.StartDate;
+      Appointment.EndDate = e.EndDate;
+
+      onlineTimes.Add(Appointment);
+    }
+
+    private void btnClearCal_Click(object sender, EventArgs e) {
+      onlineTimes.Clear();
+    }
+  }
+}
+    
+  
+    
+
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/CgCalendar.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Changes.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Changes.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Changes.cs	(revision 4073)
@@ -0,0 +1,19 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  public enum Change { Create, Update, Delete };
+  public enum Type { Client, ClientGroup, Job };
+  public class Changes {
+
+    public Type Types { get; set; }
+
+    public Guid ID { get; set; }
+
+    public Change ChangeType { get; set; }
+
+    public int Position { get; set; }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj	(revision 4073)
@@ -0,0 +1,266 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{42A1D075-6C12-4DD9-B0C2-C6F5210A8119}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Server.ServerConsole</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Server.Console-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Calendar.DayView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\HeuristicLab.Hive.Contracts\3.2\Calendar.DayView.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.DirectoryServices" />
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AddGroup.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="AddGroup.Designer.cs">
+      <DependentUpon>AddGroup.cs</DependentUpon>
+    </Compile>
+    <Compile Include="AddJobForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="AddJobForm.Designer.cs">
+      <DependentUpon>AddJobForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="AddProject.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="AddProject.designer.cs">
+      <DependentUpon>AddProject.cs</DependentUpon>
+    </Compile>
+    <Compile Include="CgCalendar.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="CgCalendar.Designer.cs">
+      <DependentUpon>CgCalendar.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Changes.cs" />
+    <Compile Include="HiveServerConsole.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="HiveServerConsole.Designer.cs">
+      <DependentUpon>HiveServerConsole.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HiveServerConsoleApplication.cs" />
+    <Compile Include="HiveServerManagementConsole.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="HiveServerManagementConsole.Designer.cs">
+      <DependentUpon>HiveServerManagementConsole.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HiveServerConsolePlugin.cs" />
+    <Compile Include="JobDataFetcher.cs" />
+    <Compile Include="JobListView.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="JobListViewControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="JobListViewControl.Designer.cs">
+      <DependentUpon>JobListViewControl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LogonDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="LogonDlg.Designer.cs">
+      <DependentUpon>LogonDlg.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="AddGroup.resx">
+      <DependentUpon>AddGroup.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="AddJobForm.resx">
+      <DependentUpon>AddJobForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="AddProject.resx">
+      <DependentUpon>AddProject.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="CgCalendar.resx">
+      <DependentUpon>CgCalendar.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="HiveServerConsole.resx">
+      <DependentUpon>HiveServerConsole.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="HiveServerManagementConsole.resx">
+      <DependentUpon>HiveServerManagementConsole.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="JobListView.resx">
+      <DependentUpon>JobListView.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="JobListViewControl.resx">
+      <DependentUpon>JobListViewControl.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="LogonDlg.resx">
+      <DependentUpon>LogonDlg.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Recurrence.resx">
+      <DependentUpon>Recurrence.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <Compile Include="Recurrence.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Recurrence.Designer.cs">
+      <DependentUpon>Recurrence.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ServiceLocator.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.JobBase\3.2\HeuristicLab.Hive.JobBase-3.2.csproj">
+      <Project>{21187322-52DD-4243-80A4-A85F0263E63B}</Project>
+      <Name>HeuristicLab.Hive.JobBase-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.Designer.cs	(revision 4073)
@@ -0,0 +1,250 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class HiveServerConsole {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveServerConsole));
+      this.gbConfiguration = new System.Windows.Forms.GroupBox();
+      this.lblPort = new System.Windows.Forms.Label();
+      this.lblIp = new System.Windows.Forms.Label();
+      this.tbPort = new System.Windows.Forms.TextBox();
+      this.tbIp = new System.Windows.Forms.TextBox();
+      this.btnLogin = new System.Windows.Forms.Button();
+      this.gpUser = new System.Windows.Forms.GroupBox();
+      this.tbUserName = new System.Windows.Forms.TextBox();
+      this.lblPwd = new System.Windows.Forms.Label();
+      this.lblUsername = new System.Windows.Forms.Label();
+      this.tbPwd = new System.Windows.Forms.TextBox();
+      this.lblError = new System.Windows.Forms.Label();
+      this.pictureBox1 = new System.Windows.Forms.PictureBox();
+      this.btnCancel = new System.Windows.Forms.Button();
+      this.gbConfiguration.SuspendLayout();
+      this.gpUser.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // gbConfiguration
+      // 
+      this.gbConfiguration.Controls.Add(this.lblPort);
+      this.gbConfiguration.Controls.Add(this.lblIp);
+      this.gbConfiguration.Controls.Add(this.tbPort);
+      this.gbConfiguration.Controls.Add(this.tbIp);
+      this.gbConfiguration.Location = new System.Drawing.Point(188, 100);
+      this.gbConfiguration.Name = "gbConfiguration";
+      this.gbConfiguration.Size = new System.Drawing.Size(283, 82);
+      this.gbConfiguration.TabIndex = 4;
+      this.gbConfiguration.TabStop = false;
+      this.gbConfiguration.Text = "Configuration";
+      // 
+      // lblPort
+      // 
+      this.lblPort.AutoSize = true;
+      this.lblPort.Location = new System.Drawing.Point(16, 54);
+      this.lblPort.Name = "lblPort";
+      this.lblPort.Size = new System.Drawing.Size(26, 13);
+      this.lblPort.TabIndex = 3;
+      this.lblPort.Text = "Port";
+      // 
+      // lblIp
+      // 
+      this.lblIp.AutoSize = true;
+      this.lblIp.Location = new System.Drawing.Point(16, 26);
+      this.lblIp.Name = "lblIp";
+      this.lblIp.Size = new System.Drawing.Size(17, 13);
+      this.lblIp.TabIndex = 2;
+      this.lblIp.Text = "IP";
+      // 
+      // tbPort
+      // 
+      this.tbPort.Location = new System.Drawing.Point(77, 47);
+      this.tbPort.Name = "tbPort";
+      this.tbPort.Size = new System.Drawing.Size(189, 20);
+      this.tbPort.TabIndex = 6;
+      this.tbPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
+      // 
+      // tbIp
+      // 
+      this.tbIp.Location = new System.Drawing.Point(77, 19);
+      this.tbIp.Name = "tbIp";
+      this.tbIp.Size = new System.Drawing.Size(191, 20);
+      this.tbIp.TabIndex = 5;
+      this.tbIp.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
+      // 
+      // btnLogin
+      // 
+      this.btnLogin.Location = new System.Drawing.Point(355, 193);
+      this.btnLogin.Name = "btnLogin";
+      this.btnLogin.Size = new System.Drawing.Size(116, 23);
+      this.btnLogin.TabIndex = 7;
+      this.btnLogin.Text = "Login";
+      this.btnLogin.UseVisualStyleBackColor = true;
+      this.btnLogin.Click += new System.EventHandler(this.BtnLogin_Click);
+      this.btnLogin.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
+      // 
+      // gpUser
+      // 
+      this.gpUser.Controls.Add(this.tbUserName);
+      this.gpUser.Controls.Add(this.lblPwd);
+      this.gpUser.Controls.Add(this.lblUsername);
+      this.gpUser.Controls.Add(this.tbPwd);
+      this.gpUser.Location = new System.Drawing.Point(188, 12);
+      this.gpUser.Name = "gpUser";
+      this.gpUser.Size = new System.Drawing.Size(283, 82);
+      this.gpUser.TabIndex = 1;
+      this.gpUser.TabStop = false;
+      this.gpUser.Text = "User";
+      // 
+      // tbUserName
+      // 
+      this.tbUserName.Location = new System.Drawing.Point(77, 19);
+      this.tbUserName.Name = "tbUserName";
+      this.tbUserName.Size = new System.Drawing.Size(189, 20);
+      this.tbUserName.TabIndex = 2;
+      this.tbUserName.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
+      // 
+      // lblPwd
+      // 
+      this.lblPwd.AutoSize = true;
+      this.lblPwd.Location = new System.Drawing.Point(16, 54);
+      this.lblPwd.Name = "lblPwd";
+      this.lblPwd.Size = new System.Drawing.Size(53, 13);
+      this.lblPwd.TabIndex = 3;
+      this.lblPwd.Text = "Password";
+      // 
+      // lblUsername
+      // 
+      this.lblUsername.AutoSize = true;
+      this.lblUsername.Location = new System.Drawing.Point(16, 26);
+      this.lblUsername.Name = "lblUsername";
+      this.lblUsername.Size = new System.Drawing.Size(55, 13);
+      this.lblUsername.TabIndex = 2;
+      this.lblUsername.Text = "Username";
+      // 
+      // tbPwd
+      // 
+      this.tbPwd.Location = new System.Drawing.Point(77, 47);
+      this.tbPwd.Name = "tbPwd";
+      this.tbPwd.Size = new System.Drawing.Size(189, 20);
+      this.tbPwd.TabIndex = 3;
+      this.tbPwd.UseSystemPasswordChar = true;
+      this.tbPwd.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
+      // 
+      // lblError
+      // 
+      this.lblError.AutoSize = true;
+      this.lblError.ForeColor = System.Drawing.Color.Red;
+      this.lblError.Location = new System.Drawing.Point(12, 193);
+      this.lblError.Name = "lblError";
+      this.lblError.Size = new System.Drawing.Size(0, 13);
+      this.lblError.TabIndex = 5;
+      // 
+      // pictureBox1
+      // 
+      this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+      this.pictureBox1.Location = new System.Drawing.Point(12, 12);
+      this.pictureBox1.Name = "pictureBox1";
+      this.pictureBox1.Size = new System.Drawing.Size(170, 170);
+      this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+      this.pictureBox1.TabIndex = 8;
+      this.pictureBox1.TabStop = false;
+      // 
+      // btnCancel
+      // 
+      this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.btnCancel.Location = new System.Drawing.Point(259, 193);
+      this.btnCancel.Name = "btnCancel";
+      this.btnCancel.Size = new System.Drawing.Size(90, 23);
+      this.btnCancel.TabIndex = 9;
+      this.btnCancel.Text = "&Cancel";
+      this.btnCancel.UseVisualStyleBackColor = true;
+      this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+      // 
+      // HiveServerConsole
+      // 
+      this.AcceptButton = this.btnLogin;
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.BackColor = System.Drawing.SystemColors.Control;
+      this.CancelButton = this.btnCancel;
+      this.ClientSize = new System.Drawing.Size(482, 226);
+      this.Controls.Add(this.btnCancel);
+      this.Controls.Add(this.pictureBox1);
+      this.Controls.Add(this.lblError);
+      this.Controls.Add(this.gpUser);
+      this.Controls.Add(this.btnLogin);
+      this.Controls.Add(this.gbConfiguration);
+      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+      this.Name = "HiveServerConsole";
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+      this.Text = "Server Console Logon";
+      this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HiveServerConsole_KeyPress);
+      this.gbConfiguration.ResumeLayout(false);
+      this.gbConfiguration.PerformLayout();
+      this.gpUser.ResumeLayout(false);
+      this.gpUser.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.GroupBox gbConfiguration;
+    private System.Windows.Forms.Label lblPort;
+    private System.Windows.Forms.Label lblIp;
+    private System.Windows.Forms.TextBox tbPort;
+    private System.Windows.Forms.TextBox tbIp;
+    private System.Windows.Forms.Button btnLogin;
+    private System.Windows.Forms.GroupBox gpUser;
+    private System.Windows.Forms.TextBox tbUserName;
+    private System.Windows.Forms.Label lblPwd;
+    private System.Windows.Forms.Label lblUsername;
+    private System.Windows.Forms.TextBox tbPwd;
+    private System.Windows.Forms.Label lblError;
+    private System.Windows.Forms.PictureBox pictureBox1;
+    private System.Windows.Forms.Button btnCancel;
+  }
+}
+
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.cs	(revision 4073)
@@ -0,0 +1,182 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Contracts;
+using System.Security.Cryptography;
+using System.Net;
+using System.Threading;
+using System.ServiceModel;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+
+  public partial class HiveServerConsole : Form {
+
+    HiveServerManagementConsole information = null;
+
+    public HiveServerConsole() {
+      InitializeComponent();
+    }
+
+    private void tsmiExit_Click(object sender, EventArgs e) {
+      this.Close();
+    }
+
+    /// <summary>
+    /// When login button is clicked, the ManagementConsole
+    /// will be opened
+    /// </summary>
+    /// <param name="sender"></param>
+    /// <param name="e"></param>
+    private void BtnLogin_Click(object sender, EventArgs e) {
+      string newIp = tbIp.Text;
+      newIp = newIp.Replace(" ", "");
+
+      ServiceLocator.Address = newIp;
+      ServiceLocator.Port = this.tbPort.Text;
+
+      if (IsValid()) {
+        this.Visible = false;
+        information = new HiveServerManagementConsole();
+        information.closeFormEvent += new closeForm(EnableForm);
+        information.Show();
+      } 
+    }
+
+    /// <summary>
+    /// if the input is correct and the login-method returns a 
+    /// valid response
+    /// </summary>
+    /// <returns></returns>
+    private bool IsValid() {
+      Thread t = new Thread(new ThreadStart(ShowWaitDlg));
+      if (IsFormValidated()) {
+        IPAddress ipAdress = IPAddress.Parse(tbIp.Text);
+        int port = int.Parse(tbPort.Text);
+        ServiceLocator.Address = tbIp.Text.Replace(" ", "");
+        ServiceLocator.Port = tbPort.Text;
+        IServerConsoleFacade scf = ServiceLocator.GetServerConsoleFacade();
+        Response resp;
+        try {
+          lblError.Text = "Trying to logon...";
+          this.Cursor = Cursors.WaitCursor;
+          t.Start();
+          resp = scf.Login(tbUserName.Text, tbPwd.Text);
+          t.Abort();
+          this.Cursor = Cursors.Default;
+          if (resp.Success == true) return true;
+          lblError.Text = resp.StatusMessage;
+          MessageBox.Show("Wrong username or password");
+        }
+        catch (EndpointNotFoundException ene) {
+          t.Abort();
+          this.Cursor = Cursors.Default;
+          MessageBox.Show(ene.Message);
+          lblError.Text = "No Service at this address!";
+          scf = null;
+        }
+        catch (Exception ex) {
+          //login failed
+          t.Abort();
+          this.Cursor = Cursors.Default;
+          MessageBox.Show(ex.Message);
+          lblError.Text = "Logon failed! Please restart console";
+        }
+      }
+        return false;
+    }
+
+
+    private void ShowWaitDlg() {
+      LogonDlg dlg = new LogonDlg();
+      dlg.ShowDialog();
+    }
+
+    /// <summary>
+    /// Validates the form.
+    /// </summary>
+    /// <returns></returns>
+    private bool IsFormValidated() {
+      bool isValid = true;
+      if (String.IsNullOrEmpty(tbUserName.Text)) {
+        lblError.Text = "Please type in Username.";
+        isValid = false;
+      }
+      if (String.IsNullOrEmpty(tbPwd.Text)) {
+        lblError.Text = "Please type in Password.";
+        isValid = false;
+      }
+      if (String.IsNullOrEmpty(tbIp.Text)) {
+        lblError.Text = "Please type in Port.";
+        isValid = false;
+      }
+      if (String.IsNullOrEmpty(tbPort.Text)) {
+        lblError.Text = "Please type in IP-Address.";
+        isValid = false;
+      }
+      try {
+        int.Parse(tbPort.Text);
+      }
+      catch (Exception ex) {
+        isValid = false;
+        lblError.Text = "Please verify entered Port.";
+      }
+      try {
+        IPAddress.Parse(tbIp.Text);
+      }
+      catch (Exception ex) {
+        isValid = false;
+        lblError.Text = "Please verify entered IP address.";
+      }
+      return isValid;
+    }
+
+    private void EnableForm(bool cf, bool error) {
+      if (cf) {
+        this.Visible = true;
+        ServiceLocator.ShutDownFacade();
+        lblError.Text = "";
+        if (error == true) {
+          lblError.Text = "Establishing server connection failed.";
+        }
+      }
+    }
+
+    private void HiveServerConsole_KeyPress(object sender, KeyPressEventArgs e) {
+      if (e.KeyChar == (char)Keys.Return) {
+        BtnLogin_Click(sender, e);
+      }
+    }
+
+    private void btnCancel_Click(object sender, EventArgs e) {
+      Dispose();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsole.resx	(revision 4073)
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        R0lGODlh7gDTAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AQEBAgICAwMDBERERYWFhwc
+        HCIiIikpKVVVVU1NTUJCQjk5Of98gP9QUNYAk8zs/+/Wxufn1q2pkDMAAGYAAJkAAMwAAAAzADMzAGYz
+        AJkzAMwzAP8zAABmADNmAGZmAJlmAMxmAP9mAACZADOZAGaZAJmZAMyZAP+ZAADMADPMAGbMAJnMAMzM
+        AP/MAGb/AJn/AMz/AAAAMzMAM2YAM5kAM8wAM/8AMwAzMzMzM2YzM5kzM8wzM/8zMwBmMzNmM2ZmM5lm
+        M8xmM/9mMwCZMzOZM2aZM5mZM8yZM/+ZMwDMMzPMM2bMM5nMM8zMM//MMzP/M2b/M5n/M8z/M///MwAA
+        ZjMAZmYAZpkAZswAZv8AZgAzZjMzZmYzZpkzZswzZv8zZgBmZjNmZmZmZplmZsxmZgCZZjOZZmaZZpmZ
+        ZsyZZv+ZZgDMZjPMZpnMZszMZv/MZgD/ZjP/Zpn/Zsz/Zv8AzMwA/wCZmZkzmZkAmcwAmQAAmTMzmWYA
+        mcwzmf8AmQBmmTNmmWYzmZlmmcxmmf8zmTOZmWaZmZmZmcyZmf+ZmQDMmTPMmWbMZpnMmczMmf/MmQD/
+        mTP/mWbMmZn/mcz/mf//mQAAzDMAmWYAzJkAzMwAzAAzmTMzzGYzzJkzzMwzzP8zzABmzDNmzGZmmZlm
+        zMxmzP9mmQCZzDOZzGaZzJmZzMyZzP+ZzADMzDPMzGbMzJnMzMzMzP/MzAD/zDP/zGb/mZn/zMz/zP//
+        zDMAzGYA/5kA/wAzzDMz/2Yz/5kz/8wz//8z/wBm/zNm/2ZmzJlm/8xm//9mzACZ/zOZ/2aZ/5mZ/8yZ
+        //+Z/wDM/zPM/2bM/5nM/8zM///M/zP//2b/zJn//8z///9mZmb/Zv//ZmZm//9m/2b//6UAIV9fX3d3
+        d4aGhpaWlsvLy7KystfX193d3ePj4+rq6vHx8fj4+P/78KCgpICAgP8AAAD/AP//AAAA//8A/wD/////
+        /ywAAAAA7gDTAAAI/wD/CRxIsKDBgwgTKlzIsKFDhPUydEtAsWKGDPUeatzIsaPHjyBDihxJMEPFkygp
+        0iPJsqXLlzBjbqSXsibKjDJz6tzJs+fAiTaDUuzms6jRo0gT1hPKtCLOpFCjSmVJs6nVp1Ozat0K0arX
+        BFzDitX69evYs2h9lv1KNK3btyxNrvWaAa7duxuXzv2KFa/fvwP3rgVM+K9cwV77Fl58FvFgxpDHHnZs
+        tW7ky1n1UjaLuTNUwRf3WvZMuqfmsjgncy7NOufelQNVe21N+2XVsqMDz4Vdu3fIvYpPr/ZNfKPsprlL
+        zk1evLnSvQqhO5+eULTC40zbUt8u8HZZhsC5c/+XvlD4bPHTsQtljlB9UN7oiZNnaN5q/OLubbJPmL/m
+        /vud1ddUXuEB2FqBGvVXk4GsCciUR68xSNp8HFEoIWMKovRfQxmetOGFdzkolEgWgvgXULiJ1KFFJhYm
+        YlAkIdgiXiV65N1wM8J1Y2UtyZijWz6SONePcK1I0YcdWUdkWjUK+diSY6H4FZI2zqUdlFvtaJ9MQWIZ
+        VZcsvWiTl1oZmQCVIZkJH5lJNdmSmAuyCZWZaKq4nJxIwZlSUW7iGROYCNEjkUkXzaMYf336+Wai3SF3
+        qEERKroTo/+kWB6lkn6kJVNIbvrgQkpmChOgApnpFKhDivpSqF05thCdqi7/mmp0m6G61qOxVjhrdZsl
+        gOs/eqKUq0ieBnXlQcEOSOutw4JEaqW9UvRrshU16xGstvb6IbbWapSoqcZeumu3DHHLa7QUlYuptdSm
+        Cx660r7LLLnZfrUmQvDGK+6T9B5kakPtNnXvQc92S2mxgg1M8Lj9lnpnQwjPxY3CBpnbcMAPRbzbQ+tm
+        WvBA9HCT768F/dswsOsGzBTJBX3s8Vwst5wvgQw3qzFKxzaUL1gbsWqtywTlm7PONccqJV0dgatf0g83
+        i3FH88A7D4Qw/9w0zdHGfNDNJw0tKdcVee0QvM5WnSvQC0cL0tOqWszR0YiJ7ZDbfnbsb7R1tjqvpHTP
+        /4S3nWvJjaXdyGY9EtomRuokZSSxLSfY1cbYa1wb40k4orU2fvl9fVdJWd7qrgU6gI6PpLKHLm0unplT
+        p06Z1g91bmLpkru6qtlLIj434y/R3iLkCQj+kdLu3i567ri7BDzqfxYtoewhnX6mTNDH53uPiMGepPMA
+        +my86hCDT9v1LSk9afIMis8hYjypT1r1poPGE/zO6U711TKRvx39h9vPdODp4973vqMW9HEHbgIrisl6
+        srz7NLAoUTueAisnHv99pF2ji577CrNAPu3NJ/wrzQZ79sEC8ss5IWwJAkeElBReRn86MdJnDNgbCxLL
+        UnkaIVxgqJNkZZAlivONDv+35xWK9WSIaAHeD7GXGKm4kDBIfBuO2kRDz3ivhVNEygNbw0MGIi0rNnxL
+        GMP0RTAKcDFK5EoRt7JCoRhxMWNk4sq20kXD4G8qCgrLE4F0xqPASSxBhEwb3yMWMS1RJluETB2Pgpyx
+        BLIwcRwVU96YlEWmJZF6nKNk7viXKJIkP0zqY1oGuTS0vCgtZhKeKT0JxKAcsn1VFCMF0bIet1iSjqxs
+        pU0oOZVIevCEaFGP9mYITLekES4RjNNb9kjFEq5yTHbxZQw5SUv/3AV4qpzKLXtZE15uRZrNW4s32ViT
+        YUplm0bBZJGUeRc1hbKYb0nmSf6Czp4wMyrmeWVS7un/GlE6UkNQjOWcqAmXlLTOjv40TS51cjRzfnOW
+        3HQmXlSzmHrCxKJaichFLoIhghploWQCaehweLL1SRAqAXNov8C5EVJ2s6RYI2AOEwpTgbB0bDStqU1z
+        OpJj6jRBHg0nan4a0yzmhJ8l7WAPRSqqm6atLON8i0Y9hJHOgFSdhImYPssU1P5J1C/JOqiLcolUPHZ1
+        mWf9iFNByD7GeLKsUSEezwqDzYsyNSbLw5lbIerVocKxV1EtpA4xmhW5zvOvJ+0rXyoKL5U+FJ7/Iylg
+        DNu1jia2bF+9y84gM8Yr+mVnjs0o+AhLlnxtVSqP9JZA7ZLXWnKWp40CIGRa68rI/+xxrUWhbSkZg064
+        anNnpzVrTu96PngF9p1+dYhLUxJcM5INM4skbViWK9PLpPap9vKMbgFqxT4q1broKk31iOuT7R6JNX3y
+        rVgo25q66q26InwdbcDkzvE5prlj8Z10pSq/Gt4Rt2FZrVXHhUHn3Ay/aE0sgM8iqNpShzw+3Y5GLxLa
+        yACvddQ9LFEbkyoBb/hLg2nXh1EpThmO+JlTuuyJM7mzU624mi2e64v/2WIEz5hyNb7xWSirnwrruCX0
+        yHCMh0zkIhv5yEhOspKXzOQmw4vHTo6ylKf8ZOlR+cpYzvJQtczlLnvZdlD+spjHbGTLWJnMaE5zi5Wj
+        5ja7mTfJyXmznOdMZOzS+c54dl6e98xnZZ2rz4DuM9ECTWg61ynMhU50kUeHaEU7+m+aavSjJz2lhgQE
+        ADs=
+</value>
+  </data>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsoleApplication.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsoleApplication.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsoleApplication.cs	(revision 4073)
@@ -0,0 +1,36 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  [Application("Hive Server Console", "Console Application for the Hive Server.")]
+  class HiveServerConsoleApplication : ApplicationBase {
+    public override void Run() {
+      Form mainForm = new HiveServerConsole();
+      Application.Run(mainForm);
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsolePlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsolePlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerConsolePlugin.cs	(revision 4073)
@@ -0,0 +1,34 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Grid {
+  [Plugin("HeuristicLab.Hive.Server.Console-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.Console-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  public class HeuristicLabHiveClientConsolePlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.Designer.cs	(revision 4073)
@@ -0,0 +1,1177 @@
+﻿namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class HiveServerManagementConsole {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveServerManagementConsole));
+      this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+      this.informationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.refreshToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.jobToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.groupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.projectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.largeIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.smallIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.listToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.ilLargeImgClient = new System.Windows.Forms.ImageList(this.components);
+      this.ilLargeImgJob = new System.Windows.Forms.ImageList(this.components);
+      this.plClientDetails = new System.Windows.Forms.Panel();
+      this.lblState = new System.Windows.Forms.Label();
+      this.lblStateClient = new System.Windows.Forms.Label();
+      this.lblLogin = new System.Windows.Forms.Label();
+      this.lblLoginOn = new System.Windows.Forms.Label();
+      this.lblClientName = new System.Windows.Forms.Label();
+      this.pbClientControl = new System.Windows.Forms.PictureBox();
+      this.plUserDetails = new System.Windows.Forms.Panel();
+      this.lblUserName = new System.Windows.Forms.Label();
+      this.btnUserControlClose = new System.Windows.Forms.Button();
+      this.pbUserControl = new System.Windows.Forms.PictureBox();
+      this.plJobDetails = new System.Windows.Forms.Panel();
+      this.lvJobDetails = new System.Windows.Forms.ListView();
+      this.chContent = new System.Windows.Forms.ColumnHeader();
+      this.chDetails = new System.Windows.Forms.ColumnHeader();
+      this.lblProgress = new System.Windows.Forms.Label();
+      this.lblStatus = new System.Windows.Forms.Label();
+      this.progressJob = new System.Windows.Forms.ProgressBar();
+      this.lblJobName = new System.Windows.Forms.Label();
+      this.pbJobControl = new System.Windows.Forms.PictureBox();
+      this.treeView2 = new System.Windows.Forms.TreeView();
+      this.listView2 = new System.Windows.Forms.ListView();
+      this.timerSyncronize = new System.Windows.Forms.Timer(this.components);
+      this.fileSystemWatcher1 = new System.IO.FileSystemWatcher();
+      this.updaterWoker = new System.ComponentModel.BackgroundWorker();
+      this.tpJobControl = new System.Windows.Forms.TabPage();
+      this.scJobControl = new System.Windows.Forms.SplitContainer();
+      this.calculatingJobTabControl = new System.Windows.Forms.TabControl();
+      this.calculatingJobTabPage = new System.Windows.Forms.TabPage();
+      this.splitContainer5 = new System.Windows.Forms.SplitContainer();
+      this.cmb_calculatingJob_count = new System.Windows.Forms.ComboBox();
+      this.btn_calculatingJobs_next = new System.Windows.Forms.Button();
+      this.btn_calculatingJobs_prev = new System.Windows.Forms.Button();
+      this.lv_calculatingJobs = new System.Windows.Forms.ListView();
+      this.contextMenuJob = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.offlineItemAbortJob = new System.Windows.Forms.ToolStripMenuItem();
+      this.menuItemGetSnapshot = new System.Windows.Forms.ToolStripMenuItem();
+      this.ilSmallImgJob = new System.Windows.Forms.ImageList(this.components);
+      this.finishedJobsTabPage = new System.Windows.Forms.TabPage();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.cmb_finishedJob_count = new System.Windows.Forms.ComboBox();
+      this.btn_finishedJob_next = new System.Windows.Forms.Button();
+      this.btn_finishedJob_prev = new System.Windows.Forms.Button();
+      this.lv_finishedJobs = new System.Windows.Forms.ListView();
+      this.offlineJobsTabPage = new System.Windows.Forms.TabPage();
+      this.splitContainer4 = new System.Windows.Forms.SplitContainer();
+      this.cmb_offlineJob_count = new System.Windows.Forms.ComboBox();
+      this.btn_offlineJob_next = new System.Windows.Forms.Button();
+      this.btn_offlinejob_prev = new System.Windows.Forms.Button();
+      this.lv_offlineJobs = new System.Windows.Forms.ListView();
+      this.AbortContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.ilSmallImgClient = new System.Windows.Forms.ImageList(this.components);
+      this.tpClientControl = new System.Windows.Forms.TabPage();
+      this.scClientControl = new System.Windows.Forms.SplitContainer();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.btnRefresh = new System.Windows.Forms.Button();
+      this.tvClientControl = new System.Windows.Forms.TreeView();
+      this.contextMenuGroup = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.menuItemAddGroup = new System.Windows.Forms.ToolStripMenuItem();
+      this.menuItemDeleteGroup = new System.Windows.Forms.ToolStripMenuItem();
+      this.menuItemOpenCalendar = new System.Windows.Forms.ToolStripMenuItem();
+      this.lvClientControl = new System.Windows.Forms.ListView();
+      this.tcManagementConsole = new System.Windows.Forms.TabControl();
+      this.checkBox1 = new System.Windows.Forms.CheckBox();
+      this.splitContainer3 = new System.Windows.Forms.SplitContainer();
+      this.comboBox1 = new System.Windows.Forms.ComboBox();
+      this.button1 = new System.Windows.Forms.Button();
+      this.button2 = new System.Windows.Forms.Button();
+      this.listView1 = new System.Windows.Forms.ListView();
+      this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+      this.calcToolStripAbortItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.menuStrip1.SuspendLayout();
+      this.plClientDetails.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbClientControl)).BeginInit();
+      this.plUserDetails.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbUserControl)).BeginInit();
+      this.plJobDetails.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbJobControl)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).BeginInit();
+      this.tpJobControl.SuspendLayout();
+      this.scJobControl.Panel1.SuspendLayout();
+      this.scJobControl.Panel2.SuspendLayout();
+      this.scJobControl.SuspendLayout();
+      this.calculatingJobTabControl.SuspendLayout();
+      this.calculatingJobTabPage.SuspendLayout();
+      this.splitContainer5.Panel1.SuspendLayout();
+      this.splitContainer5.Panel2.SuspendLayout();
+      this.splitContainer5.SuspendLayout();
+      this.contextMenuJob.SuspendLayout();
+      this.finishedJobsTabPage.SuspendLayout();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.offlineJobsTabPage.SuspendLayout();
+      this.splitContainer4.Panel1.SuspendLayout();
+      this.splitContainer4.Panel2.SuspendLayout();
+      this.splitContainer4.SuspendLayout();
+      this.AbortContextMenuStrip.SuspendLayout();
+      this.tpClientControl.SuspendLayout();
+      this.scClientControl.Panel1.SuspendLayout();
+      this.scClientControl.Panel2.SuspendLayout();
+      this.scClientControl.SuspendLayout();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.contextMenuGroup.SuspendLayout();
+      this.tcManagementConsole.SuspendLayout();
+      this.splitContainer3.Panel1.SuspendLayout();
+      this.splitContainer3.Panel2.SuspendLayout();
+      this.splitContainer3.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // menuStrip1
+      // 
+      this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.informationToolStripMenuItem,
+            this.addToolStripMenuItem,
+            this.viewToolStripMenuItem});
+      this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+      this.menuStrip1.Name = "menuStrip1";
+      this.menuStrip1.Size = new System.Drawing.Size(893, 24);
+      this.menuStrip1.TabIndex = 0;
+      this.menuStrip1.Text = "menuStrip1";
+      // 
+      // informationToolStripMenuItem
+      // 
+      this.informationToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.refreshToolStripMenuItem,
+            this.closeToolStripMenuItem});
+      this.informationToolStripMenuItem.Name = "informationToolStripMenuItem";
+      this.informationToolStripMenuItem.Size = new System.Drawing.Size(90, 20);
+      this.informationToolStripMenuItem.Text = "Management";
+      // 
+      // refreshToolStripMenuItem
+      // 
+      this.refreshToolStripMenuItem.Name = "refreshToolStripMenuItem";
+      this.refreshToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
+      this.refreshToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
+      this.refreshToolStripMenuItem.Text = "Refresh";
+      this.refreshToolStripMenuItem.Click += new System.EventHandler(this.Refresh_Click);
+      // 
+      // closeToolStripMenuItem
+      // 
+      this.closeToolStripMenuItem.Name = "closeToolStripMenuItem";
+      this.closeToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
+      this.closeToolStripMenuItem.Text = "Close";
+      this.closeToolStripMenuItem.Click += new System.EventHandler(this.Close_Click);
+      // 
+      // addToolStripMenuItem
+      // 
+      this.addToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.jobToolStripMenuItem,
+            this.groupToolStripMenuItem,
+            this.projectToolStripMenuItem});
+      this.addToolStripMenuItem.Name = "addToolStripMenuItem";
+      this.addToolStripMenuItem.Size = new System.Drawing.Size(41, 20);
+      this.addToolStripMenuItem.Text = "Add";
+      // 
+      // jobToolStripMenuItem
+      // 
+      this.jobToolStripMenuItem.Name = "jobToolStripMenuItem";
+      this.jobToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.J)));
+      this.jobToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+      this.jobToolStripMenuItem.Text = "Job";
+      this.jobToolStripMenuItem.Click += new System.EventHandler(this.AddJob_Click);
+      // 
+      // groupToolStripMenuItem
+      // 
+      this.groupToolStripMenuItem.Name = "groupToolStripMenuItem";
+      this.groupToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.G)));
+      this.groupToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+      this.groupToolStripMenuItem.Text = "Group";
+      this.groupToolStripMenuItem.Click += new System.EventHandler(this.groupToolStripMenuItem_Click);
+      // 
+      // projectToolStripMenuItem
+      // 
+      this.projectToolStripMenuItem.Name = "projectToolStripMenuItem";
+      this.projectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
+      this.projectToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+      this.projectToolStripMenuItem.Text = "Project";
+      this.projectToolStripMenuItem.Click += new System.EventHandler(this.projectToolStripMenuItem_Click);
+      // 
+      // viewToolStripMenuItem
+      // 
+      this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.largeIconsToolStripMenuItem,
+            this.smallIconsToolStripMenuItem,
+            this.listToolStripMenuItem});
+      this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
+      this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
+      this.viewToolStripMenuItem.Text = "View";
+      // 
+      // largeIconsToolStripMenuItem
+      // 
+      this.largeIconsToolStripMenuItem.Checked = true;
+      this.largeIconsToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+      this.largeIconsToolStripMenuItem.Name = "largeIconsToolStripMenuItem";
+      this.largeIconsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D1)));
+      this.largeIconsToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
+      this.largeIconsToolStripMenuItem.Text = "Large Icons";
+      this.largeIconsToolStripMenuItem.Click += new System.EventHandler(this.largeIconsToolStripMenuItem_Click);
+      // 
+      // smallIconsToolStripMenuItem
+      // 
+      this.smallIconsToolStripMenuItem.Name = "smallIconsToolStripMenuItem";
+      this.smallIconsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D2)));
+      this.smallIconsToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
+      this.smallIconsToolStripMenuItem.Text = "Small Icons";
+      this.smallIconsToolStripMenuItem.Click += new System.EventHandler(this.smallIconsToolStripMenuItem_Click);
+      // 
+      // listToolStripMenuItem
+      // 
+      this.listToolStripMenuItem.Name = "listToolStripMenuItem";
+      this.listToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D3)));
+      this.listToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
+      this.listToolStripMenuItem.Text = "List";
+      this.listToolStripMenuItem.Click += new System.EventHandler(this.listToolStripMenuItem_Click);
+      // 
+      // ilLargeImgClient
+      // 
+      this.ilLargeImgClient.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilLargeImgClient.ImageStream")));
+      this.ilLargeImgClient.TransparentColor = System.Drawing.Color.Transparent;
+      this.ilLargeImgClient.Images.SetKeyName(0, "monitor-green.png");
+      this.ilLargeImgClient.Images.SetKeyName(1, "monitor-orange.png");
+      this.ilLargeImgClient.Images.SetKeyName(2, "monitor-red.png");
+      this.ilLargeImgClient.Images.SetKeyName(3, "monitor-gray.png");
+      // 
+      // ilLargeImgJob
+      // 
+      this.ilLargeImgJob.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilLargeImgJob.ImageStream")));
+      this.ilLargeImgJob.TransparentColor = System.Drawing.Color.Transparent;
+      this.ilLargeImgJob.Images.SetKeyName(0, "ok.png");
+      this.ilLargeImgJob.Images.SetKeyName(1, "Forward.png");
+      this.ilLargeImgJob.Images.SetKeyName(2, "pause.png");
+      // 
+      // plClientDetails
+      // 
+      this.plClientDetails.BackColor = System.Drawing.SystemColors.Window;
+      this.plClientDetails.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+      this.plClientDetails.Controls.Add(this.lblState);
+      this.plClientDetails.Controls.Add(this.lblStateClient);
+      this.plClientDetails.Controls.Add(this.lblLogin);
+      this.plClientDetails.Controls.Add(this.lblLoginOn);
+      this.plClientDetails.Controls.Add(this.lblClientName);
+      this.plClientDetails.Controls.Add(this.pbClientControl);
+      this.plClientDetails.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.plClientDetails.Location = new System.Drawing.Point(0, 0);
+      this.plClientDetails.Name = "plClientDetails";
+      this.plClientDetails.Size = new System.Drawing.Size(421, 386);
+      this.plClientDetails.TabIndex = 1;
+      this.plClientDetails.Visible = false;
+      // 
+      // lblState
+      // 
+      this.lblState.AutoSize = true;
+      this.lblState.Location = new System.Drawing.Point(103, 76);
+      this.lblState.Name = "lblState";
+      this.lblState.Size = new System.Drawing.Size(42, 13);
+      this.lblState.TabIndex = 6;
+      this.lblState.Text = "lblState";
+      // 
+      // lblStateClient
+      // 
+      this.lblStateClient.AutoSize = true;
+      this.lblStateClient.Location = new System.Drawing.Point(29, 76);
+      this.lblStateClient.Name = "lblStateClient";
+      this.lblStateClient.Size = new System.Drawing.Size(32, 13);
+      this.lblStateClient.TabIndex = 5;
+      this.lblStateClient.Text = "State";
+      // 
+      // lblLogin
+      // 
+      this.lblLogin.AutoSize = true;
+      this.lblLogin.Location = new System.Drawing.Point(100, 55);
+      this.lblLogin.Name = "lblLogin";
+      this.lblLogin.Size = new System.Drawing.Size(43, 13);
+      this.lblLogin.TabIndex = 4;
+      this.lblLogin.Text = "lblLogin";
+      // 
+      // lblLoginOn
+      // 
+      this.lblLoginOn.AutoSize = true;
+      this.lblLoginOn.Location = new System.Drawing.Point(29, 55);
+      this.lblLoginOn.Name = "lblLoginOn";
+      this.lblLoginOn.Size = new System.Drawing.Size(69, 13);
+      this.lblLoginOn.TabIndex = 3;
+      this.lblLoginOn.Text = "last logged in";
+      // 
+      // lblClientName
+      // 
+      this.lblClientName.AutoSize = true;
+      this.lblClientName.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.lblClientName.Location = new System.Drawing.Point(41, 14);
+      this.lblClientName.Name = "lblClientName";
+      this.lblClientName.Size = new System.Drawing.Size(71, 13);
+      this.lblClientName.TabIndex = 2;
+      this.lblClientName.Text = "lblClientName";
+      // 
+      // pbClientControl
+      // 
+      this.pbClientControl.Location = new System.Drawing.Point(3, 4);
+      this.pbClientControl.Name = "pbClientControl";
+      this.pbClientControl.Size = new System.Drawing.Size(32, 32);
+      this.pbClientControl.TabIndex = 0;
+      this.pbClientControl.TabStop = false;
+      // 
+      // plUserDetails
+      // 
+      this.plUserDetails.BackColor = System.Drawing.SystemColors.Window;
+      this.plUserDetails.Controls.Add(this.lblUserName);
+      this.plUserDetails.Controls.Add(this.btnUserControlClose);
+      this.plUserDetails.Controls.Add(this.pbUserControl);
+      this.plUserDetails.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.plUserDetails.Location = new System.Drawing.Point(0, 0);
+      this.plUserDetails.Name = "plUserDetails";
+      this.plUserDetails.Size = new System.Drawing.Size(494, 346);
+      this.plUserDetails.TabIndex = 2;
+      // 
+      // lblUserName
+      // 
+      this.lblUserName.AutoSize = true;
+      this.lblUserName.Location = new System.Drawing.Point(41, 13);
+      this.lblUserName.Name = "lblUserName";
+      this.lblUserName.Size = new System.Drawing.Size(67, 13);
+      this.lblUserName.TabIndex = 5;
+      this.lblUserName.Text = "lblUserName";
+      // 
+      // btnUserControlClose
+      // 
+      this.btnUserControlClose.Location = new System.Drawing.Point(414, 3);
+      this.btnUserControlClose.Name = "btnUserControlClose";
+      this.btnUserControlClose.Size = new System.Drawing.Size(75, 23);
+      this.btnUserControlClose.TabIndex = 4;
+      this.btnUserControlClose.Text = "Close";
+      this.btnUserControlClose.UseVisualStyleBackColor = true;
+      // 
+      // pbUserControl
+      // 
+      this.pbUserControl.Location = new System.Drawing.Point(3, 3);
+      this.pbUserControl.Name = "pbUserControl";
+      this.pbUserControl.Size = new System.Drawing.Size(32, 32);
+      this.pbUserControl.TabIndex = 3;
+      this.pbUserControl.TabStop = false;
+      // 
+      // plJobDetails
+      // 
+      this.plJobDetails.BackColor = System.Drawing.SystemColors.Window;
+      this.plJobDetails.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+      this.plJobDetails.Controls.Add(this.lvJobDetails);
+      this.plJobDetails.Controls.Add(this.lblProgress);
+      this.plJobDetails.Controls.Add(this.lblStatus);
+      this.plJobDetails.Controls.Add(this.progressJob);
+      this.plJobDetails.Controls.Add(this.lblJobName);
+      this.plJobDetails.Controls.Add(this.pbJobControl);
+      this.plJobDetails.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.plJobDetails.Location = new System.Drawing.Point(0, 0);
+      this.plJobDetails.Name = "plJobDetails";
+      this.plJobDetails.Size = new System.Drawing.Size(421, 386);
+      this.plJobDetails.TabIndex = 1;
+      this.plJobDetails.Visible = false;
+      // 
+      // lvJobDetails
+      // 
+      this.lvJobDetails.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.chContent,
+            this.chDetails});
+      this.lvJobDetails.FullRowSelect = true;
+      this.lvJobDetails.GridLines = true;
+      this.lvJobDetails.Location = new System.Drawing.Point(17, 124);
+      this.lvJobDetails.Name = "lvJobDetails";
+      this.lvJobDetails.Size = new System.Drawing.Size(382, 243);
+      this.lvJobDetails.TabIndex = 17;
+      this.lvJobDetails.UseCompatibleStateImageBehavior = false;
+      this.lvJobDetails.View = System.Windows.Forms.View.Details;
+      // 
+      // chContent
+      // 
+      this.chContent.Text = "Content";
+      this.chContent.Width = 121;
+      // 
+      // chDetails
+      // 
+      this.chDetails.Text = "Details";
+      this.chDetails.Width = 255;
+      // 
+      // lblProgress
+      // 
+      this.lblProgress.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.lblProgress.BackColor = System.Drawing.Color.Transparent;
+      this.lblProgress.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.lblProgress.Location = new System.Drawing.Point(252, 108);
+      this.lblProgress.Name = "lblProgress";
+      this.lblProgress.Size = new System.Drawing.Size(143, 13);
+      this.lblProgress.TabIndex = 8;
+      this.lblProgress.Text = "lblProgress";
+      this.lblProgress.TextAlign = System.Drawing.ContentAlignment.TopRight;
+      // 
+      // lblStatus
+      // 
+      this.lblStatus.AutoSize = true;
+      this.lblStatus.BackColor = System.Drawing.Color.Transparent;
+      this.lblStatus.Location = new System.Drawing.Point(14, 55);
+      this.lblStatus.Name = "lblStatus";
+      this.lblStatus.Size = new System.Drawing.Size(88, 13);
+      this.lblStatus.TabIndex = 7;
+      this.lblStatus.Text = "Statusinformation";
+      // 
+      // progressJob
+      // 
+      this.progressJob.Location = new System.Drawing.Point(17, 73);
+      this.progressJob.Name = "progressJob";
+      this.progressJob.Size = new System.Drawing.Size(382, 23);
+      this.progressJob.TabIndex = 6;
+      // 
+      // lblJobName
+      // 
+      this.lblJobName.AutoSize = true;
+      this.lblJobName.Location = new System.Drawing.Point(41, 13);
+      this.lblJobName.Name = "lblJobName";
+      this.lblJobName.Size = new System.Drawing.Size(62, 13);
+      this.lblJobName.TabIndex = 5;
+      this.lblJobName.Text = "lblJobName";
+      // 
+      // pbJobControl
+      // 
+      this.pbJobControl.Location = new System.Drawing.Point(3, 3);
+      this.pbJobControl.Name = "pbJobControl";
+      this.pbJobControl.Size = new System.Drawing.Size(32, 32);
+      this.pbJobControl.TabIndex = 3;
+      this.pbJobControl.TabStop = false;
+      // 
+      // treeView2
+      // 
+      this.treeView2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.treeView2.LineColor = System.Drawing.Color.Empty;
+      this.treeView2.Location = new System.Drawing.Point(0, 0);
+      this.treeView2.Name = "treeView2";
+      this.treeView2.Size = new System.Drawing.Size(139, 346);
+      this.treeView2.TabIndex = 0;
+      // 
+      // listView2
+      // 
+      this.listView2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.listView2.Location = new System.Drawing.Point(0, 0);
+      this.listView2.Name = "listView2";
+      this.listView2.Size = new System.Drawing.Size(494, 346);
+      this.listView2.TabIndex = 0;
+      this.listView2.UseCompatibleStateImageBehavior = false;
+      // 
+      // timerSyncronize
+      // 
+      this.timerSyncronize.Interval = 10000;
+      this.timerSyncronize.Tick += new System.EventHandler(this.TickSync);
+      // 
+      // fileSystemWatcher1
+      // 
+      this.fileSystemWatcher1.EnableRaisingEvents = true;
+      this.fileSystemWatcher1.SynchronizingObject = this;
+      // 
+      // updaterWoker
+      // 
+      this.updaterWoker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.updaterWoker_DoWork);
+      this.updaterWoker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.updaterWoker_RunWorkerCompleted);
+      // 
+      // tpJobControl
+      // 
+      this.tpJobControl.Controls.Add(this.scJobControl);
+      this.tpJobControl.Location = new System.Drawing.Point(4, 22);
+      this.tpJobControl.Name = "tpJobControl";
+      this.tpJobControl.Padding = new System.Windows.Forms.Padding(3);
+      this.tpJobControl.Size = new System.Drawing.Size(885, 392);
+      this.tpJobControl.TabIndex = 1;
+      this.tpJobControl.Text = "Job Control";
+      this.tpJobControl.UseVisualStyleBackColor = true;
+      // 
+      // scJobControl
+      // 
+      this.scJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scJobControl.Location = new System.Drawing.Point(3, 3);
+      this.scJobControl.Name = "scJobControl";
+      // 
+      // scJobControl.Panel1
+      // 
+      this.scJobControl.Panel1.Controls.Add(this.calculatingJobTabControl);
+      // 
+      // scJobControl.Panel2
+      // 
+      this.scJobControl.Panel2.Controls.Add(this.plJobDetails);
+      this.scJobControl.Size = new System.Drawing.Size(879, 386);
+      this.scJobControl.SplitterDistance = 454;
+      this.scJobControl.TabIndex = 0;
+      // 
+      // calculatingJobTabControl
+      // 
+      this.calculatingJobTabControl.Controls.Add(this.calculatingJobTabPage);
+      this.calculatingJobTabControl.Controls.Add(this.finishedJobsTabPage);
+      this.calculatingJobTabControl.Controls.Add(this.offlineJobsTabPage);
+      this.calculatingJobTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.calculatingJobTabControl.Location = new System.Drawing.Point(0, 0);
+      this.calculatingJobTabControl.Name = "calculatingJobTabControl";
+      this.calculatingJobTabControl.SelectedIndex = 0;
+      this.calculatingJobTabControl.Size = new System.Drawing.Size(454, 386);
+      this.calculatingJobTabControl.TabIndex = 0;
+      // 
+      // calculatingJobTabPage
+      // 
+      this.calculatingJobTabPage.Controls.Add(this.splitContainer5);
+      this.calculatingJobTabPage.Location = new System.Drawing.Point(4, 22);
+      this.calculatingJobTabPage.Name = "calculatingJobTabPage";
+      this.calculatingJobTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.calculatingJobTabPage.Size = new System.Drawing.Size(446, 360);
+      this.calculatingJobTabPage.TabIndex = 2;
+      this.calculatingJobTabPage.Text = "Calculating Jobs";
+      this.calculatingJobTabPage.UseVisualStyleBackColor = true;
+      // 
+      // splitContainer5
+      // 
+      this.splitContainer5.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer5.Location = new System.Drawing.Point(3, 3);
+      this.splitContainer5.Name = "splitContainer5";
+      this.splitContainer5.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer5.Panel1
+      // 
+      this.splitContainer5.Panel1.Controls.Add(this.cmb_calculatingJob_count);
+      this.splitContainer5.Panel1.Controls.Add(this.btn_calculatingJobs_next);
+      this.splitContainer5.Panel1.Controls.Add(this.btn_calculatingJobs_prev);
+      // 
+      // splitContainer5.Panel2
+      // 
+      this.splitContainer5.Panel2.Controls.Add(this.lv_calculatingJobs);
+      this.splitContainer5.Size = new System.Drawing.Size(440, 354);
+      this.splitContainer5.SplitterDistance = 28;
+      this.splitContainer5.TabIndex = 3;
+      // 
+      // cmb_calculatingJob_count
+      // 
+      this.cmb_calculatingJob_count.FormattingEnabled = true;
+      this.cmb_calculatingJob_count.Items.AddRange(new object[] {
+            "25",
+            "50",
+            "75",
+            "100"});
+      this.cmb_calculatingJob_count.Location = new System.Drawing.Point(165, 3);
+      this.cmb_calculatingJob_count.Name = "cmb_calculatingJob_count";
+      this.cmb_calculatingJob_count.Size = new System.Drawing.Size(48, 21);
+      this.cmb_calculatingJob_count.TabIndex = 2;
+      this.cmb_calculatingJob_count.SelectedIndexChanged += new System.EventHandler(this.cmb_count_SelectedIndexChanged);
+      // 
+      // btn_calculatingJobs_next
+      // 
+      this.btn_calculatingJobs_next.Location = new System.Drawing.Point(84, 3);
+      this.btn_calculatingJobs_next.Name = "btn_calculatingJobs_next";
+      this.btn_calculatingJobs_next.Size = new System.Drawing.Size(75, 23);
+      this.btn_calculatingJobs_next.TabIndex = 1;
+      this.btn_calculatingJobs_next.Text = "-->";
+      this.btn_calculatingJobs_next.UseVisualStyleBackColor = true;
+      this.btn_calculatingJobs_next.Click += new System.EventHandler(this.btn_next_Click);
+      // 
+      // btn_calculatingJobs_prev
+      // 
+      this.btn_calculatingJobs_prev.Location = new System.Drawing.Point(3, 3);
+      this.btn_calculatingJobs_prev.Name = "btn_calculatingJobs_prev";
+      this.btn_calculatingJobs_prev.Size = new System.Drawing.Size(75, 23);
+      this.btn_calculatingJobs_prev.TabIndex = 0;
+      this.btn_calculatingJobs_prev.Text = "<--";
+      this.btn_calculatingJobs_prev.UseVisualStyleBackColor = true;
+      this.btn_calculatingJobs_prev.Click += new System.EventHandler(this.btn_prev_Click);
+      // 
+      // lv_calculatingJobs
+      // 
+      this.lv_calculatingJobs.ContextMenuStrip = this.contextMenuJob;
+      this.lv_calculatingJobs.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lv_calculatingJobs.LargeImageList = this.ilLargeImgJob;
+      this.lv_calculatingJobs.Location = new System.Drawing.Point(0, 0);
+      this.lv_calculatingJobs.Name = "lv_calculatingJobs";
+      this.lv_calculatingJobs.Size = new System.Drawing.Size(440, 322);
+      this.lv_calculatingJobs.SmallImageList = this.ilSmallImgJob;
+      this.lv_calculatingJobs.TabIndex = 0;
+      this.lv_calculatingJobs.UseCompatibleStateImageBehavior = false;
+      this.lv_calculatingJobs.SelectedIndexChanged += new System.EventHandler(this.lv_Jobs_SelectedIndexChanged);
+      // 
+      // contextMenuJob
+      // 
+      this.contextMenuJob.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.menuItemGetSnapshot,
+            this.calcToolStripAbortItem});
+      this.contextMenuJob.Name = "contextMenuJob";
+      this.contextMenuJob.Size = new System.Drawing.Size(145, 48);
+      // 
+      // offlineItemAbortJob
+      // 
+      this.offlineItemAbortJob.Name = "offlineItemAbortJob";
+      this.offlineItemAbortJob.Size = new System.Drawing.Size(152, 22);
+      this.offlineItemAbortJob.Text = "Abort";
+      // 
+      // menuItemGetSnapshot
+      // 
+      this.menuItemGetSnapshot.Name = "menuItemGetSnapshot";
+      this.menuItemGetSnapshot.Size = new System.Drawing.Size(144, 22);
+      this.menuItemGetSnapshot.Text = "Get Snapshot";
+      // 
+      // ilSmallImgJob
+      // 
+      this.ilSmallImgJob.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilSmallImgJob.ImageStream")));
+      this.ilSmallImgJob.TransparentColor = System.Drawing.Color.Transparent;
+      this.ilSmallImgJob.Images.SetKeyName(0, "ok.png");
+      this.ilSmallImgJob.Images.SetKeyName(1, "Forward.png");
+      this.ilSmallImgJob.Images.SetKeyName(2, "pause.png");
+      // 
+      // finishedJobsTabPage
+      // 
+      this.finishedJobsTabPage.Controls.Add(this.splitContainer2);
+      this.finishedJobsTabPage.Location = new System.Drawing.Point(4, 22);
+      this.finishedJobsTabPage.Name = "finishedJobsTabPage";
+      this.finishedJobsTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.finishedJobsTabPage.Size = new System.Drawing.Size(446, 360);
+      this.finishedJobsTabPage.TabIndex = 0;
+      this.finishedJobsTabPage.Text = "Finished Jobs";
+      this.finishedJobsTabPage.UseVisualStyleBackColor = true;
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer2.Location = new System.Drawing.Point(3, 3);
+      this.splitContainer2.Name = "splitContainer2";
+      this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.cmb_finishedJob_count);
+      this.splitContainer2.Panel1.Controls.Add(this.btn_finishedJob_next);
+      this.splitContainer2.Panel1.Controls.Add(this.btn_finishedJob_prev);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.lv_finishedJobs);
+      this.splitContainer2.Size = new System.Drawing.Size(440, 354);
+      this.splitContainer2.SplitterDistance = 28;
+      this.splitContainer2.TabIndex = 2;
+      // 
+      // cmb_finishedJob_count
+      // 
+      this.cmb_finishedJob_count.FormattingEnabled = true;
+      this.cmb_finishedJob_count.Items.AddRange(new object[] {
+            "25",
+            "50",
+            "75",
+            "100"});
+      this.cmb_finishedJob_count.Location = new System.Drawing.Point(165, 3);
+      this.cmb_finishedJob_count.Name = "cmb_finishedJob_count";
+      this.cmb_finishedJob_count.Size = new System.Drawing.Size(48, 21);
+      this.cmb_finishedJob_count.TabIndex = 2;
+      this.cmb_finishedJob_count.SelectedIndexChanged += new System.EventHandler(this.cmb_count_SelectedIndexChanged);
+      // 
+      // btn_finishedJob_next
+      // 
+      this.btn_finishedJob_next.Location = new System.Drawing.Point(84, 3);
+      this.btn_finishedJob_next.Name = "btn_finishedJob_next";
+      this.btn_finishedJob_next.Size = new System.Drawing.Size(75, 23);
+      this.btn_finishedJob_next.TabIndex = 1;
+      this.btn_finishedJob_next.Text = "-->";
+      this.btn_finishedJob_next.UseVisualStyleBackColor = true;
+      this.btn_finishedJob_next.Click += new System.EventHandler(this.btn_next_Click);
+      // 
+      // btn_finishedJob_prev
+      // 
+      this.btn_finishedJob_prev.Location = new System.Drawing.Point(3, 3);
+      this.btn_finishedJob_prev.Name = "btn_finishedJob_prev";
+      this.btn_finishedJob_prev.Size = new System.Drawing.Size(75, 23);
+      this.btn_finishedJob_prev.TabIndex = 0;
+      this.btn_finishedJob_prev.Text = "<--";
+      this.btn_finishedJob_prev.UseVisualStyleBackColor = true;
+      this.btn_finishedJob_prev.Click += new System.EventHandler(this.btn_prev_Click);
+      // 
+      // lv_finishedJobs
+      // 
+      this.lv_finishedJobs.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lv_finishedJobs.LargeImageList = this.ilLargeImgJob;
+      this.lv_finishedJobs.Location = new System.Drawing.Point(0, 0);
+      this.lv_finishedJobs.Name = "lv_finishedJobs";
+      this.lv_finishedJobs.Size = new System.Drawing.Size(440, 322);
+      this.lv_finishedJobs.SmallImageList = this.ilSmallImgJob;
+      this.lv_finishedJobs.TabIndex = 0;
+      this.lv_finishedJobs.UseCompatibleStateImageBehavior = false;
+      this.lv_finishedJobs.SelectedIndexChanged += new System.EventHandler(this.lv_Jobs_SelectedIndexChanged);
+      // 
+      // offlineJobsTabPage
+      // 
+      this.offlineJobsTabPage.Controls.Add(this.splitContainer4);
+      this.offlineJobsTabPage.Location = new System.Drawing.Point(4, 22);
+      this.offlineJobsTabPage.Name = "offlineJobsTabPage";
+      this.offlineJobsTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.offlineJobsTabPage.Size = new System.Drawing.Size(446, 360);
+      this.offlineJobsTabPage.TabIndex = 1;
+      this.offlineJobsTabPage.Text = "Offline Jobs";
+      this.offlineJobsTabPage.UseVisualStyleBackColor = true;
+      // 
+      // splitContainer4
+      // 
+      this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer4.Location = new System.Drawing.Point(3, 3);
+      this.splitContainer4.Name = "splitContainer4";
+      this.splitContainer4.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer4.Panel1
+      // 
+      this.splitContainer4.Panel1.Controls.Add(this.cmb_offlineJob_count);
+      this.splitContainer4.Panel1.Controls.Add(this.btn_offlineJob_next);
+      this.splitContainer4.Panel1.Controls.Add(this.btn_offlinejob_prev);
+      // 
+      // splitContainer4.Panel2
+      // 
+      this.splitContainer4.Panel2.Controls.Add(this.lv_offlineJobs);
+      this.splitContainer4.Size = new System.Drawing.Size(440, 354);
+      this.splitContainer4.SplitterDistance = 28;
+      this.splitContainer4.TabIndex = 3;
+      // 
+      // cmb_offlineJob_count
+      // 
+      this.cmb_offlineJob_count.FormattingEnabled = true;
+      this.cmb_offlineJob_count.Items.AddRange(new object[] {
+            "25",
+            "50",
+            "75",
+            "100"});
+      this.cmb_offlineJob_count.Location = new System.Drawing.Point(165, 3);
+      this.cmb_offlineJob_count.Name = "cmb_offlineJob_count";
+      this.cmb_offlineJob_count.Size = new System.Drawing.Size(48, 21);
+      this.cmb_offlineJob_count.TabIndex = 2;
+      this.cmb_offlineJob_count.SelectedIndexChanged += new System.EventHandler(this.cmb_count_SelectedIndexChanged);
+      // 
+      // btn_offlineJob_next
+      // 
+      this.btn_offlineJob_next.Location = new System.Drawing.Point(84, 3);
+      this.btn_offlineJob_next.Name = "btn_offlineJob_next";
+      this.btn_offlineJob_next.Size = new System.Drawing.Size(75, 23);
+      this.btn_offlineJob_next.TabIndex = 1;
+      this.btn_offlineJob_next.Text = "-->";
+      this.btn_offlineJob_next.UseVisualStyleBackColor = true;
+      this.btn_offlineJob_next.Click += new System.EventHandler(this.btn_next_Click);
+      // 
+      // btn_offlinejob_prev
+      // 
+      this.btn_offlinejob_prev.Location = new System.Drawing.Point(3, 3);
+      this.btn_offlinejob_prev.Name = "btn_offlinejob_prev";
+      this.btn_offlinejob_prev.Size = new System.Drawing.Size(75, 23);
+      this.btn_offlinejob_prev.TabIndex = 0;
+      this.btn_offlinejob_prev.Text = "<--";
+      this.btn_offlinejob_prev.UseVisualStyleBackColor = true;
+      this.btn_offlinejob_prev.Click += new System.EventHandler(this.btn_prev_Click);
+      // 
+      // lv_offlineJobs
+      // 
+      this.lv_offlineJobs.ContextMenuStrip = this.AbortContextMenuStrip;
+      this.lv_offlineJobs.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lv_offlineJobs.LargeImageList = this.ilLargeImgJob;
+      this.lv_offlineJobs.Location = new System.Drawing.Point(0, 0);
+      this.lv_offlineJobs.Name = "lv_offlineJobs";
+      this.lv_offlineJobs.Size = new System.Drawing.Size(440, 322);
+      this.lv_offlineJobs.SmallImageList = this.ilSmallImgJob;
+      this.lv_offlineJobs.TabIndex = 0;
+      this.lv_offlineJobs.UseCompatibleStateImageBehavior = false;
+      this.lv_offlineJobs.SelectedIndexChanged += new System.EventHandler(this.lv_Jobs_SelectedIndexChanged);
+      // 
+      // AbortContextMenuStrip
+      // 
+      this.AbortContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.offlineItemAbortJob});
+      this.AbortContextMenuStrip.Name = "AbortContextMenuStrip";
+      this.AbortContextMenuStrip.Size = new System.Drawing.Size(105, 26);
+      // 
+      // ilSmallImgClient
+      // 
+      this.ilSmallImgClient.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilSmallImgClient.ImageStream")));
+      this.ilSmallImgClient.TransparentColor = System.Drawing.Color.Transparent;
+      this.ilSmallImgClient.Images.SetKeyName(0, "monitor-green.png");
+      this.ilSmallImgClient.Images.SetKeyName(1, "monitor-orange.png");
+      this.ilSmallImgClient.Images.SetKeyName(2, "monitor-red.png");
+      this.ilSmallImgClient.Images.SetKeyName(3, "monitor-gray.png");
+      // 
+      // tpClientControl
+      // 
+      this.tpClientControl.AllowDrop = true;
+      this.tpClientControl.Controls.Add(this.scClientControl);
+      this.tpClientControl.Location = new System.Drawing.Point(4, 22);
+      this.tpClientControl.Name = "tpClientControl";
+      this.tpClientControl.Padding = new System.Windows.Forms.Padding(3);
+      this.tpClientControl.Size = new System.Drawing.Size(885, 392);
+      this.tpClientControl.TabIndex = 0;
+      this.tpClientControl.Text = "Client Control";
+      this.tpClientControl.UseVisualStyleBackColor = true;
+      // 
+      // scClientControl
+      // 
+      this.scClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scClientControl.Location = new System.Drawing.Point(3, 3);
+      this.scClientControl.Name = "scClientControl";
+      // 
+      // scClientControl.Panel1
+      // 
+      this.scClientControl.Panel1.Controls.Add(this.splitContainer1);
+      // 
+      // scClientControl.Panel2
+      // 
+      this.scClientControl.Panel2.Controls.Add(this.plClientDetails);
+      this.scClientControl.Size = new System.Drawing.Size(879, 386);
+      this.scClientControl.SplitterDistance = 454;
+      this.scClientControl.TabIndex = 0;
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer1.Name = "splitContainer1";
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.btnRefresh);
+      this.splitContainer1.Panel1.Controls.Add(this.tvClientControl);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.lvClientControl);
+      this.splitContainer1.Size = new System.Drawing.Size(454, 386);
+      this.splitContainer1.SplitterDistance = 151;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // btnRefresh
+      // 
+      this.btnRefresh.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.btnRefresh.Image = ((System.Drawing.Image)(resources.GetObject("btnRefresh.Image")));
+      this.btnRefresh.Location = new System.Drawing.Point(0, 357);
+      this.btnRefresh.Name = "btnRefresh";
+      this.btnRefresh.Size = new System.Drawing.Size(151, 29);
+      this.btnRefresh.TabIndex = 1;
+      this.btnRefresh.UseVisualStyleBackColor = true;
+      this.btnRefresh.Click += new System.EventHandler(this.Refresh_Click);
+      // 
+      // tvClientControl
+      // 
+      this.tvClientControl.AllowDrop = true;
+      this.tvClientControl.ContextMenuStrip = this.contextMenuGroup;
+      this.tvClientControl.Dock = System.Windows.Forms.DockStyle.Top;
+      this.tvClientControl.Location = new System.Drawing.Point(0, 0);
+      this.tvClientControl.Name = "tvClientControl";
+      this.tvClientControl.Size = new System.Drawing.Size(151, 357);
+      this.tvClientControl.TabIndex = 0;
+      this.tvClientControl.DragLeave += new System.EventHandler(this.tvClientControl_DragLeave);
+      this.tvClientControl.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tvClientControl_MouseUp);
+      this.tvClientControl.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvClientControl_NodeMouseClick);
+      // 
+      // contextMenuGroup
+      // 
+      this.contextMenuGroup.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.menuItemAddGroup,
+            this.menuItemDeleteGroup,
+            this.menuItemOpenCalendar});
+      this.contextMenuGroup.Name = "contextMenuJob";
+      this.contextMenuGroup.Size = new System.Drawing.Size(154, 70);
+      // 
+      // menuItemAddGroup
+      // 
+      this.menuItemAddGroup.Name = "menuItemAddGroup";
+      this.menuItemAddGroup.Size = new System.Drawing.Size(153, 22);
+      this.menuItemAddGroup.Text = "Add Group";
+      // 
+      // menuItemDeleteGroup
+      // 
+      this.menuItemDeleteGroup.Name = "menuItemDeleteGroup";
+      this.menuItemDeleteGroup.Size = new System.Drawing.Size(153, 22);
+      this.menuItemDeleteGroup.Text = "Delete Group";
+      // 
+      // menuItemOpenCalendar
+      // 
+      this.menuItemOpenCalendar.Name = "menuItemOpenCalendar";
+      this.menuItemOpenCalendar.Size = new System.Drawing.Size(153, 22);
+      this.menuItemOpenCalendar.Text = "Open Calendar";
+      // 
+      // lvClientControl
+      // 
+      this.lvClientControl.AllowDrop = true;
+      this.lvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lvClientControl.ImeMode = System.Windows.Forms.ImeMode.Off;
+      this.lvClientControl.LargeImageList = this.ilLargeImgClient;
+      this.lvClientControl.Location = new System.Drawing.Point(0, 0);
+      this.lvClientControl.Name = "lvClientControl";
+      this.lvClientControl.Size = new System.Drawing.Size(299, 386);
+      this.lvClientControl.SmallImageList = this.ilSmallImgClient;
+      this.lvClientControl.TabIndex = 0;
+      this.lvClientControl.UseCompatibleStateImageBehavior = false;
+      this.lvClientControl.Click += new System.EventHandler(this.OnLVClientClicked);
+      // 
+      // tcManagementConsole
+      // 
+      this.tcManagementConsole.Controls.Add(this.tpClientControl);
+      this.tcManagementConsole.Controls.Add(this.tpJobControl);
+      this.tcManagementConsole.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tcManagementConsole.Location = new System.Drawing.Point(0, 24);
+      this.tcManagementConsole.Name = "tcManagementConsole";
+      this.tcManagementConsole.SelectedIndex = 0;
+      this.tcManagementConsole.Size = new System.Drawing.Size(893, 418);
+      this.tcManagementConsole.TabIndex = 1;
+      // 
+      // checkBox1
+      // 
+      this.checkBox1.AutoSize = true;
+      this.checkBox1.Location = new System.Drawing.Point(149, 114);
+      this.checkBox1.Name = "checkBox1";
+      this.checkBox1.Size = new System.Drawing.Size(80, 17);
+      this.checkBox1.TabIndex = 0;
+      this.checkBox1.Text = "checkBox1";
+      this.checkBox1.UseVisualStyleBackColor = true;
+      // 
+      // splitContainer3
+      // 
+      this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer3.Location = new System.Drawing.Point(3, 3);
+      this.splitContainer3.Name = "splitContainer3";
+      this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer3.Panel1
+      // 
+      this.splitContainer3.Panel1.Controls.Add(this.comboBox1);
+      this.splitContainer3.Panel1.Controls.Add(this.button1);
+      this.splitContainer3.Panel1.Controls.Add(this.button2);
+      // 
+      // splitContainer3.Panel2
+      // 
+      this.splitContainer3.Panel2.Controls.Add(this.listView1);
+      this.splitContainer3.Size = new System.Drawing.Size(440, 354);
+      this.splitContainer3.SplitterDistance = 28;
+      this.splitContainer3.TabIndex = 2;
+      // 
+      // comboBox1
+      // 
+      this.comboBox1.FormattingEnabled = true;
+      this.comboBox1.Items.AddRange(new object[] {
+            "25",
+            "50",
+            "75",
+            "100"});
+      this.comboBox1.Location = new System.Drawing.Point(165, 3);
+      this.comboBox1.Name = "comboBox1";
+      this.comboBox1.Size = new System.Drawing.Size(48, 21);
+      this.comboBox1.TabIndex = 2;
+      // 
+      // button1
+      // 
+      this.button1.Location = new System.Drawing.Point(84, 3);
+      this.button1.Name = "button1";
+      this.button1.Size = new System.Drawing.Size(75, 23);
+      this.button1.TabIndex = 1;
+      this.button1.Text = "-->";
+      this.button1.UseVisualStyleBackColor = true;
+      // 
+      // button2
+      // 
+      this.button2.Location = new System.Drawing.Point(3, 3);
+      this.button2.Name = "button2";
+      this.button2.Size = new System.Drawing.Size(75, 23);
+      this.button2.TabIndex = 0;
+      this.button2.Text = "<--";
+      this.button2.UseVisualStyleBackColor = true;
+      // 
+      // listView1
+      // 
+      this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.listView1.LargeImageList = this.ilLargeImgJob;
+      this.listView1.Location = new System.Drawing.Point(0, 0);
+      this.listView1.Name = "listView1";
+      this.listView1.Size = new System.Drawing.Size(440, 322);
+      this.listView1.SmallImageList = this.ilSmallImgJob;
+      this.listView1.TabIndex = 0;
+      this.listView1.UseCompatibleStateImageBehavior = false;
+      // 
+      // toolStripMenuItem1
+      // 
+      this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+      this.toolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
+      this.toolStripMenuItem1.Text = "Abort";
+      // 
+      // calcToolStripAbortItem
+      // 
+      this.calcToolStripAbortItem.Name = "calcToolStripAbortItem";
+      this.calcToolStripAbortItem.Size = new System.Drawing.Size(144, 22);
+      this.calcToolStripAbortItem.Text = "Abort";
+      // 
+      // HiveServerManagementConsole
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(893, 442);
+      this.Controls.Add(this.tcManagementConsole);
+      this.Controls.Add(this.menuStrip1);
+      this.MainMenuStrip = this.menuStrip1;
+      this.Name = "HiveServerManagementConsole";
+      this.Text = "Management Console";
+      this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.HiveServerConsoleInformation_FormClosing);
+      this.menuStrip1.ResumeLayout(false);
+      this.menuStrip1.PerformLayout();
+      this.plClientDetails.ResumeLayout(false);
+      this.plClientDetails.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbClientControl)).EndInit();
+      this.plUserDetails.ResumeLayout(false);
+      this.plUserDetails.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbUserControl)).EndInit();
+      this.plJobDetails.ResumeLayout(false);
+      this.plJobDetails.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pbJobControl)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).EndInit();
+      this.tpJobControl.ResumeLayout(false);
+      this.scJobControl.Panel1.ResumeLayout(false);
+      this.scJobControl.Panel2.ResumeLayout(false);
+      this.scJobControl.ResumeLayout(false);
+      this.calculatingJobTabControl.ResumeLayout(false);
+      this.calculatingJobTabPage.ResumeLayout(false);
+      this.splitContainer5.Panel1.ResumeLayout(false);
+      this.splitContainer5.Panel2.ResumeLayout(false);
+      this.splitContainer5.ResumeLayout(false);
+      this.contextMenuJob.ResumeLayout(false);
+      this.finishedJobsTabPage.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.ResumeLayout(false);
+      this.offlineJobsTabPage.ResumeLayout(false);
+      this.splitContainer4.Panel1.ResumeLayout(false);
+      this.splitContainer4.Panel2.ResumeLayout(false);
+      this.splitContainer4.ResumeLayout(false);
+      this.AbortContextMenuStrip.ResumeLayout(false);
+      this.tpClientControl.ResumeLayout(false);
+      this.scClientControl.Panel1.ResumeLayout(false);
+      this.scClientControl.Panel2.ResumeLayout(false);
+      this.scClientControl.ResumeLayout(false);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.contextMenuGroup.ResumeLayout(false);
+      this.tcManagementConsole.ResumeLayout(false);
+      this.splitContainer3.Panel1.ResumeLayout(false);
+      this.splitContainer3.Panel2.ResumeLayout(false);
+      this.splitContainer3.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.MenuStrip menuStrip1;
+    private System.Windows.Forms.ToolStripMenuItem informationToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem closeToolStripMenuItem;
+    private System.Windows.Forms.TreeView treeView2;
+    private System.Windows.Forms.ListView listView2;
+    private System.Windows.Forms.ImageList ilLargeImgClient;
+    private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem jobToolStripMenuItem;
+    private System.Windows.Forms.Timer timerSyncronize;
+    private System.Windows.Forms.ImageList ilLargeImgJob;
+    private System.Windows.Forms.Panel plClientDetails;
+    private System.Windows.Forms.PictureBox pbClientControl;
+    private System.Windows.Forms.Label lblClientName;
+    private System.Windows.Forms.Label lblLoginOn;
+    private System.Windows.Forms.Label lblLogin;
+    private System.Windows.Forms.Panel plJobDetails;
+    private System.Windows.Forms.Label lblJobName;
+    private System.Windows.Forms.PictureBox pbJobControl;
+    private System.Windows.Forms.Panel plUserDetails;
+    private System.Windows.Forms.Label lblUserName;
+    private System.Windows.Forms.Button btnUserControlClose;
+    private System.Windows.Forms.PictureBox pbUserControl;
+    private System.Windows.Forms.ProgressBar progressJob;
+    private System.IO.FileSystemWatcher fileSystemWatcher1;
+    private System.Windows.Forms.Label lblStatus;
+    private System.Windows.Forms.Label lblProgress;
+    private System.Windows.Forms.Label lblStateClient;
+    private System.Windows.Forms.Label lblState;
+    private System.ComponentModel.BackgroundWorker updaterWoker;
+    private System.Windows.Forms.TabControl tcManagementConsole;
+    private System.Windows.Forms.TabPage tpClientControl;
+    private System.Windows.Forms.SplitContainer scClientControl;
+    private System.Windows.Forms.ListView lvClientControl;
+    private System.Windows.Forms.TabPage tpJobControl;
+    private System.Windows.Forms.SplitContainer scJobControl;
+    private System.Windows.Forms.CheckBox checkBox1;
+    private System.Windows.Forms.ContextMenuStrip contextMenuJob;
+    private System.Windows.Forms.ToolStripMenuItem offlineItemAbortJob;
+    private System.Windows.Forms.ToolStripMenuItem menuItemGetSnapshot;
+    private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem largeIconsToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem smallIconsToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem listToolStripMenuItem;
+    private System.Windows.Forms.ImageList ilSmallImgClient;
+    private System.Windows.Forms.ImageList ilSmallImgJob;
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.ToolStripMenuItem refreshToolStripMenuItem;
+    private System.Windows.Forms.ListView lvJobDetails;
+    private System.Windows.Forms.ColumnHeader chContent;
+    private System.Windows.Forms.ColumnHeader chDetails;
+    private System.Windows.Forms.Button btnRefresh;
+    private System.Windows.Forms.TreeView tvClientControl;
+    private System.Windows.Forms.ContextMenuStrip contextMenuGroup;
+    private System.Windows.Forms.ToolStripMenuItem menuItemAddGroup;
+    private System.Windows.Forms.ToolStripMenuItem menuItemDeleteGroup;
+    private System.Windows.Forms.ToolStripMenuItem groupToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem projectToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem menuItemOpenCalendar;
+    private System.Windows.Forms.TabControl calculatingJobTabControl;
+    private System.Windows.Forms.TabPage finishedJobsTabPage;
+    private System.Windows.Forms.TabPage offlineJobsTabPage;
+    private System.Windows.Forms.TabPage calculatingJobTabPage;
+    private System.Windows.Forms.SplitContainer splitContainer2;
+    private System.Windows.Forms.Button btn_finishedJob_next;
+    private System.Windows.Forms.Button btn_finishedJob_prev;
+    private System.Windows.Forms.ComboBox cmb_finishedJob_count;
+    private System.Windows.Forms.ListView lv_finishedJobs;
+    private System.Windows.Forms.SplitContainer splitContainer3;
+    private System.Windows.Forms.ComboBox comboBox1;
+    private System.Windows.Forms.Button button1;
+    private System.Windows.Forms.Button button2;
+    private System.Windows.Forms.ListView listView1;
+    private System.Windows.Forms.SplitContainer splitContainer5;
+    private System.Windows.Forms.ComboBox cmb_calculatingJob_count;
+    private System.Windows.Forms.Button btn_calculatingJobs_next;
+    private System.Windows.Forms.Button btn_calculatingJobs_prev;
+    private System.Windows.Forms.ListView lv_calculatingJobs;
+    private System.Windows.Forms.SplitContainer splitContainer4;
+    private System.Windows.Forms.ComboBox cmb_offlineJob_count;
+    private System.Windows.Forms.Button btn_offlineJob_next;
+    private System.Windows.Forms.Button btn_offlinejob_prev;
+    private System.Windows.Forms.ListView lv_offlineJobs;
+    private System.Windows.Forms.ContextMenuStrip AbortContextMenuStrip;
+    private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
+    private System.Windows.Forms.ToolStripMenuItem calcToolStripAbortItem;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.cs	(revision 4073)
@@ -0,0 +1,894 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Contracts;
+using System.Threading;
+using System.ServiceModel;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+
+  /// <summary>
+  /// if form is closed the loginform gets an information
+  /// </summary>
+  /// <param name="cf"></param>
+  /// <param name="error"></param>
+  public delegate void closeForm(bool cf, bool error);
+
+  public delegate void updateListView(JobDataFetcher fetcher, ListView sender, int category);
+
+  public partial class HiveServerManagementConsole : Form {
+
+    public event closeForm closeFormEvent;
+
+    #region private variables
+    private ResponseList<JobDto> jobs = null;
+
+    List<ListViewGroup> jobGroup;
+    private Dictionary<Guid, List<ListViewItem>> clientList = new Dictionary<Guid, List<ListViewItem>>();
+    private List<Changes> changes = new List<Changes>();
+
+    private JobDto currentJob = null;
+    private ClientDto currentClient = null;
+
+    private TreeNode currentGroupNode = null;
+    Guid parentgroup = Guid.Empty;
+    private ToolTip tt = new ToolTip();
+
+    private const string NOGROUP = "No group";
+    private TreeNode hoverNode;
+    private List<ListViewGroup> lvClientGroups;
+
+    private JobDataFetcher jdfFinished = null;
+    private JobDataFetcher jdfOffline = null;
+    private JobDataFetcher jdfCalculating = null;
+    
+      
+    #endregion
+
+    #region Properties
+    private IClientManager ClientManager {
+      get {
+        try {
+          return ServiceLocator.GetClientManager();
+        }
+        catch (FaultException ex) {
+          MessageBox.Show(ex.Message);
+        }
+        return null;
+      }
+    }
+    #endregion
+
+    public HiveServerManagementConsole() {
+      InitializeComponent();
+      Init();
+      AddClients();
+      //AddJobs();
+      StartAutoUpdateTimers();
+      //timerSyncronize.Start();
+    }
+
+    private void StartAutoUpdateTimers() {
+      jdfCalculating.NewDataAvailable += new EventHandler(jdf_NewDataAvailable);
+      jdfOffline.NewDataAvailable += new EventHandler(jdf_NewDataAvailable);
+      jdfFinished.NewDataAvailable += new EventHandler(jdf_NewDataAvailable);
+      jdfFinished.Start();
+      jdfOffline.Start();
+      jdfCalculating.Start();
+    }
+
+    void jdf_NewDataAvailable(object sender, EventArgs e) {
+      JobDataFetcher fetcher = (JobDataFetcher) sender;
+      if (fetcher.PollStates.Contains(State.finished)) {
+        updateJobListView(fetcher, lv_finishedJobs, 0);
+      } else if(fetcher.PollStates.Contains(State.calculating)) {
+        updateJobListView(fetcher, lv_calculatingJobs, 1);
+      } else if (fetcher.PollStates.Contains(State.offline)) {
+        updateJobListView(fetcher, lv_offlineJobs, 2);
+      }
+    }
+
+    private void updateJobListView(JobDataFetcher fetcher, ListView listView, int category) {
+      if (listView.InvokeRequired) {
+        listView.Invoke(new updateListView(updateJobListView), new object[] { fetcher, listView, category });
+      } else {
+        listView.BeginUpdate();
+        listView.Items.Clear();
+        foreach (JobDto job in fetcher.CachedJobs) {
+          ListViewItem lvi = new ListViewItem(job.Id.ToString(), category);
+          lvi.Tag = job;
+          listView.Items.Add(lvi);
+        }
+        listView.EndUpdate();
+      }
+    }
+
+   
+    private void Init() {
+
+      jdfFinished = new JobDataFetcher(new State[] {State.finished}, 50);
+      jdfCalculating = new JobDataFetcher(new State[] {State.calculating}, 50);
+      jdfOffline = new JobDataFetcher(new State[] {State.offline}, 50);
+
+      cmb_finishedJob_count.SelectedItem = "50";
+      cmb_offlineJob_count.SelectedItem = "50";
+      cmb_calculatingJob_count.SelectedItem = "50";
+      
+      calcToolStripAbortItem.Click += (s, e) => {
+        if(lv_calculatingJobs.SelectedItems.Count > 0) {
+          ServiceLocator.GetJobManager().AbortJob(((JobDto) lv_calculatingJobs.SelectedItems[0].Tag).Id);
+        }
+      };
+
+      offlineItemAbortJob.Click += (s, e) => {
+        if (lv_offlineJobs.SelectedItems.Count > 0) {
+          ServiceLocator.GetJobManager().AbortJob(((JobDto)lv_offlineJobs.SelectedItems[0].Tag).Id);
+        }
+      };
+
+      //adding group
+      menuItemAddGroup.Click += (s, e) => {
+        AddGroup addgroup = new AddGroup();
+        parentgroup = Guid.Empty;
+        if ((tvClientControl.SelectedNode != null) && (((ClientGroupDto)tvClientControl.SelectedNode.Tag).Id != Guid.Empty)) {
+          parentgroup = ((ClientGroupDto)tvClientControl.SelectedNode.Tag).Id;
+        }
+        addgroup.addGroupEvent += new AddGroupDelegate(addgroup_addGroupEvent);
+        addgroup.Show();
+      };
+
+      //adding group
+      menuItemDeleteGroup.Click += (s, e) => {
+        IClientManager clientManager = ServiceLocator.GetClientManager();
+        if (tvClientControl.SelectedNode != null) {
+          Response resp = clientManager.DeleteClientGroup(((ClientGroupDto)tvClientControl.SelectedNode.Tag).Id);
+          if (tvClientControl.SelectedNode == currentGroupNode) {
+            currentGroupNode = null;
+          }
+          tvClientControl.Nodes.Remove(tvClientControl.SelectedNode);
+          AddClients();
+        }
+      };
+
+      menuItemOpenCalendar.Click += (s, e) => {
+                                      if (tvClientControl.SelectedNode != null) {
+                                        CgCalendar cal = new CgCalendar(((ClientGroupDto)tvClientControl.SelectedNode.Tag).Id, ((ClientGroupDto)tvClientControl.SelectedNode.Tag).Name);                                        
+                                        cal.Show();
+                                      }
+                                    };
+
+
+      // drag item to treeview
+      lvClientControl.ItemDrag += delegate(object sender, ItemDragEventArgs e) {
+        List<string> itemIDs = new List<string>((sender as ListView).SelectedItems.Count);
+        foreach (ListViewItem item in (sender as ListView).SelectedItems) {
+          itemIDs.Add(item.Name);
+        }
+        (sender as ListView).DoDragDrop(itemIDs.ToArray(), DragDropEffects.Move);
+      };
+
+      // drag enter on treeview
+      tvClientControl.DragEnter += delegate(object sender, DragEventArgs e) {
+        e.Effect = DragDropEffects.Move;
+      };
+
+      // drag over
+      tvClientControl.DragOver += delegate(object sender, DragEventArgs e) {
+        Point mouseLocation = tvClientControl.PointToClient(new Point(e.X, e.Y));
+        TreeNode node = tvClientControl.GetNodeAt(mouseLocation);
+        if (node != null && ((ClientGroupDto)node.Tag).Id != Guid.Empty) {
+          e.Effect = DragDropEffects.Move;
+          if (hoverNode == null) {
+            node.BackColor = Color.LightBlue;
+            node.ForeColor = Color.White;
+            hoverNode = node;
+          } else if (hoverNode != node) {
+            hoverNode.BackColor = Color.White;
+            hoverNode.ForeColor = Color.Black;
+            node.BackColor = Color.LightBlue;
+            node.ForeColor = Color.White;
+            hoverNode = node;
+          }
+        } else {
+          e.Effect = DragDropEffects.None;
+        }
+      };
+
+      // drag drop event
+      tvClientControl.DragDrop += delegate(object sender, DragEventArgs e) {
+        if (e.Data.GetDataPresent(typeof(string[]))) {
+          Point dropLocation = (sender as TreeView).PointToClient(new Point(e.X, e.Y));
+          TreeNode dropNode = (sender as TreeView).GetNodeAt(dropLocation);
+          if (((ClientGroupDto)dropNode.Tag).Id != Guid.Empty) {
+            Dictionary<ClientDto, Guid> clients = new Dictionary<ClientDto, Guid>();
+            foreach (ListViewItem lvi in lvClientControl.SelectedItems) {
+              Guid groupId = Guid.Empty;
+              foreach (ListViewGroup lvg in lvClientGroups) {
+                if (lvi.Group.Header == ((ClientGroupDto)lvg.Tag).Name) {
+                  groupId = ((ClientGroupDto)lvg.Tag).Id;
+                }
+              }
+              clients.Add((ClientDto)lvi.Tag, groupId);
+            }
+            ChangeGroup(clients, ((ClientGroupDto)dropNode.Tag).Id);
+          }
+          tvClientControl_DragLeave(null, EventArgs.Empty);
+          AddClients();
+        }
+      };
+    }
+
+    /// <summary>
+    /// Change client to other group
+    /// </summary>
+    /// <param name="clients">list of clients</param>
+    /// <param name="clientgroupID">group of clients</param>
+    private void ChangeGroup(Dictionary<ClientDto, Guid> clients, Guid clientgroupID) {
+      IClientManager clientManager = ServiceLocator.GetClientManager();
+      foreach (KeyValuePair<ClientDto, Guid> client in clients) {
+        if (client.Key.Id != Guid.Empty) {
+          Response resp = clientManager.DeleteResourceFromGroup(client.Value, client.Key.Id);
+        }
+        clientManager.AddResourceToGroup(clientgroupID, client.Key);
+      }
+    }
+
+    #region Backgroundworker
+    /// <summary>
+    /// event on Ticker
+    /// </summary>
+    /// <param name="obj"></param>
+    /// <param name="e"></param>
+    private void TickSync(object obj, EventArgs e) {
+      if (!updaterWoker.IsBusy) {
+        updaterWoker.RunWorkerAsync();
+      }
+    }
+
+    private void updaterWoker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
+      RefreshForm();
+    }
+
+    private void updaterWoker_DoWork(object sender, DoWorkEventArgs e) {
+
+      changes.Clear();
+
+      ResponseList<JobDto> jobsOld = jobs;
+      try {
+        IJobManager jobManager =
+                ServiceLocator.GetJobManager();
+
+        jobs = jobManager.GetAllJobs();
+
+        IDictionary<int, JobDto> jobsOldHelp;
+        CloneList(jobsOld, out jobsOldHelp);
+
+        if(jobsOld != null && jobsOld.List != null && jobsOldHelp != null)
+          GetDelta(jobsOld.List, jobsOldHelp);
+
+      }
+      catch (FaultException fe) {
+        MessageBox.Show(fe.Message);
+      }
+
+    }
+
+    #endregion
+
+
+    private void AddClients() {
+      lvClientGroups = new List<ListViewGroup>();
+      clientList.Clear();
+      tvClientControl.Nodes.Clear();
+      try {
+        ResponseList<ClientGroupDto> clientGroups = ClientManager.GetAllClientGroups();
+
+        if (clientGroups != null && clientGroups.List != null) {
+          foreach (ClientGroupDto cg in clientGroups.List) {
+            AddClientOrGroup(cg, null);
+          }
+
+          if (currentGroupNode != null) {
+            lvClientControl.Items.Clear();
+            lvClientControl.Groups.Clear();
+            AddGroupsToListView(currentGroupNode);
+          }
+          tvClientControl.ExpandAll();
+        }
+
+      }
+      catch (FaultException fe) {
+        MessageBox.Show(fe.Message);
+      }
+    }
+
+    private void AddClientOrGroup(ClientGroupDto clientGroup, TreeNode currentNode) {
+      currentNode = CreateTreeNode(clientGroup, currentNode);
+      List<ListViewItem> clientGroupList = new List<ListViewItem>();
+      ListViewGroup lvg;
+      if (string.IsNullOrEmpty(clientGroup.Name)) {
+        lvg = new ListViewGroup(NOGROUP, HorizontalAlignment.Left);
+      } else {
+        lvg = new ListViewGroup(clientGroup.Name, HorizontalAlignment.Left);
+      }
+      lvClientControl.Groups.Add(lvg);
+      lvg.Tag = clientGroup;
+      lvClientGroups.Add(lvg);
+      foreach (ResourceDto resource in clientGroup.Resources) {
+        if (resource is ClientDto) {
+          int percentageUsage = CapacityRam(((ClientDto)resource).NrOfCores, ((ClientDto)resource).NrOfFreeCores);
+          int usage = 3;
+          if ((((ClientDto)resource).State != State.offline) &&
+            (((ClientDto)resource).State != State.nullState)) {
+            if ((percentageUsage >= 0) && (percentageUsage <= 25)) {
+              usage = 0;
+            } else if ((percentageUsage > 25) && (percentageUsage <= 75)) {
+              usage = 1;
+            } else if ((percentageUsage > 75) && (percentageUsage <= 100)) {
+              usage = 2;
+            }
+          }
+          ListViewItem lvi = new ListViewItem(resource.Name, usage, lvg);
+          lvi.Tag = resource as ClientDto;
+          clientGroupList.Add(lvi);
+        } else if (resource is ClientGroupDto) {
+          AddClientOrGroup(resource as ClientGroupDto, currentNode);
+        }
+      }
+      clientList.Add(clientGroup.Id, clientGroupList);
+    }
+
+    private TreeNode CreateTreeNode(ClientGroupDto clientGroup, TreeNode currentNode) {
+      TreeNode tn;
+      if (string.IsNullOrEmpty(clientGroup.Name)) {
+        tn = new TreeNode(NOGROUP);
+      } else {
+        tn = new TreeNode(clientGroup.Name);
+      }
+      tn.Tag = clientGroup;
+      if (currentNode == null) {
+        tvClientControl.Nodes.Add(tn);
+      } else {
+        currentNode.Nodes.Add(tn);
+      }
+      return tn;
+    }
+
+    private void AddGroupsToListView(TreeNode node) {
+      if (node != null) {
+        ListViewGroup lvg = new ListViewGroup(node.Text, HorizontalAlignment.Left);
+        lvClientControl.Groups.Add(lvg);
+        lvg.Tag = node.Tag;
+        foreach (ListViewItem item in clientList[((ClientGroupDto)node.Tag).Id]) {
+          item.Group = lvg;
+          lvClientControl.Items.Add(item);
+        }
+
+        if (node.Nodes != null) {
+          foreach (TreeNode curNode in node.Nodes) {
+            AddGroupsToListView(curNode);
+          }
+        }
+      }
+    }
+
+    /// <summary>
+    /// if one job is clicked, the details for the clicked job are shown
+    /// in the second panel
+    /// </summary>
+    private void JobClicked() {
+      plJobDetails.Visible = true;
+      lvJobDetails.Items.Clear();
+
+      ResponseObject<JobDto> response = ServiceLocator.GetJobManager().GetJobByIdWithDetails(currentJob.Id);
+
+      if(response.Success == false || response.Obj == null)
+        return;
+
+      JobDto job = response.Obj;
+
+      //lvSnapshots.Enabled = true;
+
+      if (job.State == State.offline) {
+        pbJobControl.Image = ilLargeImgJob.Images[2];
+      } else if (job.State == State.calculating) {
+        pbJobControl.Image = ilLargeImgJob.Images[1];
+      } else if (job.State == State.finished) {
+        pbJobControl.Image = ilLargeImgJob.Images[0];
+      }
+
+      lblJobName.Text = job.Id.ToString();
+      if (job.Percentage != null) {
+        progressJob.Value = (int) (currentJob.Percentage*100);
+        lblProgress.Text = (int) (currentJob.Percentage*100) + "% calculated";
+      }
+
+      ListViewItem lvi = new ListViewItem();
+      lvi.Text = "User:";
+      lvi.SubItems.Add(job.UserId.ToString());
+      lvJobDetails.Items.Add(lvi);
+
+      lvi = null;
+      lvi = new ListViewItem();
+      lvi.Text = "created at:";
+      lvi.SubItems.Add(job.DateCreated.ToString());
+      lvJobDetails.Items.Add(lvi);
+
+      if (job.ParentJob != null) {
+        lvi = null;
+        lvi = new ListViewItem();
+        lvi.Text = "Parent job:";
+        lvi.SubItems.Add(job.ParentJob.ToString());
+        lvJobDetails.Items.Add(lvi);
+      }
+
+      lvi = null;
+      lvi = new ListViewItem();
+      lvi.Text = "Priority:";
+      lvi.SubItems.Add(job.Priority.ToString());
+      lvJobDetails.Items.Add(lvi);
+
+      if (job.Project != null) {
+        lvi = null;
+        lvi = new ListViewItem();
+        lvi.Text = "Project:";
+        lvi.SubItems.Add(job.Project.Name.ToString());
+        lvJobDetails.Items.Add(lvi);
+      }
+
+      if (job.Client != null) {
+        lvi = null;
+        lvi = new ListViewItem();
+        lvi.Text = "Calculation begin:";
+        lvi.SubItems.Add(job.DateCalculated.ToString());
+        lvJobDetails.Items.Add(lvi);
+
+
+        lvi = null;
+        lvi = new ListViewItem();
+        lvi.Text = "Client calculated:";
+        lvi.SubItems.Add(job.Client.Name.ToString());
+        lvJobDetails.Items.Add(lvi);
+
+        if (job.State == State.finished) {
+          lvi = null;
+            lvi = new ListViewItem();
+            lvi.Text = "Calculation ended:";
+            lvi.SubItems.Add(job.DateFinished.ToString());
+            lvJobDetails.Items.Add(lvi);
+          }
+        }
+      } 
+
+    /// <summary>
+    /// if one client is clicked, the details for the clicked client are shown
+    /// in the second panel
+    /// </summary>
+    private void ClientClicked() {
+      plClientDetails.Visible = true;
+
+      if (currentClient != null) {
+        int percentageUsage = CapacityRam(currentClient.NrOfCores, currentClient.NrOfFreeCores);
+        int usage = 3;
+        if ((currentClient.State != State.offline) && (currentClient.State != State.nullState)) {
+          if ((percentageUsage >= 0) && (percentageUsage <= 25)) {
+            usage = 0;
+          } else if ((percentageUsage > 25) && (percentageUsage <= 75)) {
+            usage = 1;
+          } else if ((percentageUsage > 75) && (percentageUsage <= 100)) {
+            usage = 2;
+          }
+        }
+        pbClientControl.Image = ilLargeImgClient.Images[usage];
+        lblClientName.Text = currentClient.Name;
+        lblLogin.Text = currentClient.Login.ToString();
+        lblState.Text = currentClient.State.ToString();
+      }
+    }
+
+    private void RefreshForm() {
+      foreach (Changes change in changes) {
+        if (change.Types == Type.Job) {
+          RefreshJob(change);
+        }
+      }
+    }
+
+    private void RefreshJob(Changes change) {
+      /*if (change.ChangeType == Change.Update) {
+        for (int i = 0; i < lvJobControl.Items.Count; i++) {
+          if (lvJobControl.Items[i].Text == change.ID.ToString()) {
+            foreach (JobDto job in jobs.List) {
+              if (job.Id == change.ID) {
+                lvJobControl.Items[i].Tag = job;
+                if (currentJob != null) {
+                  if (currentJob.Id == change.ID) {
+                    currentJob = job;
+                    JobClicked();
+                  }
+                }
+                break;
+              }
+            }
+            State state = jobs.List[change.Position].State;
+            if (state == State.finished) {
+              lvJobControl.Items[i].Group = jobGroup[1];
+              lvJobControl.Items[i].ImageIndex = 0;
+            } else if (state == State.calculating) {
+              lvJobControl.Items[i].Group = jobGroup[0];
+              lvJobControl.Items[i].ImageIndex = 1;
+            } else if (state == State.offline || state == State.pending) {
+              lvJobControl.Items[i].Group = jobGroup[2];
+              lvJobControl.Items[i].ImageIndex = 2;
+            }
+            lvJobControl.Refresh();
+          }
+        }
+      } else if (change.ChangeType == Change.Create) {
+
+        ListViewItem lvi = new ListViewItem(
+          change.ID.ToString(), 2, jobGroup[2]);
+        foreach (JobDto job in jobs.List) {
+          if (job.Id == change.ID) {
+            lvi.Tag = job;
+            break;
+          }
+        }
+        lvJobControl.Items.Add(lvi);
+
+      } else if (change.ChangeType == Change.Delete) {
+        for (int i = 0; i < lvJobControl.Items.Count; i++) {
+          if (change.ID.ToString() == lvJobControl.Items[i].Text.ToString()) {
+            lvJobControl.Items[i].Remove();
+            break;
+          }
+        }
+      }                    */
+    }
+
+
+    #region Eventhandlers
+    /// <summary>
+    /// Send event to Login-GUI when closing
+    /// </summary>
+    /// <param name="sender"></param>
+    /// <param name="e"></param>
+    private void Close_Click(object sender, EventArgs e) {
+      if (closeFormEvent != null) {
+        closeFormEvent(true, false);
+      }
+      this.Close();
+    }
+
+    /// <summary>
+    /// Send evnt to Login-GUI when closing
+    /// </summary>
+    /// <param name="sender"></param>
+    /// <param name="e"></param>
+    private void HiveServerConsoleInformation_FormClosing(object sender, FormClosingEventArgs e) {
+      if (closeFormEvent != null) {
+        closeFormEvent(true, false);
+      }
+    }
+
+    private void AddJob_Click(object sender, EventArgs e) {
+      AddJobForm newForm = new AddJobForm();
+      newForm.Show();
+      newForm.addJobEvent += new addDelegate(updaterWoker.RunWorkerAsync);
+    }
+
+    private void OnLVJobControlClicked(object sender, EventArgs e) {
+      JobListView jlv = (JobListView) sender;
+      currentJob = (JobDto)jlv.SelectedItems[0].Tag;
+      JobClicked();
+    }
+
+    private void lvJobControl_MouseMove(object sender, MouseEventArgs e) {
+      JobListView jlv = (JobListView) sender;
+      if ((jlv.GetItemAt(e.X, e.Y) != null) &&
+        (jlv.GetItemAt(e.X, e.Y).ToolTipText != null)) {
+        tt.SetToolTip(jlv, jlv.GetItemAt(e.X, e.Y).ToolTipText);
+      }
+    }
+
+    private void lvJobControl_MouseUp(object sender, MouseEventArgs e) {
+      // If the right mouse button was clicked and released,
+      // display the shortcut menu assigned to the ListView. 
+      JobListView jlv = (JobListView)sender;
+      jlv.ContextMenuStrip.Items.Clear();
+      ListViewHitTestInfo hitTestInfo = jlv.HitTest(e.Location);
+      if (e.Button == MouseButtons.Right && hitTestInfo.Item != null && jlv.SelectedItems.Count == 1) {
+        JobDto selectedJob = (JobDto)jlv.SelectedItems[0].Tag;
+
+        if (selectedJob != null && selectedJob.State == State.calculating) {
+          jlv.ContextMenuStrip.Items.Add(offlineItemAbortJob);
+          jlv.ContextMenuStrip.Items.Add(menuItemGetSnapshot);
+        }
+      }
+      jlv.ContextMenuStrip.Show(new Point(e.X, e.Y));
+    }
+
+    private void tvClientControl_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
+      lvClientControl.Items.Clear();
+      lvClientControl.Groups.Clear();
+      currentGroupNode = e.Node;
+      AddGroupsToListView(e.Node);
+    }
+
+    private void groupToolStripMenuItem_Click(object sender, EventArgs e) {
+      AddGroup addgroup = new AddGroup();
+      parentgroup = Guid.Empty;
+      if ((tvClientControl.SelectedNode != null) && (((ClientGroupDto)tvClientControl.SelectedNode.Tag).Id != Guid.Empty)) {
+        parentgroup = ((ClientGroupDto)tvClientControl.SelectedNode.Tag).Id;
+      }
+      addgroup.addGroupEvent += new AddGroupDelegate(addgroup_addGroupEvent);
+      addgroup.Show();
+    }
+
+    private void projectToolStripMenuItem_Click(object sender, EventArgs e) {
+      AddProject addproject = new AddProject();
+      addproject.AddProjectEvent += new AddProjectDelegate(addproject_AddProjectEvent);
+      addproject.Show();
+    }
+
+    private void OnLVClientClicked(object sender, EventArgs e) {
+      currentClient = (ClientDto)lvClientControl.SelectedItems[0].Tag;
+      ClientClicked();
+    }
+
+    private void tvClientControl_MouseUp(object sender, MouseEventArgs e) {
+      // If the right mouse button was clicked and released,
+      // display the shortcut menu assigned to the ListView. 
+      contextMenuGroup.Items.Clear();
+      TreeViewHitTestInfo hitTestInfo = tvClientControl.HitTest(e.Location);
+      tvClientControl.SelectedNode = hitTestInfo.Node;
+      if (e.Button != MouseButtons.Right) return;
+      if (hitTestInfo.Node != null) {
+        ResourceDto selectedGroup = (ResourceDto)tvClientControl.SelectedNode.Tag;
+
+        if (selectedGroup != null) {
+          contextMenuGroup.Items.Add(menuItemAddGroup);
+          contextMenuGroup.Items.Add(menuItemDeleteGroup);
+          contextMenuGroup.Items.Add(menuItemOpenCalendar);
+        }
+      } else {
+        contextMenuGroup.Items.Add(menuItemAddGroup);
+      }
+      tvClientControl.ContextMenuStrip.Show(tvClientControl, new Point(e.X, e.Y));
+    }
+
+    private void addproject_AddProjectEvent(string name) {
+      IJobManager jobManager = ServiceLocator.GetJobManager();
+
+      ProjectDto pg = new ProjectDto() { Name = name };
+      jobManager.CreateProject(pg);
+
+    }
+
+    private void addgroup_addGroupEvent(string name) {
+      IClientManager clientManager = ServiceLocator.GetClientManager();
+
+      if (parentgroup != Guid.Empty) {
+        ClientGroupDto cg = new ClientGroupDto() { Name = name };
+        ResponseObject<ClientGroupDto> respcg = clientManager.AddClientGroup(cg);
+        Response res = clientManager.AddResourceToGroup(parentgroup, respcg.Obj);
+        if (res != null && !res.Success) {
+          MessageBox.Show(res.StatusMessage, "Error adding Group", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+      } else {
+        ClientGroupDto cg = new ClientGroupDto() { Name = name };
+        clientManager.AddClientGroup(cg);
+      }
+      AddClients();
+    }
+
+
+    private void Refresh_Click(object sender, EventArgs e) {
+      Form overlayingForm = new Form();
+
+      overlayingForm.Show();
+      overlayingForm.FormBorderStyle = FormBorderStyle.None;
+      overlayingForm.BackColor = Color.Gray;
+      overlayingForm.Opacity = 0.4;
+      overlayingForm.Size = this.Size;
+      overlayingForm.Location = this.Location;
+
+      AddClients();
+
+      overlayingForm.Close();
+    }
+
+    private void largeIconsToolStripMenuItem_Click(object sender, EventArgs e) {
+      lvClientControl.View = View.LargeIcon;
+      //lvJobControl.View = View.LargeIcon;
+      largeIconsToolStripMenuItem.CheckState = CheckState.Checked;
+      smallIconsToolStripMenuItem.CheckState = CheckState.Unchecked;
+      listToolStripMenuItem.CheckState = CheckState.Unchecked;
+    }
+
+    private void smallIconsToolStripMenuItem_Click(object sender, EventArgs e) {
+      lvClientControl.View = View.SmallIcon;
+      //lvJobControl.View = View.SmallIcon;
+      largeIconsToolStripMenuItem.CheckState = CheckState.Unchecked;
+      smallIconsToolStripMenuItem.CheckState = CheckState.Checked;
+      listToolStripMenuItem.CheckState = CheckState.Unchecked;
+    }
+
+    private void listToolStripMenuItem_Click(object sender, EventArgs e) {
+      lvClientControl.View = View.List;
+      //lvJobControl.View = View.List;
+      largeIconsToolStripMenuItem.CheckState = CheckState.Unchecked;
+      smallIconsToolStripMenuItem.CheckState = CheckState.Unchecked;
+      listToolStripMenuItem.CheckState = CheckState.Checked;
+    }
+
+    private void tvClientControl_DragLeave(object sender, EventArgs e) {
+      foreach (TreeNode node in tvClientControl.Nodes) {
+        node.BackColor = Color.White;
+        node.ForeColor = Color.Black;
+      }
+    }
+    #endregion
+
+    #region Helper methods
+
+    private void CloneList(ResponseList<JobDto> oldList, out IDictionary<int, JobDto> newList) {
+      newList = new Dictionary<int, JobDto>();
+      if (oldList != null && oldList.List != null) {
+        for (int i = 0; i < oldList.List.Count; i++) {
+          newList.Add(i, oldList.List[i]);
+        }
+      }
+    }
+
+    private bool IsEqual(ClientDto ci1, ClientDto ci2) {
+      if (ci1 == null && ci2 == null) {
+        return true;
+      }
+      if (ci2 == null) {
+        return false;
+      }
+      if (ci1.Id.Equals(ci2.Id)) {
+        return true;
+      } else return false;
+    }
+
+    private int CapacityRam(int noCores, int freeCores) {    
+      if (noCores > 0) {
+        int capacity = ((noCores - freeCores) / noCores) * 100;
+        return capacity;
+      }
+      return 100;
+    }
+
+    private void GetDelta(IList<JobDto> oldJobs, IDictionary<int, JobDto> helpJobs) {
+      bool found = false;
+      for (int i = 0; i < jobs.List.Count; i++) {
+        JobDto job = jobs.List[i];
+        for (int j = 0; j < oldJobs.Count; j++) {
+
+          JobDto jobold = oldJobs[j];
+
+          if (job.Id.Equals(jobold.Id)) {
+
+            found = true;
+            bool change = false;
+            if (job.State != jobold.State) {
+              change = true;
+            }
+            if (job.State != State.offline) {
+              if ((!IsEqual(job.Client, jobold.Client)) || (job.State != jobold.State)
+                   || (job.Percentage != jobold.Percentage)) {
+                change = true;
+              }
+            } else if (job.DateCalculated != jobold.DateCalculated) {
+              change = true;
+            }
+            if (change) {
+              changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Update, Position = i });
+            }
+
+            int removeAt = -1;
+            foreach (KeyValuePair<int, JobDto> kvp in helpJobs) {
+              if (job.Id.Equals(kvp.Value.Id)) {
+                removeAt = kvp.Key;
+                break;
+              }
+            }
+            if (removeAt >= 0) {
+              helpJobs.Remove(removeAt);
+            }
+            break;
+          }
+
+        }
+        if (found == false) {
+          changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Create });
+        }
+        found = false;
+      }
+      foreach (KeyValuePair<int, JobDto> kvp in helpJobs) {
+        changes.Add(new Changes { Types = Type.Job, ID = kvp.Value.Id, ChangeType = Change.Delete, Position = kvp.Key });
+      }
+    }
+
+    #endregion
+
+    private void btn_prev_Click(object sender, EventArgs e) {
+      if (sender == btn_finishedJob_prev)
+        jdfFinished.Backward();
+      else if (sender == btn_calculatingJobs_prev)
+        jdfCalculating.Backward();
+      else if (sender == btn_offlinejob_prev) {
+        jdfOffline.Backward();
+      }
+    }
+
+    private void btn_next_Click(object sender, EventArgs e) {
+      if (sender == btn_finishedJob_next)
+        jdfFinished.Forward();
+      else if (sender == btn_calculatingJobs_next)
+        jdfCalculating.Forward();
+      else if (sender == btn_offlineJob_next) {
+        jdfOffline.Forward();
+      }
+    }
+
+    private void cmb_count_SelectedIndexChanged(object sender, EventArgs e) {
+      ComboBox box = (ComboBox) sender;
+      if (box.SelectedItem != null) {
+        int val;
+        if (Int32.TryParse(box.SelectedItem.ToString(), out val)) {
+          if (box == cmb_offlineJob_count) {
+            jdfOffline.NrOfEntriesOnPage = val;
+          }
+          else if (box == cmb_finishedJob_count) {
+            jdfFinished.NrOfEntriesOnPage = val;
+          }
+          else if (box == cmb_calculatingJob_count) {
+            jdfCalculating.NrOfEntriesOnPage = val;
+          }
+        }
+      }
+    }
+
+    private void lv_Jobs_SelectedIndexChanged(object sender, EventArgs e) {
+      ListView lv = (ListView) sender;
+      if(lv.SelectedItems.Count > 0) {
+        foreach (ListViewItem lvi in lv.SelectedItems) {
+          currentJob = (JobDto) lvi.Tag;
+          JobClicked();          
+        }
+      }
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HiveServerManagementConsole.resx	(revision 4073)
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>32, 12</value>
+  </metadata>
+  <metadata name="ilLargeImgClient.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>129, 12</value>
+  </metadata>
+  <data name="ilLargeImgClient.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABo
+        FwAAAk1TRnQBSQFMAgEBBAEAAXQBAAF0AQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABgAMAAUADAAEBAQABCAYAASAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8A/wD/AP8A
+        /wD/AP8A/wD/AP8A/wD/AP8AEQALNQJWAZcDeAGXA1YKNQE0CywCUwV0AVIBTAFNCywMQAFGAWkEbwJG
+        DEAfkgHtCTUCVgGYAQcBvAPwArwB7wF4AlYENQE0AzUBNAksAU0BUgGTAQcBvAPwArwB7wF0AVIBTQks
+        CkABaQGTAQcBvAPwArwB7wFvAUYKQAuSAfcBBwG8AvADvAHvC5IB7Qg1AVYBmAG8AfAE8QLwAfEB8AIH
+        AZgBVgU0AjUBNAgsAVIBkwG8AfAE8QLwAfEB8AIHAZMBTAIsASsFLAhAAUYBkwG8AfAE8QLwAfEB8AIH
+        AZMBRgJAASAFQAmSAe8BvAHwBPEC8AHxAbwCBwHvCJIB7Qc1AVYB7wO8AfAD8QPwBAcB9wFQAi4FNAcs
+        AVIBmQO8AfAD8QPwBAcB7wFuBCsDLAdAAUYBkwO8AfAD8QPwBAcB7wFoAukCIANACJIBBwO8AfAD8QPw
+        BAcB7wHsBpIB7QY1AVYBmAMHAbwB8ALxAfADvAIHAe8C9wHtAU8CLgQ0BiwBTQGTAwcBvAHwAvEB8AO8
+        AgcB7wL3Ae0BSwMrAywHQAGTAwcBvAHwAvEB8AO8AgcB7wL3Ae0C6QIgA0AHkgHvAwcBvAHwAvEB8AO8
+        AgcB7wP3Ae0FkgHtBjUBVgGYBAcBvAPwAbwDBwHvAfcB7QGSAe0BTwY0BiwBUwGTBAcBvAPwAbwDBwHv
+        AfcB7QGSARwBSwMrAywHQAGTBAcBvAPwAbwDBwHvAfcB7QGSAe0B6QMgA0AHkgHvBAcBvAPwAbwDBwHv
+        AfcB7QGSAfcGkgHtBzUBlwHvBQcBvAIHAu8B7QLsAe0BkgFyAi4FNAcsAXQB7wUHAbwCBwLvAe0C7AHt
+        AfcBcwErAUwCKwMsB0ABaQGTBQcBvAIHAu8B7QLsAe0BkgFuAukFQAeSAe0B7wUHAbwCBwLvAe0C7AHt
+        CJIB7Qg1AVYBHAHvAQcD7wGSAuwCbQHrAewB9wHvAfcC7wFyBDQILAFMARwCBwPvAZIC7AJtAesB7AH3
+        Ae8BHALvAXQELAhAAUYBkwHvAQcD7wGSAuwCbQHrAewB9wHvARwC7wFvBEAJkgH3Be8BkgLsAm0B6wHs
+        AfcB7wH3Au8B7QOSAe0JNQE0AVABcgLtBewBkgLvAQcBvAHwAbwB7wFzAzUBNAksASsBTAFuAe0BkgXs
+        AZIC7wEHAbwB8AG8AQcBdAQsCkABRQFuAewB7QXsAZIC7wEHAbwB8AG8Ae8BbwRAC5ID7QXsAZIC7wEH
+        AbwB8AG8AQcB7QOSAe0KNQE0AVUBUAPsAe0B9wEHA7wBBwHvAfcCBwFzAzUBNAssAkwD7AHtAfcBBwO8
+        AQcB7wH3AgcBHAQsDEABRQPsAe0B9wEHA7wBBwHvAfcCBwGNBEANkgHtAuwB7QH3AQcDvAEHAe8B9wIH
+        BJIB7QU1AjQCUAFyAe0BkgH3A+8CBwHvAe0BbQETARUBEQEVAewBvAHtAVYCNQE0BSwBKwJMAUsBcwHt
+        AvcD7wIHAe8B7QFtARMBFQERARUB7AG8ARwBTQMsB0ABRgFFAW4B7QGSAfcD7wIHAe8B7QFtARMBFQER
+        ARUB7AG8Ae0EQAmSAu0BkgH3A+8CBwHvAe0BbQETARUBEQEVAewBvASSAe0BNQJWAXIB7AHtAfcFBwHv
+        AfcB7AFtARQCQwIRA0MBFAHsAbwB7QFWAjUBNAEsAU0BTAFzAewB7QHvBQcB7wH3AewBbQEUAkMCEQND
+        ARQB7AG8ARwBUwMsAUACRgJuAe0B9wUHAe8B9wHsAW0BFAJDAhEDQwEUAewBvAGSAUYDQASSAewB7QH3
+        BQcB7wH3AewBbQEUAkMCEQNDARQB7AG8AfcDkgHtATUBlwHtAu8DBwH3AewB6gEVAREDEAERAhUFFAET
+        AewBvAEcAVYCNQE0ASwBdAHtAu8DBwH3AewB6gEVAREDEAERAhUFFAETAewBvAEcAVIDLAFAAWkB7QLv
+        AwcB9wHsAeoBFQERAxABEQIVBRQBEwHsAbwBkgFGA0ACkgHtAu8DBwH3AewB6gEVAREDEAERAhUFFAET
+        AewBvAH3A5IB7QE1AXgB9wHtAewBbQEVARADDwMQAhEBFQEUAhMFEgHsAbwB9wFWAjUBNAEsAXQB9wHt
+        AewBbQEVARADDwMQAhEBFQEUAhMFEgHsAbwBHAFSAywBQAFvAfcB7QHsAW0BFQEQAw8DEAIRARUBFAIT
+        BRIB7AG8AfcBRgNAApIB9wHtAewBbQEVARADDwMQAhEBFQEUAhMFEgHsAbwB7wOSAe0BNQF4AfcBEQgQ
+        AxEBQwEUARIC6gVtAewBvAHvAVYCNQE0ASwBdQH3AREIEAMRAUMBFAESAuoFbQHsAbwB7wFSAywBQAFv
+        AfcBEQgQAxEBQwEUARIC6gVtAewBvAHvAWkDQAGSAe0B9wERCBADEQFDARQBEgLqBW0B7AG8Ae8DkgHt
+        ATUBVgHvARUBEQFDAxECEAMRAkMBEwRtBOsB7AEHAe8BlwI1ATQBLAFTAe8BFQERAUMDEQIQAxECQwET
+        BG0E6wHsAQcB7wF0AywBQAEXAe8BFQERAUMDEQIQAxECQwETBG0E6wHsAQcB7wFvA0ACkgHvARUBEQFD
+        AxECEAMRAkMBEwRtBOsB7AEHAe8B7QKSAe0BNQFWAe8BEwFDARUCQwERARADEQJDARUB6gnsAgcBcwI1
+        ATQBLAFTAe8BEwFDARUCQwERARADEQJDARUB6gnsAgcBdAMsAUABRgHvARMBQwEVAkMBEQEQAxECQwEV
+        AeoJ7AEHAe8BbwNAApIB7wETAUMBFQJDAREBEAMRAkMBFQHqCewCBwHtApIB7QE1AVYB7wFtARUCFAEV
+        BBEDQwEUAW0F7APtAewCBwFzAjUBNAEsAVMB7wFtARUCFAEVBBEDQwEUAW0F7APtAewCBwEcAywCQAHv
+        AW0BFQIUARUEEQNDARQBbQXsA+0B7AIHAW4DQAKSAe8BbQEVAhQBFQQRA0MBFAFtBewD7QHsAgcB7QKS
+        Ae0CNQHvAesBFQETARIBFAMRBEMBEwHsBpIB9wKSAe8BvAHtAjUBNAIsAe8B6wEVARMBEgEUAxEEQwET
+        AewGkgH3ApIB7wG8ARwDLAJAAZMB6wEVARMBEgEUAxEEQwETAewGkgH3ApIB7wG8Ae0DQAKSAe8B6wEV
+        ARMBEgEUAxEEQwETAewGkgH3ApIB7wG8Ae0CkgHtAjUBmAHsARQC6gEVAxEDQwEVARIB7AHvAvcF7wH3
+        Ae8B8AHtAjUBNAIsAZkB7AEUAuoBFQMRA0MBFQESAewB7wL3Be8B9wHvAfABHAFNAiwCQAGTAewBFALq
+        ARUDEQNDARUBEgHsAe8C9wXvAfcB7wHwAe0DQAKSAe8B7AEUAuoBFQMRA0MBFQESAewB7wL3Be8B9wHv
+        AfAB9wKSAe0CNQGYAfcBFAFtAeoBQwIRA0MCFQFtAZIF7wMHAu8B8AGSAVYBNQE0AiwBkwH3ARQBbQHq
+        AUMCEQNDAhUBbQGSBe8DBwLvAfABHAFSAiwCQAGTAfcBFAFtAeoBQwIRA0MCFQFtAZIF7wMHAu8B8AHt
+        AUYCQAHtAZIB9wGSARQBbQHqAUMCEQNDAhUBbQGSBe8DBwLvAfAB9wKSAe0CNQF4AfcBEwFtARICEQND
+        AhUBFAHsAe8GBwK8AgcB8AGSAVYBNQE0AiwBdAHvARMBbQESAhEDQwIVARQB7AHvBgcCvAIHAfABHAFS
+        AiwCQAFvAfcBEwFtARICEQNDAhUBFAHsAe8GBwK8AgcB8AGSAUYCQAHtApIB9wETAW0BEgIRA0MCFQEU
+        AewB7wYHArwCBwHwAfcCkgHtAjUBeAHvARMBbQEVARECQwIVAhQBEwHsBbwE8AG8AQcB8AH3AZcBNQE0
+        AiwBdAHvARMBbQEVARECQwIVAhQBEwHsBbwE8AG8AQcB8AEcAXQCLAJAAW8B9wETAW0BFQERAkMCFQIU
+        ARMB7AW8BPABvAEHAfAB9wFpAkAB7QKSAe8BEwFtARUBEQJDAhUCFAETAewFvATwAbwBBwHwAfcCkgHt
+        AjUBVgHvAhIBQwERAkMCFQIUAeoB9wXwBfEBBwHwAe8BlwE1ATQCLAFTAe8CEgFDARECQwIVAhQB6gH3
+        BfAF8QEHAfAB7wF0AiwCQAFGAe8CEgFDARECQwIVAhQB6gH3BfAF8QEHAfAB7wFvAkAB7QKSAe8CEgFD
+        ARECQwIVAhQB6gH3BfAF8QEHAfAB7wHtAZIB7QI1AVYB7wESARUBEQJDAhUDFAFtAQcB8gTxBfIBvAHx
+        Ae8BcgE1ATQCLAFTAe8BEgEVARECQwIVAxQBbQEHAfIE8QXyAbwB8QHvAXQCLAJAAUYB7wESARUBEQJD
+        AhUDFAFtAQcB8gTxBfIBvAHxAe8BbwJAAe0CkgHvARIBFQERAkMCFQMUAW0BBwHyBPEF8gG8AfEBBwHt
+        AZIB7QM1ARwBEgIRAkMCFQIUARMB7AHwBfIF8wLxAbwBcwE1ATQCLAFNAZMBEgIRAkMCFQIUARMB7AHw
+        BfIF8wLxAbwBdAIsA0ABkwESAhECQwIVAhQBEwHsAfAF8gXzAvEBvAFuAkADkgHvARICEQJDAhUCFAET
+        AewB8AXyBfMC8QG8Ae0BkgHtAzUBmAFtAhECQwIVAhQBEwGSAfII8wHyAfEBBwLwAe0BNQE0AywBkwFt
+        AhECQwIVAhQBEwGSAfII8wHyAfEBBwLwAe0BTQEsA0ABkwFtAhECQwIVAhQBEwGSAfII8wHyAfEBBwLw
+        AewCQAOSAe8BbQIRAkMCFQIUARMBkgHyCPMB8gHxAQcC8AHtAZIB7QM1AZgB7AFDARECQwIVAhQBEgHv
+        AfIB8QHwA7wFBwG8AvEBHAE1ATQDLAEcAewBQwERAkMCFQIUARIB7wHyAfEB8AO8BQcBvALxARwBTQEs
+        A0ABkwHsAUMBEQJDAhUCFAESAe8B8gHxAfADvAUHAbwC8QHtAkAEkgHsAUMBEQJDAhUCFAESAe8B8gHx
+        AfADvAYHAvECkgHtAzUBmAHtARUCEQJDARUCFAHqAe0D7wIHBLwBCAKZApgBVgE1ATQDLAGTAe0BFQIR
+        AkMBFQIUAeoB7QPvAgcFvAOZAZMBUwIsA0ABjgHtARUCEQJDARUCFAHqAe0D7wIHBLwBBwOTAY4BRgJA
+        BJIB7QEVAhECQwEVAhQB6gHtA+8CBwS8AQgB7wH3BJIB7QM1AXgB9wIUAeoBbQHsAZIB7wEHArwBBwII
+        AZkDmAN4BVYBNQE0AywBdAH3AhQB6gFtAewBkgHvAQcDvAEHA5kCkwJ0AXUFUwIsA0ABbwH3AhQB6gFt
+        AewBkgHvAQcCvAIHBZMBjgJvAWkERgJABJIB9wIUAeoBbQHsAZIB7wEHArwBBwEIAe8C9wuSAe0DNQF4
+        Ae8BBwG8AQcCCAGZApgCeAZWCjUBNAMsAXQCBwK8AQcDmQGTAXQBdQVTAU0LLANAAW8B7wEHAbwDBwOT
+        Am8BaQNGDUACkgLtAe8BBwG8AQcCCAHvAfcTkgHtBDUBVgGXA1YWNQE0BCwBUwF1A1MXLARAA2kCRhdA
+        A5IB7RuSAe0BQgFNAT4HAAE+AwABKAMAAYADAAFAAwABAQEAAQEGAAEEFgAD//8A/wD/AP8ABQAL
+</value>
+  </data>
+  <metadata name="ilLargeImgJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>239, 7</value>
+  </metadata>
+  <data name="ilLargeImgJob.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO
+        DgAAAk1TRnQBSQFMAgEBAwEAAXQBAAF0AQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABgAMAASADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wYAAaEBhhJsAYYBoQoA
+        AaEUxwGhCgABoQGGAYwQZwGMAYYBoSgAAaEBbAE1FDYBNQFsAaEGAAGhAccWrAHHAaEGAAGhAWcWTQFn
+        AaElAAGhAVAYNgFQAaEEAAGhBKwCsw7UArMErAGhBAABxAFMA00SUwNNAUwBxCMAAaEBUAM2AzcENg03
+        AzYBUAGhAgABoQOsAdQD2w7VA9sB1AOsAaECAAGhAUwCTQFTA1kFUwxZAVMCTQFMAaEiAAFsHDYBbAIA
+        AccCrAHVFdQC1QKsAccCAAFnAk0DUwNNElMCTQFnIQABoQE1HDYBNQKhAqwa1AKsAqECTQJTBE0UUwJN
+        AaEgAAGGHjYBhgHHAawBrRrUAa0BrAHHAYYBTQJTBE0WUwFNAYYgAAFsHjYBbAHHAawc1AGsAccBjAFN
+        AVMETRdTAU0BjCAAAWweNgFsAccBrBzUAawBxwFnAU0BUwNNGFMBTQFnIAABbAw2AXkBVxA2AWwBxwGs
+        B9QC3BPUAawBxwFnBE0FUwGaA/8BmgJTAZoD/wGaCFMBTQFnIAABbAs2AVcB9gHDEDYBbAHHAawH1AHc
+        Af8B9AHcEdQBrAHHAWcDTQZTAZoD/wEaAlMBGgP/AZoIUwFNAWcgAAFsCzYBGwL/AZ8PNgFsAccBrAfU
+        AdwD/wH0AdwP1AGsAccBZwJNB1MBmgP/ARoCUwEaA/8BmghTAU0BZyAAAWwKNgGfBP8BeQ42AWwBxwGs
+        B9QB3AX/AfQB3A3UAawBxwFnAU0IUwGaA/8BGgJTARoD/wGaCFMBTQFnIAABbAk2AVgF/wH2AVgNNgFs
+        AccBrAfUAdwH/wH0AdwL1AGsAccBZwFNCFMBmgP/ARoCUwEaA/8BmghTAU0BZyAAAWwINgFXAfYC/wHC
+        AXkC/wHDDTYBbAHHAawH1AHcCf8B9AHcCdQBrAHHAWcBTQhTAZoD/wEaAlMBGgP/AZoIUwFNAWcgAAFs
+        CDYBnwL/AfYBVwE2AZ8C/wGfDDYBbAHHAawH1AHcC/8B9AHbB9QBrAHHAWcBTQhTAZoD/wEaAlMBGgP/
+        AZoIUwFNAWcgAAFsCDYBWAL/AXkDNgHDAv8BeQs2AWwBxwGsB9QBCQr/ARkB2wjUAawBxwFnAU0IUwGa
+        A/8BGgJTARoD/wGaCFMBTQFnIAABbAk2AXkBnwQ2AVgC/wH2AVgKNgFsAccBrAfUAQkI/wH0AdsK1AGs
+        AccBZwFNCFMBmgP/ARoCUwEaA/8BmghTAU0BZyAAAWwQNgF+Av8Bwwo2AWwBxwGsB9QBCQb/AfQB3AzU
+        AawBxwFnAU0IUwGaA/8BGgJTARoD/wGaCFMBTQFnIAABbBE2ARsC/wGfCTYBbAHHAawH1AEJBf8B3A7U
+        AawBxwFnAU0IUwGaA/8BGgJTARoD/wGaCFMBTQFnIAABbBE2AVcB9gL/AXkINgFsAccBrAfUAQkD/wHc
+        ENQBrAHHAWcBTQhTAZoD/wEaAlMBGgP/AZoIUwFNAWcgAAFsEjYBeQL/AZ8GNgE3ATYBbAHHAawH1AEJ
+        Af8BCRLUAawBxwFnAU0IUwF1AxoBegJTAXoDGgF6CFMBTQFnIAABbBM2AZ8B9gFYBTYCNwE2AWwBxwGs
+        B9QB2wHVE9QBrAHHAWcBTRxTAU0BZyAAAWwUNgFYBTYCNwI2AWwBxwGsHNQBrAHHAWcBTRxTAU0BZyAA
+        AWwZNgM3AjYBbAHHAawc1AGsAccBjAFNHFMBTQGMIAABhgI2ATcVNgQ3AjYBhgHHAawBrQHVGNQB2wGt
+        AawBxwGGAU0cUwFNAYYgAAGhATUBNgI3EzYENwI2ATUCoQKsAdQB2xbUAdsB1AKsAqECTQFTAXUWUwF1
+        AVMCTQGhIQABbAI2ATcBOxY3AjYBbAIAAccCrAHVAtsR1APbAdUCrAHHAgABZwJNA3oSUwJ6AXUCTQFn
+        IgABoQFQAjYBNxQ7AzYBUAGhAgABoQOsAdQU2wHUA6wBoQIAAaEBTAJNAVMUegFTAk0BTAGhIwABoQFQ
+        BTYONwU2AVABoQQAAaEErAKzDtQCswSsAaEEAAHEAUwDTRJTA00BTAHEJQABoQFsATUUNgE1AWwBoQYA
+        AaEBxxasAccBoQYAAaEBZxZNAWcBoSgAAaEBhhJsAYYBoQoAAaEUxwGhCgABoQGGAYwQZwGMAYYBoSUA
+        AUIBTQE+BwABPgMAASgDAAGAAwABIAMAAQEBAAEBBgABAhYAA/8BAAH4AgABHwH4AgABHwH4AgABHwQA
+        AeACAAEHAeACAAEHAeACAAEHBAABwAIAAQMBwAIAAQMBwAIAAQMEAAGAAgABAQGAAgABAQGAAgABAQQA
+        AYACAAEBAYACAAEBAYACAAEB/wBlAAGAAgABAQGAAgABAQGAAgABAQQAAYACAAEBAYACAAEBAYACAAEB
+        BAABwAIAAQMBwAIAAQMBwAIAAQMEAAHgAgABBwHgAgABBwHgAgABBwQAAfgCAAEfAfgCAAEfAfgCAAEf
+        BAAL
+</value>
+  </data>
+  <metadata name="timerSyncronize.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>341, 9</value>
+  </metadata>
+  <metadata name="fileSystemWatcher1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>462, 9</value>
+  </metadata>
+  <metadata name="updaterWoker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>286, 48</value>
+  </metadata>
+  <metadata name="contextMenuJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>144, 48</value>
+  </metadata>
+  <metadata name="ilSmallImgJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 48</value>
+  </metadata>
+  <data name="ilSmallImgJob.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABq
+        CQAAAk1TRnQBSQFMAgEBAwEAAXQBAAF0AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wMAAWwKNgE1AaEDAAHH
+        C6wBoQMAAWcLTQGhEgABUAE2AjcCNgY3AjYBoQEAAqwC2wfVAdsB1AGsAaEBAAFMAU0CWQJTBlkBUwFN
+        AaEQAAGhDjYBNQGhAawN1AGsAaEBTQFTAk0KUwFNEAABbA82AccO1AGsAYwBUwJNC1MBTRAAAWwGNgFX
+        CDYBxwTUAdwJ1AGsAWcCTQJTAZoB/wGaAVMC/wRTAU0QAAFsBTYBGwH/CDYBxwTUAv8B3AfUAawBZwFN
+        A1MBmgH/ARoBUwL/BFMBTRAAAWwENgFYAv8B9gc2AccE1AT/AdwF1AGsAWcEUwGaAf8BGgFTAv8EUwFN
+        EAABbAQ2Af8B9gE2Af8BnwY2AccE1Ab/AdsD1AGsAWcEUwGaAf8BGgFTAv8EUwFNEAABbAQ2AXkCNgFY
+        Af8BWAU2AccE1AT/AfQF1AGsAWcEUwGaAf8BGgFTAv8EUwFNEAABbAg2ARsB/wU2AccE1AP/B9QBrAFn
+        BFMBmgH/ARoBUwL/BFMBTRAAAWwJNgH/AZ8ENgHHBNQB/wnUAawBZwRTAXUBGgF6AVMCGgRTAU0QAAFs
+        DTYBNwE2AccO1AGsAWcOUwFNEAABhgw2AjcBNgHHAa0M1AHbAawBhg5TAU0RAAE2DDcBNgFsAQABrAHV
+        AdsI1ALbAawBxwEAAU0CeglTAXoBTQFnEQABoQM2BzcCNgFQAgABoQKsAbMH1AGzAqwCAAHEAk0JUwFN
+        AUwUAAGGCWwBoQUACscBoQUAAYYIZwGMAaESAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUA
+        AYAXAAP/AQABwAEBAcABAQHAAQECAAGAAQABgAEAAYBbAAGAAQABgAEAAYADAAGAAQEBgAEBAYABAQIA
+        AeABAwHgAQMB4AEDAgAL
+</value>
+  </data>
+  <metadata name="AbortContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>621, 9</value>
+  </metadata>
+  <metadata name="ilSmallImgClient.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>961, 9</value>
+  </metadata>
+  <data name="ilSmallImgClient.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABy
+        DAAAAk1TRnQBSQFMAgEBBAEAAXQBAAF0AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8ABQAFNQFW
+        AQcC8AG8AXgBVgQ1BSwBUgEHAvABvAF0AU0ELAVAAWkBBwLwAbwBbwVABpIBBwHwArwGkgQ1Ae8BvAHw
+        AfEC8AIHAVABLgI0BCwBmQG8AfAB8QLwAgcBbgIrASwEQAGTAbwB8AHxAvACBwFoAekBIAFABJIBBwG8
+        AfAB8QLwAgcB7AOSAzUBVgIHAbwB8AG8AQcB7wLtAzQDLAFTAgcBvAHwAbwBBwHvAe0BHAIrASwEQAIH
+        AbwB8AG8AQcB7wLtAiABQASSAgcBvAHwAbwBBwHvAe0B9wOSBDUBVgPvAewBbQHrAvcB7wI0BCwBTAEH
+        Au8B7AFtAesB9wEcAe8CLARAAUYD7wHsAW0B6wH3ARwB7wJABZID7wHsAW0B6wL3Ae8CkgU1ATQBUAHs
+        Ae0BBwG8AQcB9wEHAjUGLAFMAewB7QEHAbwBBwH3AQcCLAZAAUUB7AHtAQcBvAEHAfcBBwJAB5IB7AHt
+        AQcBvAEHAfcBBwKSATUBVgHsAfcCBwHvAewBFAFDAREBQwEUAbwBVgE1ASwBTAHsAe8CBwHvAewBFAFD
+        AREBQwEUAbwBUwEsAUABRgFuAfcCBwHvAewBFAFDAREBQwEUAbwBRgFAApIB7AH3AgcB7wHsARQBQwER
+        AUMBFAG8ApIBNQH3AewBFQIPARABEQEVARMDEgG8AVYBNQEsAfcB7AEVAg8BEAERARUBEwMSAbwBUgEs
+        AUAB9wHsARUCDwEQAREBFQETAxIBvAFGAUABkgH3AewBFQIPARABEQEVARMDEgG8ApIBNQHvAxEBEAER
+        AUMBEwJtAusBBwGXATUBLAHvAxEBEAERAUMBEwJtAusBBwF0ASwBQAHvAxEBEAERAUMBEwJtAusBBwFv
+        AUABkgHvAxEBEAERAUMBEwJtAusBBwHtAZIBNQHvARUBFAIRAkMBbQLsAu0BBwFzATUBLAHvARUBFAIR
+        AkMBbQLsAu0BBwEcASwBQAHvARUBFAIRAkMBbQLsAu0BBwFuAUABkgHvARUBFAIRAkMBbQLsAu0BBwHt
+        AZIBNQGYARQB6gIRAUMBFQHsAfcE7wHtATUBLAGZARQB6gIRAUMBFQHsAfcE7wEcASwBQAGTARQB6gIR
+        AUMBFQHsAfcE7wHtAUABkgHvARQB6gIRAUMBFQHsAfcE7wH3AZIBNQF4ARMBEgERAUMBFQEUAe8DBwG8
+        AQcBkgE1ASwBdAETARIBEQFDARUBFAHvAwcBvAEHARwBLAFAAW8BEwESAREBQwEVARQB7wMHAbwBBwGS
+        AUAB7QGSARMBEgERAUMBFQEUAe8DBwG8AQcB9wGSATUBVgESAkMBFQEUAeoD8ALxAQcB7wE1ASwBUwES
+        AkMBFQEUAeoD8ALxAQcB7wEsAUABRgESAkMBFQEUAeoD8ALxAQcB7wFAAe0BkgESAkMBFQEUAeoD8ALx
+        AQcB7wGSAjUBEgERAUMBFQEUAewD8gLzAfEBvAE1ASwBTQESAREBQwEVARQB7APyAvMB8QG8ASwCQAES
+        AREBQwEVARQB7APyAvMB8QG8AUACkgESAREBQwEVARQB7APyAvMB8QG8AZICNQHsAREBQwEVARQB7wHx
+        ArwCBwG8AfEBNQIsAewBEQFDARUBFAHvAfECvAIHAbwB8QFNAkAB7AERAUMBFQEUAe8B8QK8AgcBvAHx
+        AUACkgHsAREBQwEVARQB7wHxArwDBwHxAZICNQH3ARQBbQGSAQcBvAEIAZkBmAJ4AlYBNQIsAfcBFAFt
+        AZIBBwG8AQcBmQGTAXQBdQJTASwCQAH3ARQBbQGSAQcBvAEHApMBjgFvAkYBQAKSAfcBFAFtAZIBBwG8
+        AQgB9waSAjUDVgs1AiwDUwssAkACaQFGC0AQkgFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYA
+        AQEWAAP//wACAAs=
+</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAABcPgAA
+        XD4BFAM/EwAAA3hJREFUSEu1ls1PE2EQxj229ouPVNErgZOJicZDjR68mHg1JgYvxov/gIlHxARBoxGU
+        KlJUVJDypVIQKkXBpIootoC0tLS0pZEIiILfikAfZ5Zuu9sWaDQ2edLt7vvOrzPzzsxuALBBquIeRR7p
+        CKmQVJSmeC3vyUu0FzNOD3NIFhJYpU8VuGBXpiVeK+6L2sgRQQKAbm4hTZ/pVcA8ooN9Ug/H7GY4Z3PS
+        Eq/lPbyXbbAttsm2RUB7CT3oDmXj+Ts9uiay0B7IQFtU7YFMPAxmoiMUl5WurRMrsoWz0DuZjb4pPWxk
+        g20RoF0A0EU+u2d2aWEZz8Adlxq3R9SodWlQ59bg7qgG9SSzR4tGrxZNYytqId3z6XDfr8MDUuu4Dhb6
+        Q7ZwJupHtGLI8hlQwG7xhpo3atwi4wz4F4g1lCGGqoABhWXPlbgxrBa0HqTBqyMPWHFPXk4dRXd4p8yT
+        8j4le1HIgCLjSyWuD6nWhNhC+zHz3Y6lyHcsR35h7qcDg+9PwjdvpFADT8J7ZeEyOVQMOCUAKghgGlSt
+        Cnk2eVwwstbncXiPLCfVzo1xwOV+JaqcqpSQNr8BXxYCGJw5ja7gflj82zEwfQIRLMp43QSQJt7kkAAu
+        EeBaFFAtCdVNSnpHYB+dpmwh6XeiJ8v94WKSMwxolpysKjlAIQBWg0hPVk/4ED4tePB5YUzQl99+fP0d
+        wKOJXULiRYgMUN6vQCURRUidK5dCchZDM+fou5RUgqH3JRSiAzJPuEZYXCMNkhphSNVrSYjKXyhwhQAi
+        pMW7OykEsz9eU6g2xWqEw9Xo3SoAUkGuJQKMdEOEJAI4oa0+AzgnHK5W3w54P5pgf3ssVu2JEBmgjDxg
+        gAhp9hiSPFiOLODjz2H8WJwWnoU+tQhJFxOf6IkMcLFPgYqBFQCrKQqY/+XF9Ld+GSyCJbhnK1Drzlqz
+        pVSSPbHQCs/bFbj0ShmDNI4a4J9rosLTC4k3u7fBFjxMST4I82huWi2lTNIqCoqp2RkH4pBKp07w5Kok
+        8asVYurmqAbb5EYaa9eVBLhMXkg9+RtInVsNkyM24fJjA4db9t2RjagZ5tMUD1e6kFqaI40eNRrcKrFV
+        rwycxJF5nbpg65gG1qCG2oQ2pk667gzKZaXfrK6QBm0+DW5QvlKOzCgkaeifp6HPWm/4rzv0/+dryx8H
+        ysmLkjulowAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <metadata name="contextMenuGroup.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>803, 9</value>
+  </metadata>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobDataFetcher.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobDataFetcher.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobDataFetcher.cs	(revision 4073)
@@ -0,0 +1,88 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Timers;
+using HeuristicLab.Hive.Contracts;
+using System.Collections;
+using System.Threading;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  public class JobDataFetcher {
+    public List<State> PollStates { get; set; }    
+
+    public event EventHandler NewDataAvailable;
+
+    private System.Timers.Timer timer;
+
+    public List<JobDto> CachedJobs { get; set; }
+
+    public double Interval {
+      get { return timer.Interval; }
+      set { timer.Interval = value; }
+    }
+
+    private int _nrOfEntriesOnPage;
+    public int NrOfEntriesOnPage {
+      get {
+        return _nrOfEntriesOnPage;
+      }
+      set {
+        Console.WriteLine("Setting for " + PollStates + " changed to: " + value);        
+        _nrOfEntriesOnPage = value;        
+        Thread t = new Thread(new ThreadStart(DoUpdateRun));
+        t.Start();        
+      }
+    }    
+    public int CurrentPage { get; set; }
+
+    public JobDataFetcher(IEnumerable<State> states, int nrOfEntries) {
+      PollStates = new List<State>();
+      CachedJobs = new List<JobDto>();
+      NrOfEntriesOnPage = nrOfEntries;
+      CurrentPage = 0;
+      PollStates.AddRange(states);
+      timer = new System.Timers.Timer();
+      timer.Interval = 5000;
+      timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);      
+    }
+
+    public void Start() {
+      timer.Start();
+    }
+
+    public void Forward() {
+      CurrentPage++;
+      DoUpdateRun();
+    }
+    public void Backward() {
+      if (CurrentPage != 0)
+        CurrentPage--;
+      DoUpdateRun();
+    } 
+
+    private void Timer_Elapsed(object sender, ElapsedEventArgs e) {
+      DoUpdateRun();
+    }
+
+    private void DoUpdateRun() {      
+      foreach (State stat in PollStates) {
+        ResponseList<JobDto> resList = ServiceLocator.GetJobManager().GetAllJobsWithFilter(stat, CurrentPage * NrOfEntriesOnPage,
+                                                            NrOfEntriesOnPage);
+        if (resList.Success) {
+          if (resList.List.Count == 0) {
+            if (CurrentPage > 0) {
+              CurrentPage--;
+            }
+          } else {
+            CachedJobs = new List<JobDto>();
+            CachedJobs.AddRange(resList.List);
+          }
+        }
+      }
+      if (NewDataAvailable != null)
+        NewDataAvailable(this, new EventArgs());
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.cs	(revision 4073)
@@ -0,0 +1,138 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Contracts.Interfaces;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  public class JobListView : ListView {
+    private ContextMenuStrip contextMenuJob;
+    private System.ComponentModel.IContainer components;
+    private ToolStripMenuItem menuItemAbortJob;
+    private ToolStripMenuItem menuItemGetSnapshot;
+    private ImageList ilLargeImgJob;
+    private ImageList ilSmallImgJob;
+
+    public int NrOfEntriesOnPage { 
+      get {
+        return jdf.NrOfEntriesOnPage;
+      } 
+      set {
+        jdf.NrOfEntriesOnPage = value;
+      }
+    }
+
+
+    private JobDataFetcher jdf;
+
+    public JobListView(IEnumerable<State> states, int nrOfEntries)
+      : base() {
+      InitializeComponent();
+      InitializeCustomControls();
+      jdf = new JobDataFetcher(states, nrOfEntries);
+      jdf.NewDataAvailable += new EventHandler(JdfNewDataAvailable);
+      jdf.Start();
+    }
+
+    private void JdfNewDataAvailable(object sender, EventArgs e) {
+      JobDataFetcher datafetcher = (JobDataFetcher) sender;
+      this.BeginUpdate();
+      if (datafetcher.PollStates.Contains(State.finished)) {
+        this.Items.Clear();
+        ListViewItem lviDummy = new ListViewItem("blahr", 0);
+        this.Items.Add(lviDummy);
+        foreach (JobDto job in datafetcher.CachedJobs) {
+          ListViewItem lvi = new ListViewItem(job.Id.ToString(), 0);
+          lvi.Tag = job;
+          this.Items.Add(lvi);
+        }
+      }
+      this.EndUpdate();
+    }
+
+    public void Forward() {
+      jdf.Forward();
+    }
+
+    public void Backward() {
+      jdf.Backward();
+    }
+
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(JobListView));
+      this.contextMenuJob = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.menuItemAbortJob = new System.Windows.Forms.ToolStripMenuItem();
+      this.menuItemGetSnapshot = new System.Windows.Forms.ToolStripMenuItem();
+      this.ilLargeImgJob = new System.Windows.Forms.ImageList(this.components);
+      this.ilSmallImgJob = new System.Windows.Forms.ImageList(this.components);
+      this.contextMenuJob.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // contextMenuJob
+      // 
+      this.contextMenuJob.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.menuItemAbortJob,
+            this.menuItemGetSnapshot});
+      this.contextMenuJob.Name = "contextMenuJob";
+      this.contextMenuJob.Size = new System.Drawing.Size(145, 48);
+      // 
+      // menuItemAbortJob
+      // 
+      this.menuItemAbortJob.Name = "menuItemAbortJob";
+      this.menuItemAbortJob.Size = new System.Drawing.Size(144, 22);
+      this.menuItemAbortJob.Text = "Abort";
+      // 
+      // menuItemGetSnapshot
+      // 
+      this.menuItemGetSnapshot.Name = "menuItemGetSnapshot";
+      this.menuItemGetSnapshot.Size = new System.Drawing.Size(144, 22);
+      this.menuItemGetSnapshot.Text = "Get Snapshot";
+      // 
+      // ilLargeImgJob
+      // 
+      this.ilLargeImgJob.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilLargeImgJob.ImageStream")));
+      this.ilLargeImgJob.TransparentColor = System.Drawing.Color.Transparent;
+      this.ilLargeImgJob.Images.SetKeyName(0, "ok.png");
+      this.ilLargeImgJob.Images.SetKeyName(1, "Forward.png");
+      this.ilLargeImgJob.Images.SetKeyName(2, "pause.png");
+      // 
+      // ilSmallImgJob
+      // 
+      this.ilSmallImgJob.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilSmallImgJob.ImageStream")));
+      this.ilSmallImgJob.TransparentColor = System.Drawing.Color.Transparent;
+      this.ilSmallImgJob.Images.SetKeyName(0, "ok.png");
+      this.ilSmallImgJob.Images.SetKeyName(1, "Forward.png");
+      this.ilSmallImgJob.Images.SetKeyName(2, "pause.png");
+      // 
+      // JobListView
+      // 
+      this.LargeImageList = this.ilLargeImgJob;
+      this.SmallImageList = this.ilSmallImgJob;
+      this.contextMenuJob.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    private void InitializeCustomControls() {
+      menuItemAbortJob.Click += (s, e) => {
+                                  IJobManager jobManager = ServiceLocator.GetJobManager();
+                                  if (this.SelectedItems.Count == 1) {
+                                    jobManager.AbortJob(((JobDto) (this.SelectedItems[0].Tag)).Id);
+                                  }
+                                };
+
+      //adding context menu items for jobs
+      menuItemGetSnapshot.Click += (s, e) => {
+                                     IJobManager jobManager = ServiceLocator.GetJobManager();
+                                     if (this.SelectedItems.Count == 1) {
+                                       jobManager.RequestSnapshot(((JobDto) (this.SelectedItems[0].Tag)).Id);
+                                     }
+                                   };
+      
+      
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListView.resx	(revision 4073)
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="contextMenuJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="ilLargeImgJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>152, 21</value>
+  </metadata>
+  <data name="ilLargeImgJob.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO
+        DgAAAk1TRnQBSQFMAgEBAwEAAVQBAAFUAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABgAMAASADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wYAAaEBhhJsAYYBoQoA
+        AaEUxwGhCgABoQGGAYwQZwGMAYYBoSgAAaEBbAE1FDYBNQFsAaEGAAGhAccWrAHHAaEGAAGhAWcWTQFn
+        AaElAAGhAVAYNgFQAaEEAAGhBKwCsw7UArMErAGhBAABxAFMA00SUwNNAUwBxCMAAaEBUAM2AzcENg03
+        AzYBUAGhAgABoQOsAdQD2w7VA9sB1AOsAaECAAGhAUwCTQFTA1kFUwxZAVMCTQFMAaEiAAFsHDYBbAIA
+        AccCrAHVFdQC1QKsAccCAAFnAk0DUwNNElMCTQFnIQABoQE1HDYBNQKhAqwa1AKsAqECTQJTBE0UUwJN
+        AaEgAAGGHjYBhgHHAawBrRrUAa0BrAHHAYYBTQJTBE0WUwFNAYYgAAFsHjYBbAHHAawc1AGsAccBjAFN
+        AVMETRdTAU0BjCAAAWweNgFsAccBrBzUAawBxwFnAU0BUwNNGFMBTQFnIAABbAw2AXkBVxA2AWwBxwGs
+        B9QC3BPUAawBxwFnBE0FUwGaA/8BmgJTAZoD/wGaCFMBTQFnIAABbAs2AVcB9gHDEDYBbAHHAawH1AHc
+        Af8B9AHcEdQBrAHHAWcDTQZTAZoD/wEaAlMBGgP/AZoIUwFNAWcgAAFsCzYBGwL/AZ8PNgFsAccBrAfU
+        AdwD/wH0AdwP1AGsAccBZwJNB1MBmgP/ARoCUwEaA/8BmghTAU0BZyAAAWwKNgGfBP8BeQ42AWwBxwGs
+        B9QB3AX/AfQB3A3UAawBxwFnAU0IUwGaA/8BGgJTARoD/wGaCFMBTQFnIAABbAk2AVgF/wH2AVgNNgFs
+        AccBrAfUAdwH/wH0AdwL1AGsAccBZwFNCFMBmgP/ARoCUwEaA/8BmghTAU0BZyAAAWwINgFXAfYC/wHC
+        AXkC/wHDDTYBbAHHAawH1AHcCf8B9AHcCdQBrAHHAWcBTQhTAZoD/wEaAlMBGgP/AZoIUwFNAWcgAAFs
+        CDYBnwL/AfYBVwE2AZ8C/wGfDDYBbAHHAawH1AHcC/8B9AHbB9QBrAHHAWcBTQhTAZoD/wEaAlMBGgP/
+        AZoIUwFNAWcgAAFsCDYBWAL/AXkDNgHDAv8BeQs2AWwBxwGsB9QBCQr/ARkB2wjUAawBxwFnAU0IUwGa
+        A/8BGgJTARoD/wGaCFMBTQFnIAABbAk2AXkBnwQ2AVgC/wH2AVgKNgFsAccBrAfUAQkI/wH0AdsK1AGs
+        AccBZwFNCFMBmgP/ARoCUwEaA/8BmghTAU0BZyAAAWwQNgF+Av8Bwwo2AWwBxwGsB9QBCQb/AfQB3AzU
+        AawBxwFnAU0IUwGaA/8BGgJTARoD/wGaCFMBTQFnIAABbBE2ARsC/wGfCTYBbAHHAawH1AEJBf8B3A7U
+        AawBxwFnAU0IUwGaA/8BGgJTARoD/wGaCFMBTQFnIAABbBE2AVcB9gL/AXkINgFsAccBrAfUAQkD/wHc
+        ENQBrAHHAWcBTQhTAZoD/wEaAlMBGgP/AZoIUwFNAWcgAAFsEjYBeQL/AZ8GNgE3ATYBbAHHAawH1AEJ
+        Af8BCRLUAawBxwFnAU0IUwF1AxoBegJTAXoDGgF6CFMBTQFnIAABbBM2AZ8B9gFYBTYCNwE2AWwBxwGs
+        B9QB2wHVE9QBrAHHAWcBTRxTAU0BZyAAAWwUNgFYBTYCNwI2AWwBxwGsHNQBrAHHAWcBTRxTAU0BZyAA
+        AWwZNgM3AjYBbAHHAawc1AGsAccBjAFNHFMBTQGMIAABhgI2ATcVNgQ3AjYBhgHHAawBrQHVGNQB2wGt
+        AawBxwGGAU0cUwFNAYYgAAGhATUBNgI3EzYENwI2ATUCoQKsAdQB2xbUAdsB1AKsAqECTQFTAXUWUwF1
+        AVMCTQGhIQABbAI2ATcBOxY3AjYBbAIAAccCrAHVAtsR1APbAdUCrAHHAgABZwJNA3oSUwJ6AXUCTQFn
+        IgABoQFQAjYBNxQ7AzYBUAGhAgABoQOsAdQU2wHUA6wBoQIAAaEBTAJNAVMUegFTAk0BTAGhIwABoQFQ
+        BTYONwU2AVABoQQAAaEErAKzDtQCswSsAaEEAAHEAUwDTRJTA00BTAHEJQABoQFsATUUNgE1AWwBoQYA
+        AaEBxxasAccBoQYAAaEBZxZNAWcBoSgAAaEBhhJsAYYBoQoAAaEUxwGhCgABoQGGAYwQZwGMAYYBoSUA
+        AUIBTQE+BwABPgMAASgDAAGAAwABIAMAAQEBAAEBBgABAhYAA/8BAAH4AgABHwH4AgABHwH4AgABHwQA
+        AeACAAEHAeACAAEHAeACAAEHBAABwAIAAQMBwAIAAQMBwAIAAQMEAAGAAgABAQGAAgABAQGAAgABAQQA
+        AYACAAEBAYACAAEBAYACAAEB/wBlAAGAAgABAQGAAgABAQGAAgABAQQAAYACAAEBAYACAAEBAYACAAEB
+        BAABwAIAAQMBwAIAAQMBwAIAAQMEAAHgAgABBwHgAgABBwHgAgABBwQAAfgCAAEfAfgCAAEfAfgCAAEf
+        BAAL
+</value>
+  </data>
+  <metadata name="ilSmallImgJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>280, 21</value>
+  </metadata>
+  <data name="ilSmallImgJob.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABq
+        CQAAAk1TRnQBSQFMAgEBAwEAAVQBAAFUAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wMAAWwKNgE1AaEDAAHH
+        C6wBoQMAAWcLTQGhEgABUAE2AjcCNgY3AjYBoQEAAqwC2wfVAdsB1AGsAaEBAAFMAU0CWQJTBlkBUwFN
+        AaEQAAGhDjYBNQGhAawN1AGsAaEBTQFTAk0KUwFNEAABbA82AccO1AGsAYwBUwJNC1MBTRAAAWwGNgFX
+        CDYBxwTUAdwJ1AGsAWcCTQJTAZoB/wGaAVMC/wRTAU0QAAFsBTYBGwH/CDYBxwTUAv8B3AfUAawBZwFN
+        A1MBmgH/ARoBUwL/BFMBTRAAAWwENgFYAv8B9gc2AccE1AT/AdwF1AGsAWcEUwGaAf8BGgFTAv8EUwFN
+        EAABbAQ2Af8B9gE2Af8BnwY2AccE1Ab/AdsD1AGsAWcEUwGaAf8BGgFTAv8EUwFNEAABbAQ2AXkCNgFY
+        Af8BWAU2AccE1AT/AfQF1AGsAWcEUwGaAf8BGgFTAv8EUwFNEAABbAg2ARsB/wU2AccE1AP/B9QBrAFn
+        BFMBmgH/ARoBUwL/BFMBTRAAAWwJNgH/AZ8ENgHHBNQB/wnUAawBZwRTAXUBGgF6AVMCGgRTAU0QAAFs
+        DTYBNwE2AccO1AGsAWcOUwFNEAABhgw2AjcBNgHHAa0M1AHbAawBhg5TAU0RAAE2DDcBNgFsAQABrAHV
+        AdsI1ALbAawBxwEAAU0CeglTAXoBTQFnEQABoQM2BzcCNgFQAgABoQKsAbMH1AGzAqwCAAHEAk0JUwFN
+        AUwUAAGGCWwBoQUACscBoQUAAYYIZwGMAaESAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUA
+        AYAXAAP/AQABwAEBAcABAQHAAQECAAGAAQABgAEAAYBbAAGAAQABgAEAAYADAAGAAQEBgAEBAYABAQIA
+        AeABAwHgAQMB4AEDAgAL
+</value>
+  </data>
+  <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>False</value>
+  </metadata>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.Designer.cs	(revision 4073)
@@ -0,0 +1,118 @@
+﻿namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class JobListViewControl {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.comboBox1 = new System.Windows.Forms.ComboBox();
+      this.btn_finishedJob_next = new System.Windows.Forms.Button();
+      this.btn_finishedJob_prev = new System.Windows.Forms.Button();
+      this.listView1 = new JobListView(null, 5);
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer1.Name = "splitContainer1";
+      this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.comboBox1);
+      this.splitContainer1.Panel1.Controls.Add(this.btn_finishedJob_next);
+      this.splitContainer1.Panel1.Controls.Add(this.btn_finishedJob_prev);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.listView1);
+      this.splitContainer1.Size = new System.Drawing.Size(586, 479);
+      this.splitContainer1.SplitterDistance = 31;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // comboBox1
+      // 
+      this.comboBox1.FormattingEnabled = true;
+      this.comboBox1.Items.AddRange(new object[] {
+            "25",
+            "50",
+            "75",
+            "100"});
+      this.comboBox1.Location = new System.Drawing.Point(165, 3);
+      this.comboBox1.Name = "comboBox1";
+      this.comboBox1.Size = new System.Drawing.Size(48, 21);
+      this.comboBox1.TabIndex = 5;
+      // 
+      // btn_finishedJob_next
+      // 
+      this.btn_finishedJob_next.Location = new System.Drawing.Point(84, 3);
+      this.btn_finishedJob_next.Name = "btn_finishedJob_next";
+      this.btn_finishedJob_next.Size = new System.Drawing.Size(75, 23);
+      this.btn_finishedJob_next.TabIndex = 4;
+      this.btn_finishedJob_next.Text = "-->";
+      this.btn_finishedJob_next.UseVisualStyleBackColor = true;
+      // 
+      // btn_finishedJob_prev
+      // 
+      this.btn_finishedJob_prev.Location = new System.Drawing.Point(3, 3);
+      this.btn_finishedJob_prev.Name = "btn_finishedJob_prev";
+      this.btn_finishedJob_prev.Size = new System.Drawing.Size(75, 23);
+      this.btn_finishedJob_prev.TabIndex = 3;
+      this.btn_finishedJob_prev.Text = "<--";
+      this.btn_finishedJob_prev.UseVisualStyleBackColor = true;
+      // 
+      // listView1
+      // 
+      this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.listView1.Location = new System.Drawing.Point(0, 0);
+      this.listView1.Name = "listView1";
+      this.listView1.Size = new System.Drawing.Size(586, 444);
+      this.listView1.TabIndex = 0;
+      this.listView1.UseCompatibleStateImageBehavior = false;
+      // 
+      // JobListViewControl
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.splitContainer1);
+      this.Name = "JobListViewControl";
+      this.Size = new System.Drawing.Size(586, 479);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.ComboBox comboBox1;
+    private System.Windows.Forms.Button btn_finishedJob_next;
+    private System.Windows.Forms.Button btn_finishedJob_prev;
+    private System.Windows.Forms.ListView listView1;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.cs	(revision 4073)
@@ -0,0 +1,16 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  public partial class JobListViewControl : UserControl {
+    public JobListViewControl() {
+      InitializeComponent();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobListViewControl.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.Designer.cs	(revision 4073)
@@ -0,0 +1,77 @@
+﻿namespace HeuristicLab.Hive.Server.ServerConsole {
+  partial class LogonDlg {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LogonDlg));
+      this.pictureBox1 = new System.Windows.Forms.PictureBox();
+      this.label1 = new System.Windows.Forms.Label();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // pictureBox1
+      // 
+      this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+      this.pictureBox1.Location = new System.Drawing.Point(12, 12);
+      this.pictureBox1.Name = "pictureBox1";
+      this.pictureBox1.Size = new System.Drawing.Size(97, 77);
+      this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
+      this.pictureBox1.TabIndex = 0;
+      this.pictureBox1.TabStop = false;
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.label1.ForeColor = System.Drawing.Color.White;
+      this.label1.Location = new System.Drawing.Point(115, 37);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(276, 25);
+      this.label1.TabIndex = 1;
+      this.label1.Text = "Connecting... Please stand by.";
+      // 
+      // LogonDlg
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.BackColor = System.Drawing.Color.RoyalBlue;
+      this.ClientSize = new System.Drawing.Size(450, 101);
+      this.Controls.Add(this.label1);
+      this.Controls.Add(this.pictureBox1);
+      this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
+      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+      this.Name = "LogonDlg";
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+      this.Text = "LogonDlg";
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.PictureBox pictureBox1;
+    private System.Windows.Forms.Label label1;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.cs	(revision 4073)
@@ -0,0 +1,16 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  public partial class LogonDlg : Form {
+    public LogonDlg() {
+      InitializeComponent();
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/LogonDlg.resx	(revision 4073)
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        R0lGODlhUAAyALMAAP//////AMDAwICAgICAAP8A//8AAIAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAA
+        ACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJEAAJACwKABIAHgAWAAAErDDJFCqoYerNJ74W1o1eAJqfSHJn
+        m1ZriYbBcNwHAsdzfxhAYE7Ho5kOg6ByuOpdDgLBIGnA4RCklw0AiNqgUcENO2odCgUBFymdTm/Z2Q+d
+        hk7D0lz8GCwgBlIAgG4DZGUVP0F/CF2CA1wCCIYdJjaKhY1qhZKbTTgGi11RjaJSkjFXhXhqaqWFMQlX
+        CKusbVOTJJKctISvsBt3Yb24vxLBw8Ujd27EyRq6ZBEAIfkECRAACQAsCQANACAAGwAABMEwSRkCqLbO
+        zfusF4iFgWcmYpqpJ0e+Y6y18mrD5XnXeKarvZ4uKBscjsdBrsMrHg0H6BFh2qkGBQN0i6R6gCOjAMuV
+        HryuZuAgAIyzyG61hy20x0eBXjCt7qIFdgAHA2MDh3xoTCpRBoFQY3uRil8ijY4IAwgAhYeHlH5rl5mb
+        nAMAnKA/TwakbqkIpC0eT656r56qLV2ae7ifsx28CL6SmsHCZ5m+nsDIJoWGzbrPCZ3Nx9XQ2NnaHtjU
+        3gmxsRIRACH5BAkQAAkALBMACAAWACAAAAS7MMkZKqgza1nDtdhGgaQXiEn5mZa4vt2qxbR6ZmwOt6Ne
+        s7idD9QTCinCwWG5HJiKsWXBQGWGUrADQDCYGpiIG8ckOAi2Xer3EMZ1DobCmasGzy5w+ZbJR8wqcHFl
+        AwKFhUt+GXhUBQiFA5CQZYk4gWYDjoZcbChwCJhnAJFKlBqeoGgAoqUbbKChCLGsrZ+OW5qzprGFqoa5
+        G59zuCgahKG+xMVnowK/yqOQzsXQmMkZ1NXWE9DSIrKJEQAh+QQJEAAJACwbAAgAFQAgAAAEwDDJCYKt
+        d2pqA/YdsEnYZ2baFa5qoJ0tiCasbH/SXZ8JrMelnfBHhJkOyOTBGBocBIBBwUA9DJiHggAqpRqSMlrA
+        qeVOq8iBJQc4GMrR8xeJqEwCbq1yf0C4NHlIW4NKCAMbgVEDiwMCCHSHgAZ1V1uLCI59kRNuhleMA4aP
+        hiN9lABbCKKkpX0AAKqioayldagCl6qbIwm2lrO7vFe3l8HCr8ihxiOVjI7LG42gyrzRuKC01QnTxdoa
+        nt3e37HQEQAh+QQJEAAJACwiAAgAFgAgAAAEvzDJSUMA9tJdb8YWwFWgF2ZjUq6fxbVnrG1mzbrTbbed
+        rk87GQsohNWAmMFhuRwYMcSlACAoGJY/SeBQmFYN4OsOyJ0WrGBmjFKmotPNTIB9ZS7rS4SHfUAI/n9K
+        dno4En0CA4mJiAhMehx9A1SIAgiJjX0jkYoDjAONlgMjCABUfpefmyOfCJaIn6yJq5OdqK2ys4GvraEp
+        krqoiikJkgCLwcPEpYDIyb/MsKLOk4G9ycSdgdHXEqHN3Am81twRACH5BAkQAAkALCIADQAgABsAAATO
+        MMlJ6wwB4Iyt95uGiVz2gWOopsFJsWVMAq4kr3d3zjifnr0g7BMYHI7HAczH+RwKAoCgUDAclLmY5xmd
+        Vg1gbFZj4Uqp4PSVKdpakWnwwboMla2CvOAotxrEPFsHAgOFA4R8cwcIOU6EUnmHim+MQ06Gh4cIAwhv
+        i1ouAwBSm4SbCEifOqEACK4IhJycSKU1EqJ6mYWnR5uFtriRsbKoi4bAo1K6xIu+A8hdyruvzra3o12G
+        zsfW19G73N0UhVIA4L/iFpiy6OkW1O3uFBEAIfkEBRAACQAsIgASAB4AFgAABKowyUkrDRjgYHvX2QZy
+        3ieeIVlOaDC+KxsMR30MqbvF9GEIQEHh0NKsfAYAcFAoGAyH187js9WczydRSq0FBbWsDafDdAdotKCH
+        rHEtiNtX3balPIj0YK0exK0jHgNKAnl9eX92Lh1pCI59aIhWeyoTakGQjX41j2gVgwBKmZpxnWkUgwKE
+        fHp+pYZ6n6GqrI2Opp6MSoR6uKcraLu2sTGfvbADxXi3xMoVEQAh+QQJEAAJACwiABIAHgAWAAAEGzDJ
+        Sau9OOvNu/9gKI5kaZ5oqq5s675wLM9uBAAh+QQJEAAJACwiAA0AIAAbAAAEzzDJSesMAeCMgf3WpnVi
+        B34lqXLBSa0jK3tuMqc35sY83p++4AoUGByOxwEsCDoUBABBoWA4KHOyjxMqpRq+V6zGso1Ov2hrT6Wt
+        ItHfQ3VpqsgPgrzgGK8awj9keAOEAwJGd1UIOU2HUXmGiUeLQ02FhoYIAwhuB4sxNQMAUZqHmghInhs1
+        CaIIrwiHm5tImi2sonqYhKeThbiPh7KzqJ6/oaNRu8SemoTAXMq8sM4DrBKiUdKzl9bX2NpQvMffFITa
+        48/lFt3V6yDU6u8VEQAh+QQJEAAJACwiAAgAFgAgAAAExTDJSUMANtC9LfYZR2HflZViUq6nxbVgfL2s
+        jE61aWvT7vMJnTCH6f1yPczgwGQOYCYjUwAQFAxMpCRwKFCthjB2COR6AYVruBmjdL/qtTMDTBywTSae
+        iYhO+AKBgUt5fS5/CAIDi4uKCE19ABsHCANVigKVA4+UdRKUjI2bm6ADIggAVYmLlY+aIpsIlYqjsouw
+        lwO0ra+4g7u2pr6YrKEpCZYAoqPCKcmCxc3Ol4PMxxKWgo6318i61b3dmtHdFLLB5RIRACH5BAkQAAkA
+        LBsACAAVACAAAATAMMkJgq13amoD9h2wSdhnZtoVrmqgnS2IJqxsf9Jdnwmsx6Wd8EeEmQ7I5MEYGhwE
+        gEHBQD0MmIeCACqlGpIyWsCp5U6ryIElBzgYytHzF4moTAJurXJ/QLg0eUhbg0oIAxuBUQOLAwIIdIeA
+        BnVXW4sIjn2RE26GV4wDho+GI32UAFsIoqSlfQAAqqKhrKV1qAKXqpsjCbaWs7u8V7eXwcKvyKHGI5WM
+        jssbjaDKvNG4oLTVCdPF2hqe3d7fsdARACH5BAkQAAkALBMACAAWACAAAATCMEkJgq1h6p1w8BinWR8J
+        ZuJlrpd4qjA6sWVcbXX+fqNNh7OdUPYrWoK0wWG5HJRmtmXBQGUeJbrAASAYTA1MhAxTERwEXC8VfBD3
+        LAdDAd1dhzWVSnzOZfoROHBUcwcDAoeHS4B4WoMIhwORkWaLI3FgXY+IXW0iCXEIA48AAJJKlRugonQD
+        pKKeEm2raAAItqgisqObArgcbZqkiL4ioXSbxByGtMOwG4alkr3OE4amkcnK16/UEtvc3QnX2Z63ixEA
+        IfkECRAACQAsCQANACAAGwAABMEwSRkCqLbOzfusF4iFgWcmYpqpJ0e+Y6y18mrD5XnXeKarvZ4uKBsc
+        jsdBrsMrHg0H6BFh2qkGBQN0i6R6gCOjAMuVHryuZuAgAIyzyG61hy20x0eBXjCt7qIFdgAHA2MDh3xo
+        TCpRBoFQY3uRil8ijY4IAwgAhYeHlH5rl5mbnAMAnKA/TwakbqkIpC0eT656r56qLV2ae7ifsx28CL6S
+        msHCZ5m+nsDIJoWGzbrPCZ3Nx9XQ2NnaHtjU3gmxsRIRACH5BAUQAAkALAoAEgAeABYAAASsMMkUKqgB
+        zM27xJcFeuSXgahVduEpvsE6pe5w3AdSyVTbHoZgMKeT0QCHgXBJXLlOB4FgoDTgcIhSygYASG1RqeCW
+        9TyRhYKgm5xSqTetC5hWR6niaU6eAQYLCANTAIJvA2UkIX5BgQhehANdAgiIZoSLjY9rh5ScTjgGmWKP
+        Xl+UMliHeWtrpVOVJFgIq6xuVLAklJ20hoc8HXhivbi/CcHDxSR4b8TJE7plEQAh+QQJEAAJACwKABIA
+        HgAWAAAEGzDJSau9OOvNu/9gKI5kaZ5oqq5s675wLM9uBAAh+QQJEAAJACwJAA0AIAAbAAAExDBJGQKo
+        ts7Nu7xZBYaBZyYiNq7YybFpTLqoDJOgi6u8XZq9nU8EvMEGh2Ry8OsEj0nDQZpEADxC0qBgkHqVCGAW
+        gBRsv9RDuGOsHAQAM1cJLga3Bbg5KegLqmIsUwV5AAcDZgOKf2tYMlMGhFJmfpSNYhmQkQgDVoiKipcn
+        GFFdnFZkAwBkojoBpadxrAinNB1RsX2yoK00YJ1+u6G2HL8IwZWdxMVqnMGgw8seiInQvdIJn9DK2NPb
+        3N0d29fhCbS0EhEAIfkECRAACQAsEwAIABYAIAAABMgwSQmCrXbqjUPvm2Z5IyZUoXSVo1CmXynMdLCx
+        a3ACPH/HlxPpIsoNhTkR0COMTXDH5XM5OFitA9LTCLAWDOBrRhU7AASDr+GKsFFWgsMJrV4f2kXLwVCY
+        D8B2dxoVFXt9Z1eJCDd6YH0HAzQzVouDAXt8CDMDnJxxlSKYcgOaklWgG3sIpDudpykJqqxnAzyksBJ3
+        rDsIvagpuppnkr8hd6U8NMUpq3PEuBqRO8rQ0SeuAsshka6c2tvdt9US4eLjCd3fsL6VEQAh+QQJEAAJ
+        ACwbAAgAFQAgAAAE0zDJOaq1M+cRAugeqG1h95ndGAxn6Z6ZIM90LQdSIAB87/+83A5FfOE+u5YStNSd
+        msZQkkktnoaeg3Z7aCIBhcFhNygYzgdWdXcoyADls2FbQordZDNay/EkdAcGeHB6c1oIH0KBblyNBwgp
+        EmKCWjVcCAMbi10XAwIIh5kUgYgsMhUIn4+ikqQVcBaYoJgbYgilADK3A7sanoc8t7K8tCQCjzynxMUb
+        BM6IuQKozBrCLNGorCMUP7za2wmmFp/f256d1ODnF+nmnd7g1ezl8cLtEhEAIfkECRAACQAsHgAIABoA
+        IAAABPowyTSqtSCErKeXAyCOYhBqG/pRmRC4bjqkGhdMZ6bT28xzFIFwSCwahyyScsnMnGAvmxQ1DUFj
+        P6pW83zVttmv1Yudfs+mlld2aLd92TE00BYABAVD25wmaw4FdngGhHpxd36AdgV5hG5oXS6Kd42Obyg3
+        ci8Hem5tnW0IKQAsZKFFA54Hoh0sUKsCFwOxCG6iGSBqAqtWsQIIFbWruLmvwBe0A7XHHpEBCCK/scrK
+        vAPNiDDKCMDTwNwVH5G9s8Hb4eIE6urk3uDXKwnc4He+5hbxKyEAFd7o+djq+YMHEBuRewXFCUxGMCGI
+        WUIQOvRwTOJEivP+JYwAACH5BAkQAAkALB4ACAAgACAAAAT/MMk0qrUz650H+CA4cKTmBQKqpsJYkie7
+        ru7bCXiu71d/TZ6QcEgUumIzmRIQaDKdAYBA4lEmVc9oU+tMUZjW5TZLjgoA3/AMyuaam0i1uwyVMqvX
+        FH0+TgXiVwMHg4MDbUx2f1J5AQcFZwIFBQYHhnN+gDKOkJIGngaWWol4VptSnZ+UJ11wYDOClISplJR1
+        Z4phB5Q6g566uqGLileDLRYtvb8IomdpSQctUjgDAr+xy6xfxBctAggDCLEHy4gBVItKQd7U4OCE409o
+        50keCPYIxt8IhN9OHQQAA1aZZqzdvnEYNtyzN7CbBX2DvlWw8eWDwwoQGU60UcVOwYUSIGtwtCjloQ+K
+        HTwCwJgQpYmOLDe63NAj5MwSC2XeTBABACH5BAUQAAkALB4ACAAgACAAAAT/MMk0qrUz650H+CA4cKTm
+        BQKqpsJYkie7ru7bCXiu71dvIRNPaEgshhBACmAmazKZhKTHSX06o5KYdUvFKqvgrVcbrgbOS4AUUH4u
+        0ecAO7tss97yeDr15c7ggHICAEp+MgEDB4oHA3BsZ1OGiQcGOgUHeoOIdVyUBmwtBQUGBgd7kI9glIuK
+        o6SkmGxLZEyLOoqvi5GbYJM9LYuwppq0MgiMOhUCnqyPvFYIFy3KA8fNfMUoUwLR1NHWi7IUBOTlBD9I
+        1BXfrCcTSPDKOeo/1YrpFRxCbPT1x/gYTMia5wPJAYABBQ4sCK9bQn0Dp61zeMFGlikA0FW0uKEHQo4l
+        BhpuBCkhAgAh+QQJEAAJACweAAgAIAAgAAAEIjDJSau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru+8
+        HAEAIfkECRAACQAsHgAIACAAIAAABP8wyTSqtTPrnQf4IDhwpOYFAqqmwliSJ7uu7tsJeK7vV39NnpBw
+        SBS6YjOZEhBoMp0BgEDiUSZVz2hT60xRmNblNkuOCgDf8AzK5pqbSLW7DJUyq9cUfT5OBeJXAweDgwNt
+        THZ/UnkBBwVnAgUFBgeGc36AMo6QkgaeBpZaiXhWm1Kdn5QnXXBgM4KUhKmUlHVnimEHlDqDnrq6oYuK
+        V4MtFi29vwiiZ2lJBy1SOAMCv7HLrF/EFy0CCAMIsQfLiAFUi0pB3tTg4ITjT2jnSR4I9gjG3wiE304d
+        BAADVplmrN2+cRg23LM3sJsFfYO+VbDx5YPDChAZTrRRxU7BhRIga3C0KOWhD4odPALAmBCliY4sN7rc
+        0CPkzBILZd5MEAEAIfkECRAACQAsHgAIABoAIAAABPowyTSqtSCErKeXAyCOYhBqG/pRmRC4bjqkGhdM
+        Z6bT28xzFIFwSCwahyyScsnMnGAvmxQ1DUFjP6pW83zVttmv1Yudfs+mlld2aLd92TE00BYABAVD25wm
+        aw4FdngGhHpxd36AdgV5hG5oXS6Kd42Obyg3ci8Hem5tnW0IKQAsZKFFA54Hoh0sUKsCFwOxCG6iGSBq
+        AqtWsQIIFbWruLmvwBe0A7XHHpEBCCK/scrKvAPNiDDKCMDTwNwVH5G9s8Hb4eIE6urk3uDXKwnc4He+
+        5hbxKyEAFd7o+djq+YMHEBuRewXFCUxGMCGIWUIQOvRwTOJEivP+JYwAACH5BAkQAAkALBsACAAVACAA
+        AATTMMk5qrUz5xEC6B6obWH3md0YDGfpnpkgz3QtB1IgAHzv/7zcDkV84T67lhK01J2axlCSSS2ehp6D
+        dntoIgGFwWE3KBjOB1Z1dyjIAOWzYVtCit1kM1rL8SR0BwZ4cHpzWggfQoFuXI0HCCkSYoJaNVwIAxuL
+        XRcDAgiHmRSBiCwyFQifj6KSpBVwFpigmBtiCKUAMrcDuxqehzy3sry0JAKPPKfExRsEzoi5AqjMGsIs
+        0aisIxQ/vNrbCaYWn9/bnp3U4OcX6ead3uDV7OXxwu0SEQAh+QQJEAAJACwTAAgAFgAgAAAEyDBJCYKt
+        duqNQ++bZnkjJlShdJWjUKZfKcx0sLFrcAI8f8eXE+kiyg2FORHQI4xNcMflczk4WK0D0tMIsBYM4GtG
+        FTsABIOv4YqwUVaCwwmtXh/aRcvBUJgPwHZ3GhUVe31nV4kIN3pgfQcDNDNWi4MBe3wIMwOcnHGVIphy
+        A5qSVaAbewikO52nKQmqrGcDPKSwEnesOwi9qCm6mmeSvyF3pTw0xSmrc8S4GpE7ytDRJ64CyyGRrpza
+        29231RLh4uMJ3d+wvpURACH5BAkQAAkALAkADQAgABsAAATEMEkZAqi2zs27vFkFhoFnJiI2rtjJsWlM
+        uqgMk6CLq7xdmr2dTwS8wQaHZHLw6wSPScNBmkQAPELSoGCQepUIYBaAFGy/1EO4Y6wcBAAzVwkuBrcF
+        uDkp6AuqYixTBXkABwNmA4p/a1gyUwaEUmZ+lI1iGZCRCANWiIqKlycYUV2cVmQDAGSiOgGlp3GsCKc0
+        HVGxfbKgrTRgnX67obYcvwjBlZ3ExWqcwaDDyx6IidC90gmf0MrY09vc3R3b1+EJtLQSEQAh+QQFEAAJ
+        ACwKABIAHgAWAAAErDDJFCqoAczNu8SXBXrkl4GoVXbhKb7BOqXucNwHUslU2x6GYDCnk9EAh4FwSVy5
+        TgeBYKA04HCIUsoGAEhtUanglvU8kYWCoJucUqk3rQuYVkep4mlOngEGCwgDUwCCbwNlJCF+QYEIXoQD
+        XQIIiGaEi42Pa4eUnE44Bplij15flDJYh3lra6VTlSRYCKusblSwJJSdtIaHPB14Yr24vwnBw8UkeG/E
+        yRO6ZREAIfkECRAACQAsCgASAB4AFgAABBswyUmrvTjrzbv/YCiOZGmeaKqubOu+cCzPbgQAOw==
+</value>
+  </data>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Server.Console")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("1131CD44-0FDC-4f7b-9D7E-8029B26EAE05")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Resources.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Resources.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Resources.Designer.cs	(revision 4073)
@@ -0,0 +1,63 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Server.ServerConsole.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Hive.Server.ServerConsole.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Resources.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Resources.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Resources.resx	(revision 4073)
@@ -0,0 +1,117 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Settings.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Settings.Designer.cs	(revision 4073)
@@ -0,0 +1,26 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Server.ServerConsole.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Settings.settings
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Settings.settings	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Properties/Settings.settings	(revision 4073)
@@ -0,0 +1,7 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.Designer.cs	(revision 4073)
@@ -0,0 +1,318 @@
+﻿namespace HeuristicLab.Hive.Client.Console
+{
+  partial class Recurrence
+  {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing)
+    {
+      if (disposing && (components != null))
+      {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent()
+    {
+      this.gbAppointment = new System.Windows.Forms.GroupBox();
+      this.chbade = new System.Windows.Forms.CheckBox();
+      this.dtpEnd = new System.Windows.Forms.DateTimePicker();
+      this.dtpToTime = new System.Windows.Forms.DateTimePicker();
+      this.label5 = new System.Windows.Forms.Label();
+      this.dtpStart = new System.Windows.Forms.DateTimePicker();
+      this.dtpFromTime = new System.Windows.Forms.DateTimePicker();
+      this.label6 = new System.Windows.Forms.Label();
+      this.txtDays = new System.Windows.Forms.TextBox();
+      this.label4 = new System.Windows.Forms.Label();
+      this.label7 = new System.Windows.Forms.Label();
+      this.btSaveRecurrence = new System.Windows.Forms.Button();
+      this.btCancelRecurrence = new System.Windows.Forms.Button();
+      this.gbWeekly = new System.Windows.Forms.GroupBox();
+      this.cbSunday = new System.Windows.Forms.CheckBox();
+      this.cbSaturday = new System.Windows.Forms.CheckBox();
+      this.cbFriday = new System.Windows.Forms.CheckBox();
+      this.cbThursday = new System.Windows.Forms.CheckBox();
+      this.cbWednesday = new System.Windows.Forms.CheckBox();
+      this.cbTuesday = new System.Windows.Forms.CheckBox();
+      this.cbMonday = new System.Windows.Forms.CheckBox();
+      this.gbAppointment.SuspendLayout();
+      this.gbWeekly.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // gbAppointment
+      // 
+      this.gbAppointment.Controls.Add(this.chbade);
+      this.gbAppointment.Controls.Add(this.dtpEnd);
+      this.gbAppointment.Controls.Add(this.dtpToTime);
+      this.gbAppointment.Controls.Add(this.label5);
+      this.gbAppointment.Controls.Add(this.dtpStart);
+      this.gbAppointment.Controls.Add(this.dtpFromTime);
+      this.gbAppointment.Controls.Add(this.label6);
+      this.gbAppointment.Location = new System.Drawing.Point(2, 2);
+      this.gbAppointment.Name = "gbAppointment";
+      this.gbAppointment.Size = new System.Drawing.Size(386, 109);
+      this.gbAppointment.TabIndex = 39;
+      this.gbAppointment.TabStop = false;
+      this.gbAppointment.Text = "Appointment";
+      // 
+      // chbade
+      // 
+      this.chbade.AutoSize = true;
+      this.chbade.Location = new System.Drawing.Point(113, 86);
+      this.chbade.Name = "chbade";
+      this.chbade.Size = new System.Drawing.Size(90, 17);
+      this.chbade.TabIndex = 39;
+      this.chbade.Text = "All Day Event";
+      this.chbade.UseVisualStyleBackColor = true;
+      // 
+      // dtpEnd
+      // 
+      this.dtpEnd.Format = System.Windows.Forms.DateTimePickerFormat.Short;
+      this.dtpEnd.Location = new System.Drawing.Point(113, 56);
+      this.dtpEnd.Name = "dtpEnd";
+      this.dtpEnd.Size = new System.Drawing.Size(91, 20);
+      this.dtpEnd.TabIndex = 29;
+      // 
+      // dtpToTime
+      // 
+      this.dtpToTime.CustomFormat = "HH:00";
+      this.dtpToTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpToTime.Location = new System.Drawing.Point(226, 56);
+      this.dtpToTime.Name = "dtpToTime";
+      this.dtpToTime.ShowUpDown = true;
+      this.dtpToTime.Size = new System.Drawing.Size(73, 20);
+      this.dtpToTime.TabIndex = 38;
+      // 
+      // label5
+      // 
+      this.label5.AutoSize = true;
+      this.label5.Location = new System.Drawing.Point(58, 60);
+      this.label5.Name = "label5";
+      this.label5.Size = new System.Drawing.Size(55, 13);
+      this.label5.TabIndex = 27;
+      this.label5.Text = "End Date:";
+      // 
+      // dtpStart
+      // 
+      this.dtpStart.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpStart.Location = new System.Drawing.Point(113, 19);
+      this.dtpStart.Name = "dtpStart";
+      this.dtpStart.Size = new System.Drawing.Size(89, 20);
+      this.dtpStart.TabIndex = 28;
+      // 
+      // dtpFromTime
+      // 
+      this.dtpFromTime.CustomFormat = "HH:00";
+      this.dtpFromTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
+      this.dtpFromTime.Location = new System.Drawing.Point(226, 19);
+      this.dtpFromTime.Name = "dtpFromTime";
+      this.dtpFromTime.ShowUpDown = true;
+      this.dtpFromTime.Size = new System.Drawing.Size(73, 20);
+      this.dtpFromTime.TabIndex = 30;
+      // 
+      // label6
+      // 
+      this.label6.AutoSize = true;
+      this.label6.Location = new System.Drawing.Point(58, 23);
+      this.label6.Name = "label6";
+      this.label6.Size = new System.Drawing.Size(58, 13);
+      this.label6.TabIndex = 25;
+      this.label6.Text = "Start Date:";
+      // 
+      // txtDays
+      // 
+      this.txtDays.Location = new System.Drawing.Point(160, 13);
+      this.txtDays.Name = "txtDays";
+      this.txtDays.Size = new System.Drawing.Size(30, 20);
+      this.txtDays.TabIndex = 24;
+      this.txtDays.Text = "1";
+      this.txtDays.Visible = false;
+      // 
+      // label4
+      // 
+      this.label4.AutoSize = true;
+      this.label4.Location = new System.Drawing.Point(120, 16);
+      this.label4.Name = "label4";
+      this.label4.Size = new System.Drawing.Size(34, 13);
+      this.label4.TabIndex = 23;
+      this.label4.Text = "Every";
+      this.label4.Visible = false;
+      // 
+      // label7
+      // 
+      this.label7.AutoSize = true;
+      this.label7.Location = new System.Drawing.Point(196, 16);
+      this.label7.Name = "label7";
+      this.label7.Size = new System.Drawing.Size(59, 13);
+      this.label7.TabIndex = 25;
+      this.label7.Text = "week(s) on";
+      this.label7.Visible = false;
+      // 
+      // btSaveRecurrence
+      // 
+      this.btSaveRecurrence.Location = new System.Drawing.Point(2, 217);
+      this.btSaveRecurrence.Name = "btSaveRecurrence";
+      this.btSaveRecurrence.Size = new System.Drawing.Size(147, 23);
+      this.btSaveRecurrence.TabIndex = 43;
+      this.btSaveRecurrence.Text = "Save";
+      this.btSaveRecurrence.UseVisualStyleBackColor = true;
+      this.btSaveRecurrence.Click += new System.EventHandler(this.btSaveRecurrence_Click);
+      // 
+      // btCancelRecurrence
+      // 
+      this.btCancelRecurrence.Location = new System.Drawing.Point(241, 217);
+      this.btCancelRecurrence.Name = "btCancelRecurrence";
+      this.btCancelRecurrence.Size = new System.Drawing.Size(147, 23);
+      this.btCancelRecurrence.TabIndex = 44;
+      this.btCancelRecurrence.Text = "Cancel";
+      this.btCancelRecurrence.UseVisualStyleBackColor = true;
+      this.btCancelRecurrence.Click += new System.EventHandler(this.btCancelRecurrence_Click);
+      // 
+      // gbWeekly
+      // 
+      this.gbWeekly.Controls.Add(this.label7);
+      this.gbWeekly.Controls.Add(this.cbSunday);
+      this.gbWeekly.Controls.Add(this.txtDays);
+      this.gbWeekly.Controls.Add(this.cbSaturday);
+      this.gbWeekly.Controls.Add(this.cbFriday);
+      this.gbWeekly.Controls.Add(this.cbThursday);
+      this.gbWeekly.Controls.Add(this.label4);
+      this.gbWeekly.Controls.Add(this.cbWednesday);
+      this.gbWeekly.Controls.Add(this.cbTuesday);
+      this.gbWeekly.Controls.Add(this.cbMonday);
+      this.gbWeekly.Location = new System.Drawing.Point(2, 111);
+      this.gbWeekly.Name = "gbWeekly";
+      this.gbWeekly.Size = new System.Drawing.Size(386, 100);
+      this.gbWeekly.TabIndex = 42;
+      this.gbWeekly.TabStop = false;
+      this.gbWeekly.Text = "Days of week";
+      // 
+      // cbSunday
+      // 
+      this.cbSunday.AutoSize = true;
+      this.cbSunday.Location = new System.Drawing.Point(199, 65);
+      this.cbSunday.Name = "cbSunday";
+      this.cbSunday.Size = new System.Drawing.Size(62, 17);
+      this.cbSunday.TabIndex = 6;
+      this.cbSunday.Text = "Sunday";
+      this.cbSunday.UseVisualStyleBackColor = true;
+      // 
+      // cbSaturday
+      // 
+      this.cbSaturday.AutoSize = true;
+      this.cbSaturday.Location = new System.Drawing.Point(122, 65);
+      this.cbSaturday.Name = "cbSaturday";
+      this.cbSaturday.Size = new System.Drawing.Size(68, 17);
+      this.cbSaturday.TabIndex = 5;
+      this.cbSaturday.Text = "Saturday";
+      this.cbSaturday.UseVisualStyleBackColor = true;
+      // 
+      // cbFriday
+      // 
+      this.cbFriday.AutoSize = true;
+      this.cbFriday.Location = new System.Drawing.Point(37, 65);
+      this.cbFriday.Name = "cbFriday";
+      this.cbFriday.Size = new System.Drawing.Size(54, 17);
+      this.cbFriday.TabIndex = 4;
+      this.cbFriday.Text = "Friday";
+      this.cbFriday.UseVisualStyleBackColor = true;
+      // 
+      // cbThursday
+      // 
+      this.cbThursday.AutoSize = true;
+      this.cbThursday.Location = new System.Drawing.Point(289, 40);
+      this.cbThursday.Name = "cbThursday";
+      this.cbThursday.Size = new System.Drawing.Size(70, 17);
+      this.cbThursday.TabIndex = 3;
+      this.cbThursday.Text = "Thursday";
+      this.cbThursday.UseVisualStyleBackColor = true;
+      // 
+      // cbWednesday
+      // 
+      this.cbWednesday.AutoSize = true;
+      this.cbWednesday.Location = new System.Drawing.Point(199, 42);
+      this.cbWednesday.Name = "cbWednesday";
+      this.cbWednesday.Size = new System.Drawing.Size(86, 17);
+      this.cbWednesday.TabIndex = 2;
+      this.cbWednesday.Text = "Wednesday ";
+      this.cbWednesday.UseVisualStyleBackColor = true;
+      // 
+      // cbTuesday
+      // 
+      this.cbTuesday.AutoSize = true;
+      this.cbTuesday.Location = new System.Drawing.Point(123, 42);
+      this.cbTuesday.Name = "cbTuesday";
+      this.cbTuesday.Size = new System.Drawing.Size(67, 17);
+      this.cbTuesday.TabIndex = 1;
+      this.cbTuesday.Text = "Tuesday";
+      this.cbTuesday.UseVisualStyleBackColor = true;
+      // 
+      // cbMonday
+      // 
+      this.cbMonday.AutoSize = true;
+      this.cbMonday.Location = new System.Drawing.Point(37, 42);
+      this.cbMonday.Name = "cbMonday";
+      this.cbMonday.Size = new System.Drawing.Size(64, 17);
+      this.cbMonday.TabIndex = 0;
+      this.cbMonday.Text = "Monday";
+      this.cbMonday.UseVisualStyleBackColor = true;
+      // 
+      // Recurrence
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(393, 243);
+      this.Controls.Add(this.gbWeekly);
+      this.Controls.Add(this.btCancelRecurrence);
+      this.Controls.Add(this.btSaveRecurrence);
+      this.Controls.Add(this.gbAppointment);
+      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+      this.Name = "Recurrence";
+      this.Text = "Recurrence";
+      this.gbAppointment.ResumeLayout(false);
+      this.gbAppointment.PerformLayout();
+      this.gbWeekly.ResumeLayout(false);
+      this.gbWeekly.PerformLayout();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.GroupBox gbAppointment;
+    private System.Windows.Forms.TextBox txtDays;
+    private System.Windows.Forms.Label label4;
+    private System.Windows.Forms.DateTimePicker dtpEnd;
+    private System.Windows.Forms.DateTimePicker dtpStart;
+    private System.Windows.Forms.Label label5;
+    private System.Windows.Forms.Label label6;
+    private System.Windows.Forms.Label label7;
+    private System.Windows.Forms.Button btSaveRecurrence;
+    private System.Windows.Forms.Button btCancelRecurrence;
+    private System.Windows.Forms.DateTimePicker dtpFromTime;
+    private System.Windows.Forms.DateTimePicker dtpToTime;
+    private System.Windows.Forms.CheckBox chbade;
+    private System.Windows.Forms.GroupBox gbWeekly;
+    private System.Windows.Forms.CheckBox cbSunday;
+    private System.Windows.Forms.CheckBox cbSaturday;
+    private System.Windows.Forms.CheckBox cbFriday;
+    private System.Windows.Forms.CheckBox cbThursday;
+    private System.Windows.Forms.CheckBox cbWednesday;
+    private System.Windows.Forms.CheckBox cbTuesday;
+    private System.Windows.Forms.CheckBox cbMonday;
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.cs	(revision 4073)
@@ -0,0 +1,126 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using HeuristicLab.Hive.Server.ServerConsole;
+
+namespace HeuristicLab.Hive.Client.Console
+{
+
+  public enum RecurrenceMode
+  {
+    Daily,
+    Weekly
+  }
+
+  public partial class Recurrence : Form
+  {
+
+    public OnDialogClosedDelegate dialogClosedDelegate;
+
+    public Recurrence()
+    {
+      InitializeComponent();
+    }
+
+    private void btCancelRecurrence_Click(object sender, EventArgs e)
+    {
+      this.Close();
+    }
+
+    private void btSaveRecurrence_Click(object sender, EventArgs e)
+    {
+      DateTime dateFrom, dateTo;
+      RecurrenceMode mode = RecurrenceMode.Daily;
+      int incWeek = 0;
+      HashSet<DayOfWeek> days = new HashSet<DayOfWeek>();
+
+      days = GetDays();
+
+      //check if valid
+      if (InputIsValid())
+      {
+        //set entity
+
+        dateFrom = DateTime.Parse(dtpStart.Text + " " + dtpFromTime.Text);
+        dateTo = DateTime.Parse(dtpEnd.Text + " " + dtpToTime.Text);
+
+        if (int.TryParse(txtDays.Text, out incWeek))
+          mode = RecurrenceMode.Weekly;
+        else
+          mode = RecurrenceMode.Daily;
+
+        RecurrentEvent recurrentEvent = new RecurrentEvent()
+        {
+          DateFrom = dateFrom,
+          DateTo = dateTo,
+          AllDay = chbade.Checked,
+          WeekDays = days,
+          IncWeeks = incWeek,
+        };
+
+        //fire delegate and close the dialog
+        dialogClosedDelegate(recurrentEvent);
+        this.Close();
+      }
+      else
+        MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+    }
+
+    private HashSet<DayOfWeek> GetDays()
+    {
+      HashSet<DayOfWeek> days = new HashSet<DayOfWeek>();
+
+      if (cbMonday.Checked)
+        days.Add(DayOfWeek.Monday);
+      if (cbTuesday.Checked)
+        days.Add(DayOfWeek.Tuesday);
+      if (cbWednesday.Checked)
+        days.Add(DayOfWeek.Wednesday);
+      if (cbThursday.Checked)
+        days.Add(DayOfWeek.Thursday);
+      if (cbFriday.Checked)
+        days.Add(DayOfWeek.Friday);
+      if (cbSaturday.Checked)
+        days.Add(DayOfWeek.Saturday);
+      if (cbSunday.Checked)
+        days.Add(DayOfWeek.Sunday);
+
+      return days;
+    }
+
+    private bool InputIsValid()
+    {
+      DateTime dateFrom, dateTo;
+      int i = 0;
+
+      dateFrom = DateTime.Parse(dtpStart.Text + " " + dtpFromTime.Text);
+      dateTo = DateTime.Parse(dtpEnd.Text + " " + dtpToTime.Text);
+
+      if (dateFrom < dateTo && dateFrom.TimeOfDay < dateTo.TimeOfDay && int.TryParse(txtDays.Text, out i))
+        return true;
+      else
+        return false;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/Recurrence.resx	(revision 4073)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/ServiceLocator.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/ServiceLocator.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/ServiceLocator.cs	(revision 4073)
@@ -0,0 +1,52 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using HeuristicLab.Hive.Contracts.Interfaces;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts;
+
+namespace HeuristicLab.Hive.Server.ServerConsole {
+  internal class ServiceLocator {
+    private static IServerConsoleFacade serverConsoleFacade = null;
+
+    internal static string Address { get; set; }
+    internal static string Port { get; set; }
+
+    internal static IClientManager GetClientManager() {
+      return GetServerConsoleFacade() as IClientManager;
+    }
+
+    internal static IJobManager GetJobManager() {
+      return GetServerConsoleFacade() as IJobManager;
+    }
+
+    internal static IServerConsoleFacade GetServerConsoleFacade() {
+      if (serverConsoleFacade == null &&
+        Address != String.Empty &&
+        Port != String.Empty) {
+
+        ChannelFactory<IServerConsoleFacade> factory =
+          new ChannelFactory<IServerConsoleFacade>(
+            WcfSettings.GetBinding(),
+            new EndpointAddress("net.tcp://" + Address + ":" + Port + "/HiveServerConsole/ServerConsoleFacade"));
+                         
+        serverConsoleFacade = factory.CreateChannel();
+        ((ICommunicationObject)serverConsoleFacade).Faulted += ServiceLocator_Faulted;
+      }
+      
+      return serverConsoleFacade;
+    }
+
+    static void ServiceLocator_Faulted(object sender, EventArgs e) {
+      ((ICommunicationObject)serverConsoleFacade).Abort();
+      ((ICommunicationObject)serverConsoleFacade).Faulted -= ServiceLocator_Faulted;
+      serverConsoleFacade = null;
+    }
+
+    internal static void ShutDownFacade() {
+      serverConsoleFacade = null;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/HeuristicLab.Hive.Server.Core-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/HeuristicLab.Hive.Server.Core-3.3.csproj	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/HeuristicLab.Hive.Server.Core-3.3.csproj	(revision 4073)
@@ -160,4 +160,10 @@
     <WCFMetadata Include="Service References\" />
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Security.Contracts\3.3\HeuristicLab.Security.Contracts-3.3.csproj">
+      <Project>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</Project>
+      <Name>HeuristicLab.Security.Contracts-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs	(revision 4073)
@@ -55,5 +55,5 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.2.0.4064")]
-[assembly: AssemblyFileVersion("3.2.0.4064")]
-[assembly: AssemblyBuildDate("2010/07/22 09:53:28")]
+[assembly: AssemblyVersion("3.2.0.4071")]
+[assembly: AssemblyFileVersion("3.2.0.4071")]
+[assembly: AssemblyBuildDate("2010/07/22 10:11:19")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HeuristicLab.Hive.Server.DataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HeuristicLab.Hive.Server.DataAccess-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HeuristicLab.Hive.Server.DataAccess-3.3.csproj	(revision 4073)
@@ -0,0 +1,138 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{4D5A2A16-66C2-431D-9AA3-BD3041E64B84}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Server.DataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Server.DataAccess-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <Compile Include="IClientConfigAdapter.cs" />
+    <Compile Include="IClientConfigDao.cs" />
+    <Compile Include="IClientDao.cs" />
+    <Compile Include="IClientGroupDao.cs" />
+    <Compile Include="IGenericDao.cs" />
+    <Compile Include="IJobDao.cs" />
+    <Compile Include="IPluginInfoAdapter.cs" />
+    <Compile Include="IPluginInfoDao.cs" />
+    <Compile Include="IProjectAdapter.cs" />
+    <Compile Include="IUptimeCalendarDao.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="HiveServerDataAccessPlugin.cs" />
+    <Compile Include="IClientAdapter.cs" />
+    <Compile Include="IClientGroupAdapter.cs" />
+    <Compile Include="IJobAdapter.cs" />
+    <Compile Include="IJobResultsAdapter.cs" />
+    <Compile Include="IResourceAdapter.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Transactions" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HiveServerDataAccessPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HiveServerDataAccessPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HiveServerDataAccessPlugin.cs	(revision 4073)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.DataAccess {
+  [Plugin("HeuristicLab.Hive.Server.DataAccess-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.DataAccess-3.2.dll", PluginFileType.Assembly)]  
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  public class HiveServerDataAccessPlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientAdapter.cs	(revision 4073)
@@ -0,0 +1,46 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  /// <summary>
+  /// The client database adapter
+  /// </summary>
+  public interface IClientAdapter : IDataAdapter<ClientDto> {
+    /// <summary>
+    /// Get the client with the specified name
+    /// </summary>
+    /// <param name="clientId"></param>
+    /// <returns></returns>
+    ClientDto GetByName(string name);
+
+    /// <summary>
+    /// Gets all clients that are not in a group
+    /// </summary>
+    /// <returns></returns>
+    ICollection<ClientDto> GetGrouplessClients();
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientConfigAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientConfigAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientConfigAdapter.cs	(revision 4073)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IClientConfigAdapter: IDataAdapter<ClientConfigDto> {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientConfigDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientConfigDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientConfigDao.cs	(revision 4073)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IClientConfigDao: IGenericDao<ClientConfigDto> {
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientDao.cs	(revision 4073)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IClientDao: IGenericDao<ClientDto> {
+    IEnumerable<ClientDto> FindAllClientsWithoutGroup();
+    ClientDto GetClientForJob(Guid jobId);
+    void SetServerSideCalendar(ClientDto client, Guid clientGroupId);    
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientGroupAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientGroupAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientGroupAdapter.cs	(revision 4073)
@@ -0,0 +1,47 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  /// <summary>
+  /// The client group database adapter
+  /// </summary>
+  public interface IClientGroupAdapter: IDataAdapter<ClientGroupDto> {
+    /// <summary>
+    /// Get the client group with the specified name
+    /// </summary>
+    /// <param name="clientId"></param>
+    /// <returns></returns>
+    ClientGroupDto GetByName(string name);
+
+    /// <summary>
+    /// Gets all client groups where the resource is member of
+    /// </summary>
+    /// <param name="permOwner"></param>
+    /// <returns></returns>
+    ICollection<ClientGroupDto> MemberOf(ResourceDto resource);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientGroupDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientGroupDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IClientGroupDao.cs	(revision 4073)
@@ -0,0 +1,18 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IClientGroupDao: IGenericDao<ClientGroupDto> {
+    void AddRessourceToClientGroup(Guid ressource, Guid clientGroupId);
+    void RemoveRessourceFromClientGroup(Guid ressource, Guid clientGroupId);
+
+    IEnumerable<ClientGroupDto> MemberOf(ClientDto client);
+
+    IEnumerable<ClientGroupDto> FindAllWithSubGroupsAndClients();
+    IEnumerable<Guid> FindAllGroupAndParentGroupIdsForClient(Guid clientId);
+
+    IEnumerable<ClientGroupDto> FindByName(string res);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IExecutableJobAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IExecutableJobAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IExecutableJobAdapter.cs	(revision 4073)
@@ -0,0 +1,43 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IExecutableJobAdapter: IDataAdapter<ExecutableJob> {
+    /// <summary>
+    /// Finds a job with the specified criterias 
+    /// </summary>
+    /// <param name="state">all jobs with the specified state</param>
+    /// <param name="cores">all jobs which require less or equal cores</param>
+    /// <param name="memory">all jobs which require less or equal memory</param>
+    /// <param name="resourceId">all jobs that can be calculated by that resource</param>
+    /// <returns></returns>
+    ICollection<ExecutableJob> FindJobs(State state,
+      int cores,
+      int memory,
+      Guid resourceId);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IGenericDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IGenericDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IGenericDao.cs	(revision 4073)
@@ -0,0 +1,15 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IGenericDao<TBusiness> {
+    TBusiness FindById(Guid id);
+    IEnumerable<TBusiness> FindAll();
+    TBusiness Insert(TBusiness bObj);
+    
+    void Delete(TBusiness bObj);
+
+    void Update(TBusiness bObj);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobAdapter.cs	(revision 4073)
@@ -0,0 +1,104 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+using System.IO;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IJobAdapter: IDataAdapter<JobDto> {
+    /// <summary>
+    /// Gets all subjobs of the specified job
+    /// </summary>
+    /// <returns></returns>
+    ICollection<JobDto> GetAllSubjobs(JobDto job);
+
+    /// <summary>
+    /// Gets all Jobs with the specified state
+    /// </summary>
+    /// <returns></returns>
+    ICollection<JobDto> GetJobsByState(State state);
+
+    /// <summary>
+    /// Finds a job with the specified criterias 
+    /// </summary>
+    /// <param name="state">all jobs with the specified state</param>
+    /// <param name="cores">all jobs which require less or equal cores</param>
+    /// <param name="memory">all jobs which require less or equal memory</param>
+    /// <param name="resourceId">all jobs that can be calculated by that resource</param>
+    /// <returns></returns>
+    ICollection<JobDto> FindJobs(State state, 
+      int cores, 
+      int memory, 
+      Guid resourceId);
+
+    /// <summary>
+    /// Gets all jobs of the client
+    /// </summary>
+    /// <param name="client"></param>
+    /// <returns></returns>
+    ICollection<JobDto> GetJobsOf(ClientDto client);
+
+    /// <summary>
+    /// Gets all active jobs of the client
+    /// </summary>
+    /// <param name="client"></param>
+    /// <returns></returns>
+    ICollection<JobDto> GetActiveJobsOf(ClientDto client);
+
+    /// <summary>
+    /// Gets all jobs of the user
+    /// </summary>
+    /// <param name="user"></param>
+    /// <returns></returns>
+    ICollection<JobDto> GetJobsOf(Guid userId);
+
+    /// <summary>
+    /// Gets all jobs of the project
+    /// </summary>
+    /// <param name="user"></param>
+    /// <returns></returns>
+    ICollection<JobDto> GetJobsByProject(Guid projectId);
+
+    /// <summary>
+    /// Gets the computable job with the secified jobId
+    /// </summary>
+    /// <param name="jobId"></param>
+    /// <returns></returns>
+    SerializedJob GetSerializedJob(Guid jobId);
+
+    /// <summary>
+    /// Gets a stream object for the large serialized job data
+    /// </summary>
+    /// <param name="jobId"></param>
+    /// <returns></returns>
+    Stream GetSerializedJobStream(Guid jobId, bool useExistingConnection);
+
+    /// <summary>
+    /// Saves or update the computable job
+    /// </summary>
+    /// <param name="jobId"></param>
+    void UpdateSerializedJob(SerializedJob job);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobDao.cs	(revision 4073)
@@ -0,0 +1,28 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.IO;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IJobDao: IGenericDao<JobDto> {
+    IEnumerable<JobDto> FindActiveJobsOfClient(ClientDto client);
+
+    IEnumerable<JobDto> GetJobsByState(State state);
+
+    void AssignClientToJob(Guid clientId, Guid jobId);
+
+    void SetJobOffline(JobDto job);
+
+    SerializedJob InsertWithAttachedJob(SerializedJob job);
+
+    byte[] GetBinaryJobFile(Guid jobId); 
+
+    IEnumerable<JobDto> FindFittingJobsForClient(State state, int freeCores, int freeMemory, Guid clientGuid);
+    Stream GetSerializedJobStream(Guid jobId);
+
+    IEnumerable<JobDto> FindWithLimitations(State jobState, int offset, int count);
+
+    void SetBinaryJobFile(Guid jobId, byte[] data);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobResultsAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobResultsAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IJobResultsAdapter.cs	(revision 4073)
@@ -0,0 +1,65 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+using System.IO;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IJobResultsAdapter: IDataAdapter<JobResult> {
+    /// <summary>
+    /// Gets all results for the specified job
+    /// </summary>
+    /// <param name="job"></param>
+    /// <returns></returns>
+    ICollection<JobResult> GetResultsOf(Guid jobId);
+
+    /// <summary>
+    /// Gets the last result for the specified job
+    /// </summary>
+    /// <param name="job"></param>
+    /// <returns></returns>
+    JobResult GetLastResultOf(Guid jobId);
+
+    /// <summary>
+    /// Gets the computable job result with the secified jobResultId
+    /// </summary>
+    /// <param name="jobId"></param>
+    /// <returns></returns>
+    SerializedJobResult GetSerializedJobResult(Guid jobResultId);
+
+    /// <summary>
+    /// Gets a stream object for the large serialized job result data
+    /// </summary>
+    /// <param name="jobId"></param>
+    /// <returns></returns>
+    Stream GetSerializedJobResultStream(Guid jobResultId, bool useExistingConnection);
+
+    /// <summary>
+    /// Saves or update the computable job result
+    /// </summary>
+    /// <param name="jobId"></param>
+    void UpdateSerializedJobResult(SerializedJobResult jobResult);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IPluginInfoAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IPluginInfoAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IPluginInfoAdapter.cs	(revision 4073)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  /// <summary>
+  /// The plugin info database adapter
+  /// </summary>
+  public interface IPluginInfoAdapter : IDataAdapter<HivePluginInfoDto> {
+    HivePluginInfoDto GetByNameVersionBuilddate(String name, String version, DateTime buildDate);
+
+    ICollection<HivePluginInfoDto> GetOrphanedPluginInfos();
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IPluginInfoDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IPluginInfoDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IPluginInfoDao.cs	(revision 4073)
@@ -0,0 +1,11 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IPluginInfoDao: IGenericDao<HivePluginInfoDto> {    
+    void InsertPluginDependenciesForJob(JobDto jobDto);
+    List<HivePluginInfoDto> GetPluginDependenciesForJob(JobDto jobDto);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IProjectAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IProjectAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IProjectAdapter.cs	(revision 4073)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IProjectAdapter : IDataAdapter<ProjectDto> {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IResourceAdapter.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IResourceAdapter.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IResourceAdapter.cs	(revision 4073)
@@ -0,0 +1,47 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  /// <summary>
+  /// The resource database adapter
+  /// </summary>
+  public interface IResourceAdapter: IPolymorphicDataAdapter<ResourceDto> {
+    /// <summary>
+    /// Gets the resource and updates the values of the object
+    /// </summary>
+    /// <param name="resource"></param>
+    /// <returns></returns>
+    bool GetById(ResourceDto resource);
+
+    /// <summary>
+    /// Get the resource with the specified name
+    /// </summary>
+    /// <param name="clientId"></param>
+    /// <returns></returns>
+    ResourceDto GetByName(string name);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IUptimeCalendarDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IUptimeCalendarDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/IUptimeCalendarDao.cs	(revision 4073)
@@ -0,0 +1,13 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IUptimeCalendarDao: IGenericDao<AppointmentDto> {
+    IEnumerable<AppointmentDto> GetUptimeCalendarForResource(Guid resourceId);
+    void SetUptimeCalendarForResource(Guid resourceId, IEnumerable<AppointmentDto> appointments);
+    void NotifyClientsOfNewCalendar(Guid groupId, bool forcePush);
+    IEnumerable<AppointmentDto> GetCalendarForClient(ClientDto client);
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Server.DataAccess")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("258B3848-8048-4c22-A52F-24C7E823A5B1")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/BaseDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/BaseDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/BaseDao.cs	(revision 4073)
@@ -0,0 +1,42 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data.Linq;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public abstract class BaseDao<TBusiness, TDatabaseEntity> {
+    public static HiveDataContext Context {
+      get {
+        return ContextFactory.Context;
+      }
+    }
+
+    protected void CommitChanges() {      
+      try {
+        Context.SubmitChanges(ConflictMode.ContinueOnConflict);
+      } catch (ChangeConflictException e) {
+        
+        Logger.Warn("Concurrency Exception! " + e.Message);
+        foreach (ObjectChangeConflict conflict in Context.ChangeConflicts) { 
+          Logger.Info("Conflicted: ");
+          foreach (MemberChangeConflict memberChangeConflict in conflict.MemberConflicts) {
+            Logger.Info("    Member in Conflict: " + memberChangeConflict.Member.Name);
+            Logger.Info("    Database Value: " + memberChangeConflict.DatabaseValue);
+            Logger.Info("    Original value: " + memberChangeConflict.OriginalValue);
+            Logger.Info("    Current value: " + memberChangeConflict.CurrentValue);              
+          }
+          conflict.Resolve(RefreshMode.KeepChanges);
+        }
+        //next round!
+        CommitChanges();
+        //Context.SubmitChanges(ConflictMode.FailOnFirstConflict);
+      }
+    }
+
+    public abstract TDatabaseEntity DtoToEntity(TBusiness source, TDatabaseEntity target);
+    public abstract TBusiness EntityToDto(TDatabaseEntity source, TBusiness target);
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientConfigDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientConfigDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientConfigDao.cs	(revision 4073)
@@ -0,0 +1,71 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Server.DataAccess;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public class ClientConfigDao: BaseDao<ClientConfigDto, ClientConfig>, IClientConfigDao {
+
+
+    #region IGenericDao<ClientConfigDto,ClientConfig> Members
+
+    public ClientConfigDto FindById(Guid id) {
+      return (from cc in Context.ClientConfigs
+              where cc.ClientConfigId.Equals(id)
+              select EntityToDto(cc, null)).SingleOrDefault();
+    }
+
+    public IEnumerable<ClientConfigDto> FindAll() {
+      return (from cc in Context.ClientConfigs              
+              select EntityToDto(cc, null)).ToList();
+    }
+
+    public ClientConfigDto Insert(ClientConfigDto bObj) {
+      ClientConfig c = DtoToEntity(bObj, null);
+      Context.ClientConfigs.InsertOnSubmit(c);
+      CommitChanges();
+      bObj.Id = c.ClientConfigId;
+      return bObj;  
+    }
+
+    public void Delete(ClientConfigDto bObj) {
+      Context.ClientConfigs.DeleteOnSubmit(Context.ClientConfigs.SingleOrDefault(c => c.ClientConfigId.Equals(bObj.Id)));
+      CommitChanges();
+    }
+
+    public void Update(ClientConfigDto bObj) {
+      ClientConfig cc = Context.ClientConfigs.SingleOrDefault(c => c.ClientConfigId.Equals(bObj.Id));
+      DtoToEntity(bObj, cc);
+      CommitChanges();
+    }
+
+    #endregion
+
+    public override ClientConfig DtoToEntity(ClientConfigDto source, ClientConfig target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new ClientConfig();
+
+      target.ClientConfigId = source.Id;
+      target.HeartBeatIntervall = source.HeartBeatIntervall;
+      
+      return target;
+    }
+
+    public override ClientConfigDto EntityToDto(ClientConfig source, ClientConfigDto target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new ClientConfigDto();
+
+      target.Id = source.ClientConfigId;
+      target.HeartBeatIntervall = source.HeartBeatIntervall;
+
+      return target;
+
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientDao.cs	(revision 4073)
@@ -0,0 +1,107 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Server.DataAccess;
+using System.Threading;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public class ClientDao: BaseDao<ClientDto, Client>, IClientDao {
+
+    public ClientDao() {      
+    }
+
+    public ClientDto FindById(Guid id) {
+      return (from client in Context.Resources.OfType<Client>()                         
+              where client.ResourceId.Equals(id)
+              select EntityToDto(client, null)
+            ).SingleOrDefault();      
+    }
+
+    public IEnumerable<ClientDto> FindAll() {
+      return (from client in Context.Resources.OfType<Client>()
+              select
+                EntityToDto(client, null)
+             ).ToList();
+    }
+
+    public IEnumerable<ClientDto> FindAllClientsWithoutGroup() {
+      return (from client in Context.Resources.OfType<Client>()
+              where client.ClientGroup_Resources_Parents.Count == 0
+              select EntityToDto(client, null)).ToList();
+    }
+
+    public ClientDto GetClientForJob(Guid jobId) {
+      return (from job in Context.Jobs
+              where job.JobId.Equals(jobId)
+              select EntityToDto(job.Client, null)).SingleOrDefault();
+    }
+
+    public void SetServerSideCalendar(ClientDto client, Guid clientGroupId) {
+      Client dbclient = Context.Resources.OfType<Client>().SingleOrDefault(c => c.ResourceId.Equals(client.Id));
+      dbclient.UseCalendarFromResourceId = clientGroupId;
+      dbclient.CalendarSyncStatus = Enum.GetName(typeof(CalendarState), CalendarState.Fetch);
+      CommitChanges();
+    }
+
+    public ClientDto Insert(ClientDto info) {
+      Client c = DtoToEntity(info, null);      
+      Context.Resources.InsertOnSubmit(c);
+      CommitChanges();
+      info.Id = c.ResourceId;
+      return info;
+    }
+
+    //Cascading delete takes care of the rest
+    public void Delete(ClientDto info) {
+      Resource res = Context.Resources.SingleOrDefault(c => c.ResourceId.Equals(info.Id));            
+      Context.Resources.DeleteOnSubmit(res);
+      CommitChanges();
+    }
+
+    public void Update(ClientDto info) {
+      Client client = Context.Resources.OfType<Client>().SingleOrDefault(c => c.ResourceId.Equals(info.Id));
+      DtoToEntity(info, client);
+      CommitChanges();      
+    }
+
+    public override Client DtoToEntity(ClientDto source, Client target) {
+      if (source == null)
+        return null;
+      if (target == null) 
+        target = new Client();
+      
+      target.CPUSpeed = source.CpuSpeedPerCore;
+      
+      target.FreeMemory = source.FreeMemory;
+      target.Name = source.Name;
+      target.ResourceId = source.Id;
+      target.CalendarSyncStatus = Enum.GetName(typeof(CalendarState), source.CalendarSyncStatus);
+      target.Login = source.Login;
+      target.Memory = source.Memory;
+      target.NumberOfCores = source.NrOfCores;
+      target.NumberOfFreeCores = source.NrOfFreeCores;
+      target.Status = Enum.GetName(typeof(State), source.State);
+      return target;
+    }
+
+    public override ClientDto EntityToDto(Client source, ClientDto target) {
+      if (source == null)
+        return null;
+      if(target == null) 
+        target = new ClientDto();
+      target.CpuSpeedPerCore = source.CPUSpeed;
+      target.FreeMemory = source.FreeMemory ?? 0;
+      target.Id = source.ResourceId;
+      target.CalendarSyncStatus = (CalendarState) Enum.Parse(typeof (CalendarState), source.CalendarSyncStatus);
+      target.Login = source.Login;
+      target.Memory = source.Memory ?? 0;
+      target.Name = source.Name;
+      target.NrOfCores = source.NumberOfCores ?? 0;
+      target.NrOfFreeCores = source.NumberOfFreeCores ?? 0;
+      target.State = (State) Enum.Parse(typeof (State), source.Status);
+      return target;
+    } 
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientGroupDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientGroupDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ClientGroupDao.cs	(revision 4073)
@@ -0,0 +1,163 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Server.DataAccess;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public class ClientGroupDao : BaseDao<ClientGroupDto, ClientGroup>, IClientGroupDao {
+
+
+    #region IGenericDao<ClientGroupDto,ClientGroup> Members
+
+    public ClientGroupDto FindById(Guid id) {
+      return (from cc in Context.Resources.OfType<ClientGroup>()
+              where cc.ResourceId.Equals(id)
+              select EntityToDto(cc, null)).SingleOrDefault();
+    }
+
+
+    public IEnumerable<ClientGroupDto> FindAll() {
+      return (from cc in Context.Resources.OfType<ClientGroup>()
+              select EntityToDto(cc, null)).ToList();
+    }
+
+    public ClientGroupDto Insert(ClientGroupDto bObj) {
+      //Auto GUID is disabled for Ressource... thx to the clients... grml      
+      if(bObj.Id == Guid.Empty)
+        bObj.Id = Guid.NewGuid();
+
+      ClientGroup cc = DtoToEntity(bObj, null);
+      Context.Resources.InsertOnSubmit(cc);
+      CommitChanges();
+      bObj.Id = cc.ResourceId;
+      return bObj;
+    }
+
+    public void Delete(ClientGroupDto bObj) {
+      
+      //Deleting all references
+      Context.ClientGroup_Resources.DeleteAllOnSubmit(Context.ClientGroup_Resources.Where(cg => cg.ClientGroupId.Equals(bObj.Id)));
+
+      Resource res = Context.Resources.SingleOrDefault(c => c.ResourceId.Equals(bObj.Id));
+
+      Context.Resources.DeleteOnSubmit(res);
+      CommitChanges();
+    }
+
+    public void Update(ClientGroupDto bObj) {
+      ClientGroup client = Context.Resources.OfType<ClientGroup>().SingleOrDefault(c => c.ResourceId.Equals(bObj.Id));
+      DtoToEntity(bObj, client);
+      CommitChanges();
+    }
+
+    public void AddRessourceToClientGroup(Guid resource, Guid clientGroupId) {
+      ClientGroup cg = Context.Resources.OfType<ClientGroup>().SingleOrDefault(c => c.ResourceId.Equals(clientGroupId));
+      Resource res = Context.Resources.SingleOrDefault(r => r.ResourceId.Equals(resource));
+      cg.ClientGroup_Resources_Children.Add(new ClientGroup_Resource { ClientGroup = cg, Resource = res });      
+      CommitChanges();
+    }
+
+    public void RemoveRessourceFromClientGroup(Guid resource, Guid clientGroupId) {
+      ClientGroup_Resource cgr =
+        Context.ClientGroup_Resources.SingleOrDefault(
+          cg => cg.ResourceId.Equals(resource) && cg.ClientGroupId.Equals(clientGroupId));
+      Context.ClientGroup_Resources.DeleteOnSubmit(cgr);
+      CommitChanges();
+    }
+
+    public IEnumerable<ClientGroupDto> MemberOf(ClientDto client) {
+      return (from cgr in Context.ClientGroup_Resources
+              where cgr.ResourceId.Equals(client.Id)
+              select EntityToDto(cgr.ClientGroup, null)).ToList();
+    }
+
+    public IEnumerable<ClientGroupDto> FindAllWithSubGroupsAndClients() {
+      List<ClientGroupDto> groupList = new List<ClientGroupDto>();
+
+      var q = (from cg in Context.Resources.OfType<ClientGroup>()
+               where !Context.ClientGroup_Resources.Any(cgr => cgr.ResourceId.Equals(cg.ResourceId))
+               select cg);
+
+      foreach (ClientGroup cg in q) {
+        ClientGroupDto cgd = EntityToDto(cg, null);
+        groupList.Add(cgd);
+        FillSubGroupsAndClientsRecursivly(cgd, cg.ClientGroup_Resources_Children);        
+      }
+      return groupList;
+    }
+
+    private void FillSubGroupsAndClientsRecursivly(ClientGroupDto parentClientGroup, System.Data.Linq.EntitySet<ClientGroup_Resource> parentResourceSet) {
+      ClientDao cd = new ClientDao();      
+      //Get all the Groups
+      
+      var qGroups = (from cg in Context.Resources.OfType<ClientGroup>()
+               where cg.ClientGroup_Resources_Parents.Any(cgr => cgr.ClientGroupId.Equals(parentClientGroup.Id))
+               select cg);
+
+      foreach (ClientGroup cg in qGroups) {
+        ClientGroupDto cgd = EntityToDto(cg, null);
+        parentClientGroup.Resources.Add(cgd);
+        FillSubGroupsAndClientsRecursivly(cgd, cg.ClientGroup_Resources_Children);
+      }
+
+      //get the clients
+      var qClients = (from cl in Context.Resources.OfType<Client>()
+               where cl.ClientGroup_Resources_Parents.Any(cgr => cgr.ClientGroupId.Equals(parentClientGroup.Id))
+               select cl);
+      foreach (Client client in qClients) {
+        parentClientGroup.Resources.Add(cd.EntityToDto(client, null));                        
+      }     
+    }
+
+    public IEnumerable<Guid> FindAllGroupAndParentGroupIdsForClient(Guid clientId) {
+      List<Guid> guids = new List<Guid>();
+      Client c = Context.Resources.OfType<Client>().SingleOrDefault(client => client.ResourceId.Equals(clientId));
+      FindAllGroupAndParentGroupIdsForClientRecursive(c, guids);
+      return guids;
+    }
+
+    //Massivly error Prone
+    private void FindAllGroupAndParentGroupIdsForClientRecursive(Resource resource, List<Guid> guids) {
+      foreach (ClientGroup_Resource cgr in resource.ClientGroup_Resources_Parents) {
+        guids.Add(cgr.ClientGroupId);
+        FindAllGroupAndParentGroupIdsForClientRecursive(cgr.ClientGroup, guids);        
+      }
+    }
+
+    #endregion
+
+    public override ClientGroup DtoToEntity(ClientGroupDto source, ClientGroup target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new ClientGroup();
+
+      target.Name = source.Name;
+      target.ResourceId = source.Id;
+
+      return target;
+    }
+
+    public override ClientGroupDto EntityToDto(ClientGroup source, ClientGroupDto target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new ClientGroupDto();
+
+      target.Id = source.ResourceId;
+      target.Name = source.Name;
+
+      return target;
+    }
+
+    public IEnumerable<ClientGroupDto> FindByName(string res) {
+      return (from cq in Context.Resources.OfType<ClientGroup>()
+              where cq.Name == res
+              select EntityToDto(cq, null)).ToList();      
+    }
+
+
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ContextFactory.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ContextFactory.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/ContextFactory.cs	(revision 4073)
@@ -0,0 +1,43 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data.Common;
+using System.Data.SqlClient;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public class ContextFactory {
+    [ThreadStatic]
+    private static HiveDataContext _hiveDataContext = null;
+
+    [ThreadStatic]
+    private static SqlTransaction _currentTransaction = null;
+
+    public static HiveDataContext Context { 
+      get {
+        if (_hiveDataContext == null) {
+          Logger.Debug("Requested new Data Context");
+          _hiveDataContext = new HiveDataContext("Data Source=127.0.0.1;Initial Catalog=HeuristicLab.Hive;Integrated Security=SSPI");
+          _hiveDataContext.CommandTimeout = 240;
+        }
+        return _hiveDataContext;        
+      } 
+      set {        
+        _hiveDataContext = value;
+      }
+    }
+
+    public static SqlTransaction CurrentTransaction { 
+      get {
+        return _currentTransaction;
+      } set {
+        _currentTransaction = value;
+      } 
+    }
+
+    public static bool IsContextNull() {
+      return _hiveDataContext == null;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HeuristicLab.Hive.Server.LINQDataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HeuristicLab.Hive.Server.LINQDataAccess-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HeuristicLab.Hive.Server.LINQDataAccess-3.3.csproj	(revision 4073)
@@ -0,0 +1,171 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A4499DDD-D1B8-414F-98F6-903C2C71BEB0}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Server.LINQDataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Server.LINQDataAccess-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="BaseDao.cs" />
+    <Compile Include="ClientConfigDao.cs" />
+    <Compile Include="ClientDao.cs" />
+    <Compile Include="ClientGroupDao.cs" />
+    <Compile Include="ContextFactory.cs" />
+    <Compile Include="HiveDataContext.cs" />
+    <Compile Include="JobDao.cs" />
+    <Compile Include="LINQDataAccessPlugin.cs" />
+    <Compile Include="PluginInfoDao.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+    <Compile Include="UptimeCalendarDao.cs" />
+    <Compile Include="VarBinaryStream.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Server.DataAccess\3.3\HeuristicLab.Hive.Server.DataAccess-3.3.csproj">
+      <Project>{4D5A2A16-66C2-431D-9AA3-BD3041E64B84}</Project>
+      <Name>HeuristicLab.Hive.Server.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="HiveDataContext.xml" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.dbml
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.dbml	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.dbml	(revision 4073)
@@ -0,0 +1,137 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Database Name="HeuristicLab.Hive.Linq" Class="HiveDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
+  <Connection Mode="AppSettings" ConnectionString="Data Source=SEMTEX-PC;Initial Catalog=HeuristicLab.Hive.Linq;Integrated Security=True" SettingsObjectName="HeuristicLab.Hive.Server.LINQDataAccess.Properties.Settings" SettingsPropertyName="HeuristicLab_Hive_LinqConnectionString" Provider="System.Data.SqlClient" />
+  <Table Name="dbo.AssignedResources" Member="AssignedResources">
+    <Type Name="AssignedResource">
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="JobId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="AssignedRessourcesId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Association Name="Resource_AssignedResource" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Job_AssignedResource" Member="Job" ThisKey="JobId" OtherKey="JobId" Type="Job" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.UptimeStatistics" Member="UptimeStatistics">
+    <Type Name="UptimeStatistic">
+      <Column Name="UptimeStatisticsId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Login" Type="System.DateTime" DbType="DateTime" CanBeNull="true" />
+      <Column Name="Logout" Type="System.DateTime" DbType="DateTime" CanBeNull="true" />
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
+      <Association Name="Client_UptimeStatistic" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" Type="Client" IsForeignKey="true" DeleteRule="SET NULL" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ClientConfig" Member="ClientConfigs">
+    <Type Name="ClientConfig">
+      <Column Name="ClientConfigId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="UpDownTimeCalendar" Type="System.Xml.Linq.XElement" DbType="Xml" CanBeNull="true" UpdateCheck="Never" />
+      <Column Name="HeartBeatIntervall" Type="System.Int32" DbType="Int" CanBeNull="true" />
+      <Association Name="ClientConfig_Client" Member="Clients" ThisKey="ClientConfigId" OtherKey="ClientConfigId" Type="Client" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ClientGroup" Member="ClientGroups">
+    <Type Name="ClientGroup">
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="ClientGroup_ClientGroup_Resource" Member="ClientGroup_Resources" ThisKey="ResourceId" OtherKey="ClientGroupId" Type="ClientGroup_Resource" />
+      <Association Name="Resource_ClientGroup" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ClientGroup_Resource" Member="ClientGroup_Resources">
+    <Type Name="ClientGroup_Resource">
+      <Column Name="ClientGroupId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="ClientGroup_RessourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Association Name="ClientGroup_ClientGroup_Resource" Member="ClientGroup" ThisKey="ClientGroupId" OtherKey="ResourceId" Type="ClientGroup" IsForeignKey="true" />
+      <Association Name="Resource_ClientGroup_Resource" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.PluginInfo" Member="PluginInfos">
+    <Type Name="PluginInfo">
+      <Column Name="PluginId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="Version" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="BuildDate" Type="System.String" DbType="VarChar(20)" CanBeNull="true" />
+      <Association Name="PluginInfo_RequiredPlugin" Member="RequiredPlugins" ThisKey="PluginId" OtherKey="PluginId" Type="RequiredPlugin" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Project" Member="Projects">
+    <Type Name="Project">
+      <Column Name="ProjectId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="Project_Job" Member="Jobs" ThisKey="ProjectId" OtherKey="ProjectId" Type="Job" />
+    </Type>
+  </Table>
+  <Table Name="dbo.RequiredPlugins" Member="RequiredPlugins">
+    <Type Name="RequiredPlugin">
+      <Column Name="JobId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="PluginId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="RequiredPluginId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" UpdateCheck="Never" />
+      <Association Name="PluginInfo_RequiredPlugin" Member="PluginInfo" ThisKey="PluginId" OtherKey="PluginId" Type="PluginInfo" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="Job_RequiredPlugin" Member="Job" ThisKey="JobId" OtherKey="JobId" Type="Job" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Resource" Member="Resources">
+    <Type Name="Resource">
+      <Column Name="ResourceId" AutoSync="OnInsert" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Association Name="Resource_AssignedResource" Member="AssignedResources" ThisKey="ResourceId" OtherKey="ResourceId" Type="AssignedResource" />
+      <Association Name="Resource_ClientGroup" Member="ClientGroup" ThisKey="ResourceId" OtherKey="ResourceId" Type="ClientGroup" Cardinality="One" />
+      <Association Name="Resource_ClientGroup_Resource" Member="ClientGroup_Resources" ThisKey="ResourceId" OtherKey="ResourceId" Type="ClientGroup_Resource" />
+      <Association Name="Resource_UptimeCalendar" Member="UptimeCalendars" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeCalendar" />
+      <Association Name="Resource_Client" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" Type="Client" Cardinality="One" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Job" Member="Jobs">
+    <Type Name="Job">
+      <Column Name="JobId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="ParentJobId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
+      <Column Name="JobState" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
+      <Column Name="Percentage" Type="System.Double" DbType="Float" CanBeNull="true" />
+      <Column Name="SerializedJob" Type="System.Data.Linq.Binary" DbType="VarBinary(MAX)" CanBeNull="true" UpdateCheck="Never" IsDelayLoaded="true" />
+      <Column Name="DateCreated" Type="System.DateTime" DbType="DateTime" CanBeNull="true" />
+      <Column Name="DateCalculated" Type="System.DateTime" DbType="DateTime" CanBeNull="true" />
+      <Column Name="DateFinished" Type="System.DateTime" DbType="DateTime" CanBeNull="true" />
+      <Column Name="Priority" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="ProjectId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
+      <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
+      <Column Name="CoresNeeded" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="MemoryNeeded" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Job_AssignedResource" Member="AssignedResources" ThisKey="JobId" OtherKey="JobId" Type="AssignedResource" />
+      <Association Name="Job_RequiredPlugin" Member="RequiredPlugins" ThisKey="JobId" OtherKey="JobId" Type="RequiredPlugin" />
+      <Association Name="Job_Job" Member="Jobs" ThisKey="JobId" OtherKey="ParentJobId" Type="Job" />
+      <Association Name="Job_Job" Member="Job1" ThisKey="ParentJobId" OtherKey="JobId" Type="Job" IsForeignKey="true" />
+      <Association Name="Project_Job" Member="Project" ThisKey="ProjectId" OtherKey="ProjectId" Type="Project" IsForeignKey="true" DeleteRule="SET NULL" />
+      <Association Name="Client_Job" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" Type="Client" IsForeignKey="true" DeleteRule="SET NULL" />
+    </Type>
+  </Table>
+  <Table Name="dbo.UptimeCalendar" Member="UptimeCalendars">
+    <Type Name="UptimeCalendar">
+      <Column Name="UptimeCalendarId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="StartDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="EndDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="AllDayEvent" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
+      <Column Name="Recurring" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
+      <Column Name="RecurringId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
+      <Association Name="Resource_UptimeCalendar" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.Client" Member="Clients">
+    <Type Name="Client">
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="CPUSpeed" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="Memory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="Login" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="Status" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="CalendarSyncStatus" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
+      <Column Name="UseCalendarFromResourceId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
+      <Column Name="ClientConfigId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
+      <Column Name="NumberOfCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="NumberOfFreeCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="FreeMemory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Association Name="Client_UptimeStatistic" Member="UptimeStatistics" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeStatistic" />
+      <Association Name="Client_Job" Member="Jobs" ThisKey="ResourceId" OtherKey="ResourceId" Type="Job" />
+      <Association Name="Resource_Client" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
+      <Association Name="ClientConfig_Client" Member="ClientConfig" ThisKey="ClientConfigId" OtherKey="ClientConfigId" Type="ClientConfig" IsForeignKey="true" DeleteRule="SET NULL" />
+    </Type>
+  </Table>
+</Database>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.dbml.layout
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.dbml.layout	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.dbml.layout	(revision 4073)
@@ -0,0 +1,176 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 14.25, 13.625" name="DataClasses1">
+  <DataContextMoniker Name="/HiveDataContext" />
+  <nestedChildShapes>
+    <classShape Id="3bbfffd4-3ad8-4ff9-b0ff-bdddca70b322" absoluteBounds="3.5, 3.75, 2, 1.3862939453125005">
+      <DataClassMoniker Name="/HiveDataContext/AssignedResource" />
+      <nestedChildShapes>
+        <elementListCompartment Id="40e2e788-932b-41d4-9853-f4bc011a045a" absoluteBounds="3.515, 4.21, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="93016de7-5896-4132-9db6-bc2fe38230fe" absoluteBounds="0.5, 10.125, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/HiveDataContext/UptimeStatistic" />
+      <nestedChildShapes>
+        <elementListCompartment Id="c1f9c6c9-81a2-4007-8bd0-bcadb42ee3d5" absoluteBounds="0.51499999999999968, 10.585, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="5f1881a6-9a97-4298-a30e-bc434b948d15" absoluteBounds="3.625, 12, 2, 1.3862939453124987">
+      <DataClassMoniker Name="/HiveDataContext/ClientConfig" />
+      <nestedChildShapes>
+        <elementListCompartment Id="3dbf7375-bb24-421c-a581-712b9ba03996" absoluteBounds="3.64, 12.46, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="fdda4acc-8a1b-47c8-95ae-5e366f019c84" absoluteBounds="6, 5, 2, 1.0016910807291666">
+      <DataClassMoniker Name="/HiveDataContext/ClientGroup" />
+      <nestedChildShapes>
+        <elementListCompartment Id="a7ba98a6-72ae-4d79-ac43-e86da625101e" absoluteBounds="6.0150000000000006, 5.46, 1.9700000000000002, 0.44169108072916669" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="0535d2ec-d743-4b65-a1d6-70f7af1eead3" absoluteBounds="6, 6.375, 2, 1.3862939453125005">
+      <DataClassMoniker Name="/HiveDataContext/ClientGroup_Resource" />
+      <nestedChildShapes>
+        <elementListCompartment Id="21c0b804-20b8-44c5-8ca5-27abfd546691" absoluteBounds="6.015, 6.835, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="a054f27a-f931-4019-b8a0-500bbd926986" absoluteBounds="12, 6.375, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/HiveDataContext/PluginInfo" />
+      <nestedChildShapes>
+        <elementListCompartment Id="02e6b3f0-ccab-4dba-863d-9d35e1214765" absoluteBounds="12.015, 6.835, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="401c6a1e-69dc-43e4-a4c6-bfc7c2130170" absoluteBounds="6.25, 10.5, 2, 1.193992513020834">
+      <DataClassMoniker Name="/HiveDataContext/Project" />
+      <nestedChildShapes>
+        <elementListCompartment Id="ca3c7af1-fbed-43b6-8624-d94da9397e73" absoluteBounds="6.265, 10.96, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="59a84aec-bc57-49b5-a709-71cdf7612b31" absoluteBounds="12, 8.75, 2, 1.3862939453124987">
+      <DataClassMoniker Name="/HiveDataContext/RequiredPlugin" />
+      <nestedChildShapes>
+        <elementListCompartment Id="eabd8d36-2ac8-4d59-9e58-18e1ce2c7d22" absoluteBounds="12.015, 9.21, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="e44e8355-4290-42f0-8b46-4473e91e504b" absoluteBounds="3.375, 5.75, 2, 1.1939925130208327">
+      <DataClassMoniker Name="/HiveDataContext/Resource" />
+      <nestedChildShapes>
+        <elementListCompartment Id="822605f6-079e-4225-bd10-dc002d09045d" absoluteBounds="3.39, 6.21, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(7 : 6.00169108072917); (7 : 6.375)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/ClientGroup/ClientGroup_ClientGroup_Resource" />
+      <nodes>
+        <classShapeMoniker Id="fdda4acc-8a1b-47c8-95ae-5e366f019c84" />
+        <classShapeMoniker Id="0535d2ec-d743-4b65-a1d6-70f7af1eead3" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(13 : 7.95359537760417); (13 : 8.75)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/PluginInfo/PluginInfo_RequiredPlugin" />
+      <nodes>
+        <classShapeMoniker Id="a054f27a-f931-4019-b8a0-500bbd926986" />
+        <classShapeMoniker Id="59a84aec-bc57-49b5-a709-71cdf7612b31" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(4.78125 : 5.75); (4.78125 : 5.1362939453125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_AssignedResource" />
+      <nodes>
+        <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
+        <classShapeMoniker Id="3bbfffd4-3ad8-4ff9-b0ff-bdddca70b322" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.375 : 5.87584554036458); (6 : 5.87584554036458)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_ClientGroup" />
+      <nodes>
+        <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
+        <classShapeMoniker Id="fdda4acc-8a1b-47c8-95ae-5e366f019c84" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.375 : 6.65949625651042); (6 : 6.65949625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_ClientGroup_Resource" />
+      <nodes>
+        <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
+        <classShapeMoniker Id="0535d2ec-d743-4b65-a1d6-70f7af1eead3" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="9af04358-a545-4e37-bb13-d249fecfa769" absoluteBounds="9, 6.5, 2, 3.5016097005208326">
+      <DataClassMoniker Name="/HiveDataContext/Job" />
+      <nestedChildShapes>
+        <elementListCompartment Id="b55e771e-4639-44c8-9d16-727b309f657d" absoluteBounds="9.015, 6.96, 1.9700000000000002, 2.941609700520833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(10 : 6.5); (10 : 4.34375); (5.5 : 4.34375)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Job/Job_AssignedResource" />
+      <nodes>
+        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
+        <classShapeMoniker Id="3bbfffd4-3ad8-4ff9-b0ff-bdddca70b322" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(11 : 9.37580485026042); (12 : 9.37580485026042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Job/Job_RequiredPlugin" />
+      <nodes>
+        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
+        <classShapeMoniker Id="59a84aec-bc57-49b5-a709-71cdf7612b31" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(9.70923076923077 : 10.0016097005208); (9.70923076923077 : 10.2516097005208); (10.3046153846154 : 10.2516097005208); (10.3046153846154 : 10.0016097005208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Job/Job_Job" />
+      <nodes>
+        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
+        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(8.25 : 11.0969962565104); (9.32336288461538 : 11.0969962565104); (9.32336288461538 : 10.0016097005208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Project/Project_Job" />
+      <nodes>
+        <classShapeMoniker Id="401c6a1e-69dc-43e4-a4c6-bfc7c2130170" />
+        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="9ae82b5f-6e47-4a8e-8350-f7312381bb3b" absoluteBounds="0.625, 5.125, 2, 2.1554996744791666">
+      <DataClassMoniker Name="/HiveDataContext/UptimeCalendar" />
+      <nestedChildShapes>
+        <elementListCompartment Id="7469c6a3-4cb2-41c2-82b9-6999782218dd" absoluteBounds="0.64000000000000012, 5.585, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(3.375 : 6.34699625651042); (2.625 : 6.34699625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_UptimeCalendar" />
+      <nodes>
+        <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
+        <classShapeMoniker Id="9ae82b5f-6e47-4a8e-8350-f7312381bb3b" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="51cb317e-413a-4e25-a9b6-e903322f0371" absoluteBounds="3.875, 8.25, 2, 2.9247054036458331">
+      <DataClassMoniker Name="/HiveDataContext/Client" />
+      <nestedChildShapes>
+        <elementListCompartment Id="0103eb78-0280-47ac-a748-9c6593a9640b" absoluteBounds="3.89, 8.71, 1.9700000000000002, 2.364705403645833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(3.875 : 10.6498527018229); (2.5 : 10.6498527018229)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Client/Client_UptimeStatistic" />
+      <nodes>
+        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
+        <classShapeMoniker Id="93016de7-5896-4132-9db6-bc2fe38230fe" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(5.875 : 9.12580485026042); (9 : 9.12580485026042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Client/Client_Job" />
+      <nodes>
+        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
+        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(4.625 : 6.94399251302083); (4.625 : 8.25)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_Client" />
+      <nodes>
+        <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
+        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(4.75 : 12); (4.75 : 11.1747054036458)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/HiveDataContext/ClientConfig/ClientConfig_Client" />
+      <nodes>
+        <classShapeMoniker Id="5f1881a6-9a97-4298-a30e-bc434b948d15" />
+        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
+      </nodes>
+    </associationConnector>
+  </nestedChildShapes>
+</ordesignerObjectsDiagram>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Hive.designer.cs	(revision 4073)
@@ -0,0 +1,2996 @@
+﻿#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3603
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess
+{
+	using System.Data.Linq;
+	using System.Data.Linq.Mapping;
+	using System.Data;
+	using System.Collections.Generic;
+	using System.Reflection;
+	using System.Linq;
+	using System.Linq.Expressions;
+	using System.ComponentModel;
+	using System;
+	
+	
+	[System.Data.Linq.Mapping.DatabaseAttribute(Name="HeuristicLab.Hive.Linq")]
+	public partial class HiveDataContext : System.Data.Linq.DataContext
+	{
+		
+		private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
+		
+    #region Extensibility Method Definitions
+    partial void OnCreated();
+    partial void InsertAssignedResource(AssignedResource instance);
+    partial void UpdateAssignedResource(AssignedResource instance);
+    partial void DeleteAssignedResource(AssignedResource instance);
+    partial void InsertUptimeStatistic(UptimeStatistic instance);
+    partial void UpdateUptimeStatistic(UptimeStatistic instance);
+    partial void DeleteUptimeStatistic(UptimeStatistic instance);
+    partial void InsertClientConfig(ClientConfig instance);
+    partial void UpdateClientConfig(ClientConfig instance);
+    partial void DeleteClientConfig(ClientConfig instance);
+    partial void InsertClientGroup(ClientGroup instance);
+    partial void UpdateClientGroup(ClientGroup instance);
+    partial void DeleteClientGroup(ClientGroup instance);
+    partial void InsertClientGroup_Resource(ClientGroup_Resource instance);
+    partial void UpdateClientGroup_Resource(ClientGroup_Resource instance);
+    partial void DeleteClientGroup_Resource(ClientGroup_Resource instance);
+    partial void InsertPluginInfo(PluginInfo instance);
+    partial void UpdatePluginInfo(PluginInfo instance);
+    partial void DeletePluginInfo(PluginInfo instance);
+    partial void InsertProject(Project instance);
+    partial void UpdateProject(Project instance);
+    partial void DeleteProject(Project instance);
+    partial void InsertRequiredPlugin(RequiredPlugin instance);
+    partial void UpdateRequiredPlugin(RequiredPlugin instance);
+    partial void DeleteRequiredPlugin(RequiredPlugin instance);
+    partial void InsertResource(Resource instance);
+    partial void UpdateResource(Resource instance);
+    partial void DeleteResource(Resource instance);
+    partial void InsertJob(Job instance);
+    partial void UpdateJob(Job instance);
+    partial void DeleteJob(Job instance);
+    partial void InsertUptimeCalendar(UptimeCalendar instance);
+    partial void UpdateUptimeCalendar(UptimeCalendar instance);
+    partial void DeleteUptimeCalendar(UptimeCalendar instance);
+    partial void InsertClient(Client instance);
+    partial void UpdateClient(Client instance);
+    partial void DeleteClient(Client instance);
+    #endregion
+		
+		public HiveDataContext() : 
+				base(global::HeuristicLab.Hive.Server.LINQDataAccess.Properties.Settings.Default.HeuristicLab_Hive_LinqConnectionString, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public HiveDataContext(string connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public HiveDataContext(System.Data.IDbConnection connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public HiveDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public HiveDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public System.Data.Linq.Table<AssignedResource> AssignedResources
+		{
+			get
+			{
+				return this.GetTable<AssignedResource>();
+			}
+		}
+		
+		public System.Data.Linq.Table<UptimeStatistic> UptimeStatistics
+		{
+			get
+			{
+				return this.GetTable<UptimeStatistic>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientConfig> ClientConfigs
+		{
+			get
+			{
+				return this.GetTable<ClientConfig>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientGroup> ClientGroups
+		{
+			get
+			{
+				return this.GetTable<ClientGroup>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientGroup_Resource> ClientGroup_Resources
+		{
+			get
+			{
+				return this.GetTable<ClientGroup_Resource>();
+			}
+		}
+		
+		public System.Data.Linq.Table<PluginInfo> PluginInfos
+		{
+			get
+			{
+				return this.GetTable<PluginInfo>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Project> Projects
+		{
+			get
+			{
+				return this.GetTable<Project>();
+			}
+		}
+		
+		public System.Data.Linq.Table<RequiredPlugin> RequiredPlugins
+		{
+			get
+			{
+				return this.GetTable<RequiredPlugin>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Resource> Resources
+		{
+			get
+			{
+				return this.GetTable<Resource>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Job> Jobs
+		{
+			get
+			{
+				return this.GetTable<Job>();
+			}
+		}
+		
+		public System.Data.Linq.Table<UptimeCalendar> UptimeCalendars
+		{
+			get
+			{
+				return this.GetTable<UptimeCalendar>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Client> Clients
+		{
+			get
+			{
+				return this.GetTable<Client>();
+			}
+		}
+	}
+	
+	[Table(Name="dbo.AssignedResources")]
+	public partial class AssignedResource : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ResourceId;
+		
+		private System.Guid _JobId;
+		
+		private System.Guid _AssignedRessourcesId;
+		
+		private EntityRef<Resource> _Resource;
+		
+		private EntityRef<Job> _Job;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnAssignedRessourcesIdChanging(System.Guid value);
+    partial void OnAssignedRessourcesIdChanged();
+    #endregion
+		
+		public AssignedResource()
+		{
+			this._Resource = default(EntityRef<Resource>);
+			this._Job = default(EntityRef<Job>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_JobId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					if (this._Job.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_AssignedRessourcesId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid AssignedRessourcesId
+		{
+			get
+			{
+				return this._AssignedRessourcesId;
+			}
+			set
+			{
+				if ((this._AssignedRessourcesId != value))
+				{
+					this.OnAssignedRessourcesIdChanging(value);
+					this.SendPropertyChanging();
+					this._AssignedRessourcesId = value;
+					this.SendPropertyChanged("AssignedRessourcesId");
+					this.OnAssignedRessourcesIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Resource_AssignedResource", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.AssignedResources.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.AssignedResources.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		[Association(Name="Job_AssignedResource", Storage="_Job", ThisKey="JobId", OtherKey="JobId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
+		public Job Job
+		{
+			get
+			{
+				return this._Job.Entity;
+			}
+			set
+			{
+				Job previousValue = this._Job.Entity;
+				if (((previousValue != value) 
+							|| (this._Job.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Job.Entity = null;
+						previousValue.AssignedResources.Remove(this);
+					}
+					this._Job.Entity = value;
+					if ((value != null))
+					{
+						value.AssignedResources.Add(this);
+						this._JobId = value.JobId;
+					}
+					else
+					{
+						this._JobId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Job");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.UptimeStatistics")]
+	public partial class UptimeStatistic : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _UptimeStatisticsId;
+		
+		private System.Nullable<System.DateTime> _Login;
+		
+		private System.Nullable<System.DateTime> _Logout;
+		
+		private System.Nullable<System.Guid> _ResourceId;
+		
+		private EntityRef<Client> _Client;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnUptimeStatisticsIdChanging(System.Guid value);
+    partial void OnUptimeStatisticsIdChanged();
+    partial void OnLoginChanging(System.Nullable<System.DateTime> value);
+    partial void OnLoginChanged();
+    partial void OnLogoutChanging(System.Nullable<System.DateTime> value);
+    partial void OnLogoutChanged();
+    partial void OnResourceIdChanging(System.Nullable<System.Guid> value);
+    partial void OnResourceIdChanged();
+    #endregion
+		
+		public UptimeStatistic()
+		{
+			this._Client = default(EntityRef<Client>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_UptimeStatisticsId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid UptimeStatisticsId
+		{
+			get
+			{
+				return this._UptimeStatisticsId;
+			}
+			set
+			{
+				if ((this._UptimeStatisticsId != value))
+				{
+					this.OnUptimeStatisticsIdChanging(value);
+					this.SendPropertyChanging();
+					this._UptimeStatisticsId = value;
+					this.SendPropertyChanged("UptimeStatisticsId");
+					this.OnUptimeStatisticsIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Login", DbType="DateTime")]
+		public System.Nullable<System.DateTime> Login
+		{
+			get
+			{
+				return this._Login;
+			}
+			set
+			{
+				if ((this._Login != value))
+				{
+					this.OnLoginChanging(value);
+					this.SendPropertyChanging();
+					this._Login = value;
+					this.SendPropertyChanged("Login");
+					this.OnLoginChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Logout", DbType="DateTime")]
+		public System.Nullable<System.DateTime> Logout
+		{
+			get
+			{
+				return this._Logout;
+			}
+			set
+			{
+				if ((this._Logout != value))
+				{
+					this.OnLogoutChanging(value);
+					this.SendPropertyChanging();
+					this._Logout = value;
+					this.SendPropertyChanged("Logout");
+					this.OnLogoutChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Client.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Client_UptimeStatistic", Storage="_Client", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public Client Client
+		{
+			get
+			{
+				return this._Client.Entity;
+			}
+			set
+			{
+				Client previousValue = this._Client.Entity;
+				if (((previousValue != value) 
+							|| (this._Client.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Client.Entity = null;
+						previousValue.UptimeStatistics.Remove(this);
+					}
+					this._Client.Entity = value;
+					if ((value != null))
+					{
+						value.UptimeStatistics.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Client");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.ClientConfig")]
+	public partial class ClientConfig : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ClientConfigId;
+		
+		private System.Xml.Linq.XElement _UpDownTimeCalendar;
+		
+		private System.Nullable<int> _HeartBeatIntervall;
+		
+		private EntitySet<Client> _Clients;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnClientConfigIdChanging(System.Guid value);
+    partial void OnClientConfigIdChanged();
+    partial void OnUpDownTimeCalendarChanging(System.Xml.Linq.XElement value);
+    partial void OnUpDownTimeCalendarChanged();
+    partial void OnHeartBeatIntervallChanging(System.Nullable<int> value);
+    partial void OnHeartBeatIntervallChanged();
+    #endregion
+		
+		public ClientConfig()
+		{
+			this._Clients = new EntitySet<Client>(new Action<Client>(this.attach_Clients), new Action<Client>(this.detach_Clients));
+			OnCreated();
+		}
+		
+		[Column(Storage="_ClientConfigId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid ClientConfigId
+		{
+			get
+			{
+				return this._ClientConfigId;
+			}
+			set
+			{
+				if ((this._ClientConfigId != value))
+				{
+					this.OnClientConfigIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientConfigId = value;
+					this.SendPropertyChanged("ClientConfigId");
+					this.OnClientConfigIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_UpDownTimeCalendar", DbType="Xml", UpdateCheck=UpdateCheck.Never)]
+		public System.Xml.Linq.XElement UpDownTimeCalendar
+		{
+			get
+			{
+				return this._UpDownTimeCalendar;
+			}
+			set
+			{
+				if ((this._UpDownTimeCalendar != value))
+				{
+					this.OnUpDownTimeCalendarChanging(value);
+					this.SendPropertyChanging();
+					this._UpDownTimeCalendar = value;
+					this.SendPropertyChanged("UpDownTimeCalendar");
+					this.OnUpDownTimeCalendarChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_HeartBeatIntervall", DbType="Int")]
+		public System.Nullable<int> HeartBeatIntervall
+		{
+			get
+			{
+				return this._HeartBeatIntervall;
+			}
+			set
+			{
+				if ((this._HeartBeatIntervall != value))
+				{
+					this.OnHeartBeatIntervallChanging(value);
+					this.SendPropertyChanging();
+					this._HeartBeatIntervall = value;
+					this.SendPropertyChanged("HeartBeatIntervall");
+					this.OnHeartBeatIntervallChanged();
+				}
+			}
+		}
+		
+		[Association(Name="ClientConfig_Client", Storage="_Clients", ThisKey="ClientConfigId", OtherKey="ClientConfigId")]
+		public EntitySet<Client> Clients
+		{
+			get
+			{
+				return this._Clients;
+			}
+			set
+			{
+				this._Clients.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_Clients(Client entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientConfig = this;
+		}
+		
+		private void detach_Clients(Client entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientConfig = null;
+		}
+	}
+	
+	[Table(Name="dbo.ClientGroup")]
+	public partial class ClientGroup : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ResourceId;
+		
+		private EntitySet<ClientGroup_Resource> _ClientGroup_Resources;
+		
+		private EntityRef<Resource> _Resource;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    #endregion
+		
+		public ClientGroup()
+		{
+			this._ClientGroup_Resources = new EntitySet<ClientGroup_Resource>(new Action<ClientGroup_Resource>(this.attach_ClientGroup_Resources), new Action<ClientGroup_Resource>(this.detach_ClientGroup_Resources));
+			this._Resource = default(EntityRef<Resource>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="ClientGroup_ClientGroup_Resource", Storage="_ClientGroup_Resources", ThisKey="ResourceId", OtherKey="ClientGroupId")]
+		public EntitySet<ClientGroup_Resource> ClientGroup_Resources
+		{
+			get
+			{
+				return this._ClientGroup_Resources;
+			}
+			set
+			{
+				this._ClientGroup_Resources.Assign(value);
+			}
+		}
+		
+		[Association(Name="Resource_ClientGroup", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.ClientGroup = null;
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ClientGroup = this;
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_ClientGroup_Resources(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientGroup = this;
+		}
+		
+		private void detach_ClientGroup_Resources(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientGroup = null;
+		}
+	}
+	
+	[Table(Name="dbo.ClientGroup_Resource")]
+	public partial class ClientGroup_Resource : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ClientGroupId;
+		
+		private System.Guid _ResourceId;
+		
+		private System.Guid _ClientGroup_RessourceId;
+		
+		private EntityRef<ClientGroup> _ClientGroup;
+		
+		private EntityRef<Resource> _Resource;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnClientGroupIdChanging(System.Guid value);
+    partial void OnClientGroupIdChanged();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnClientGroup_RessourceIdChanging(System.Guid value);
+    partial void OnClientGroup_RessourceIdChanged();
+    #endregion
+		
+		public ClientGroup_Resource()
+		{
+			this._ClientGroup = default(EntityRef<ClientGroup>);
+			this._Resource = default(EntityRef<Resource>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_ClientGroupId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ClientGroupId
+		{
+			get
+			{
+				return this._ClientGroupId;
+			}
+			set
+			{
+				if ((this._ClientGroupId != value))
+				{
+					if (this._ClientGroup.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientGroupIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientGroupId = value;
+					this.SendPropertyChanged("ClientGroupId");
+					this.OnClientGroupIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ClientGroup_RessourceId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid ClientGroup_RessourceId
+		{
+			get
+			{
+				return this._ClientGroup_RessourceId;
+			}
+			set
+			{
+				if ((this._ClientGroup_RessourceId != value))
+				{
+					this.OnClientGroup_RessourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientGroup_RessourceId = value;
+					this.SendPropertyChanged("ClientGroup_RessourceId");
+					this.OnClientGroup_RessourceIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="ClientGroup_ClientGroup_Resource", Storage="_ClientGroup", ThisKey="ClientGroupId", OtherKey="ResourceId", IsForeignKey=true)]
+		public ClientGroup ClientGroup
+		{
+			get
+			{
+				return this._ClientGroup.Entity;
+			}
+			set
+			{
+				ClientGroup previousValue = this._ClientGroup.Entity;
+				if (((previousValue != value) 
+							|| (this._ClientGroup.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._ClientGroup.Entity = null;
+						previousValue.ClientGroup_Resources.Remove(this);
+					}
+					this._ClientGroup.Entity = value;
+					if ((value != null))
+					{
+						value.ClientGroup_Resources.Add(this);
+						this._ClientGroupId = value.ResourceId;
+					}
+					else
+					{
+						this._ClientGroupId = default(System.Guid);
+					}
+					this.SendPropertyChanged("ClientGroup");
+				}
+			}
+		}
+		
+		[Association(Name="Resource_ClientGroup_Resource", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.ClientGroup_Resources.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ClientGroup_Resources.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.PluginInfo")]
+	public partial class PluginInfo : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _PluginId;
+		
+		private string _Name;
+		
+		private string _Version;
+		
+		private string _BuildDate;
+		
+		private EntitySet<RequiredPlugin> _RequiredPlugins;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnPluginIdChanging(System.Guid value);
+    partial void OnPluginIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    partial void OnVersionChanging(string value);
+    partial void OnVersionChanged();
+    partial void OnBuildDateChanging(string value);
+    partial void OnBuildDateChanged();
+    #endregion
+		
+		public PluginInfo()
+		{
+			this._RequiredPlugins = new EntitySet<RequiredPlugin>(new Action<RequiredPlugin>(this.attach_RequiredPlugins), new Action<RequiredPlugin>(this.detach_RequiredPlugins));
+			OnCreated();
+		}
+		
+		[Column(Storage="_PluginId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid PluginId
+		{
+			get
+			{
+				return this._PluginId;
+			}
+			set
+			{
+				if ((this._PluginId != value))
+				{
+					this.OnPluginIdChanging(value);
+					this.SendPropertyChanging();
+					this._PluginId = value;
+					this.SendPropertyChanged("PluginId");
+					this.OnPluginIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Name", DbType="VarChar(MAX)")]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Version", DbType="VarChar(MAX)")]
+		public string Version
+		{
+			get
+			{
+				return this._Version;
+			}
+			set
+			{
+				if ((this._Version != value))
+				{
+					this.OnVersionChanging(value);
+					this.SendPropertyChanging();
+					this._Version = value;
+					this.SendPropertyChanged("Version");
+					this.OnVersionChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_BuildDate", DbType="VarChar(20)")]
+		public string BuildDate
+		{
+			get
+			{
+				return this._BuildDate;
+			}
+			set
+			{
+				if ((this._BuildDate != value))
+				{
+					this.OnBuildDateChanging(value);
+					this.SendPropertyChanging();
+					this._BuildDate = value;
+					this.SendPropertyChanged("BuildDate");
+					this.OnBuildDateChanged();
+				}
+			}
+		}
+		
+		[Association(Name="PluginInfo_RequiredPlugin", Storage="_RequiredPlugins", ThisKey="PluginId", OtherKey="PluginId")]
+		public EntitySet<RequiredPlugin> RequiredPlugins
+		{
+			get
+			{
+				return this._RequiredPlugins;
+			}
+			set
+			{
+				this._RequiredPlugins.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.PluginInfo = this;
+		}
+		
+		private void detach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.PluginInfo = null;
+		}
+	}
+	
+	[Table(Name="dbo.Project")]
+	public partial class Project : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ProjectId;
+		
+		private string _Name;
+		
+		private EntitySet<Job> _Jobs;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnProjectIdChanging(System.Guid value);
+    partial void OnProjectIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    #endregion
+		
+		public Project()
+		{
+			this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
+			OnCreated();
+		}
+		
+		[Column(Storage="_ProjectId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid ProjectId
+		{
+			get
+			{
+				return this._ProjectId;
+			}
+			set
+			{
+				if ((this._ProjectId != value))
+				{
+					this.OnProjectIdChanging(value);
+					this.SendPropertyChanging();
+					this._ProjectId = value;
+					this.SendPropertyChanged("ProjectId");
+					this.OnProjectIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Name", DbType="VarChar(MAX)")]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Project_Job", Storage="_Jobs", ThisKey="ProjectId", OtherKey="ProjectId")]
+		public EntitySet<Job> Jobs
+		{
+			get
+			{
+				return this._Jobs;
+			}
+			set
+			{
+				this._Jobs.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Project = this;
+		}
+		
+		private void detach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Project = null;
+		}
+	}
+	
+	[Table(Name="dbo.RequiredPlugins")]
+	public partial class RequiredPlugin : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _JobId;
+		
+		private System.Guid _PluginId;
+		
+		private System.Guid _RequiredPluginId;
+		
+		private EntityRef<PluginInfo> _PluginInfo;
+		
+		private EntityRef<Job> _Job;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnPluginIdChanging(System.Guid value);
+    partial void OnPluginIdChanged();
+    partial void OnRequiredPluginIdChanging(System.Guid value);
+    partial void OnRequiredPluginIdChanged();
+    #endregion
+		
+		public RequiredPlugin()
+		{
+			this._PluginInfo = default(EntityRef<PluginInfo>);
+			this._Job = default(EntityRef<Job>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_JobId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					if (this._Job.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_PluginId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid PluginId
+		{
+			get
+			{
+				return this._PluginId;
+			}
+			set
+			{
+				if ((this._PluginId != value))
+				{
+					if (this._PluginInfo.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnPluginIdChanging(value);
+					this.SendPropertyChanging();
+					this._PluginId = value;
+					this.SendPropertyChanged("PluginId");
+					this.OnPluginIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_RequiredPluginId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		public System.Guid RequiredPluginId
+		{
+			get
+			{
+				return this._RequiredPluginId;
+			}
+			set
+			{
+				if ((this._RequiredPluginId != value))
+				{
+					this.OnRequiredPluginIdChanging(value);
+					this.SendPropertyChanging();
+					this._RequiredPluginId = value;
+					this.SendPropertyChanged("RequiredPluginId");
+					this.OnRequiredPluginIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="PluginInfo_RequiredPlugin", Storage="_PluginInfo", ThisKey="PluginId", OtherKey="PluginId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
+		public PluginInfo PluginInfo
+		{
+			get
+			{
+				return this._PluginInfo.Entity;
+			}
+			set
+			{
+				PluginInfo previousValue = this._PluginInfo.Entity;
+				if (((previousValue != value) 
+							|| (this._PluginInfo.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._PluginInfo.Entity = null;
+						previousValue.RequiredPlugins.Remove(this);
+					}
+					this._PluginInfo.Entity = value;
+					if ((value != null))
+					{
+						value.RequiredPlugins.Add(this);
+						this._PluginId = value.PluginId;
+					}
+					else
+					{
+						this._PluginId = default(System.Guid);
+					}
+					this.SendPropertyChanged("PluginInfo");
+				}
+			}
+		}
+		
+		[Association(Name="Job_RequiredPlugin", Storage="_Job", ThisKey="JobId", OtherKey="JobId", IsForeignKey=true)]
+		public Job Job
+		{
+			get
+			{
+				return this._Job.Entity;
+			}
+			set
+			{
+				Job previousValue = this._Job.Entity;
+				if (((previousValue != value) 
+							|| (this._Job.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Job.Entity = null;
+						previousValue.RequiredPlugins.Remove(this);
+					}
+					this._Job.Entity = value;
+					if ((value != null))
+					{
+						value.RequiredPlugins.Add(this);
+						this._JobId = value.JobId;
+					}
+					else
+					{
+						this._JobId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Job");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.Resource")]
+	public partial class Resource : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ResourceId;
+		
+		private string _Name;
+		
+		private EntitySet<AssignedResource> _AssignedResources;
+		
+		private EntityRef<ClientGroup> _ClientGroup;
+		
+		private EntitySet<ClientGroup_Resource> _ClientGroup_Resources;
+		
+		private EntitySet<UptimeCalendar> _UptimeCalendars;
+		
+		private EntityRef<Client> _Client;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    #endregion
+		
+		public Resource()
+		{
+			this._AssignedResources = new EntitySet<AssignedResource>(new Action<AssignedResource>(this.attach_AssignedResources), new Action<AssignedResource>(this.detach_AssignedResources));
+			this._ClientGroup = default(EntityRef<ClientGroup>);
+			this._ClientGroup_Resources = new EntitySet<ClientGroup_Resource>(new Action<ClientGroup_Resource>(this.attach_ClientGroup_Resources), new Action<ClientGroup_Resource>(this.detach_ClientGroup_Resources));
+			this._UptimeCalendars = new EntitySet<UptimeCalendar>(new Action<UptimeCalendar>(this.attach_UptimeCalendars), new Action<UptimeCalendar>(this.detach_UptimeCalendars));
+			this._Client = default(EntityRef<Client>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_ResourceId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Name", DbType="VarChar(MAX)")]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Resource_AssignedResource", Storage="_AssignedResources", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<AssignedResource> AssignedResources
+		{
+			get
+			{
+				return this._AssignedResources;
+			}
+			set
+			{
+				this._AssignedResources.Assign(value);
+			}
+		}
+		
+		[Association(Name="Resource_ClientGroup", Storage="_ClientGroup", ThisKey="ResourceId", OtherKey="ResourceId", IsUnique=true, IsForeignKey=false)]
+		public ClientGroup ClientGroup
+		{
+			get
+			{
+				return this._ClientGroup.Entity;
+			}
+			set
+			{
+				ClientGroup previousValue = this._ClientGroup.Entity;
+				if (((previousValue != value) 
+							|| (this._ClientGroup.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._ClientGroup.Entity = null;
+						previousValue.Resource = null;
+					}
+					this._ClientGroup.Entity = value;
+					if ((value != null))
+					{
+						value.Resource = this;
+					}
+					this.SendPropertyChanged("ClientGroup");
+				}
+			}
+		}
+		
+		[Association(Name="Resource_ClientGroup_Resource", Storage="_ClientGroup_Resources", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<ClientGroup_Resource> ClientGroup_Resources
+		{
+			get
+			{
+				return this._ClientGroup_Resources;
+			}
+			set
+			{
+				this._ClientGroup_Resources.Assign(value);
+			}
+		}
+		
+		[Association(Name="Resource_UptimeCalendar", Storage="_UptimeCalendars", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<UptimeCalendar> UptimeCalendars
+		{
+			get
+			{
+				return this._UptimeCalendars;
+			}
+			set
+			{
+				this._UptimeCalendars.Assign(value);
+			}
+		}
+		
+		[Association(Name="Resource_Client", Storage="_Client", ThisKey="ResourceId", OtherKey="ResourceId", IsUnique=true, IsForeignKey=false)]
+		public Client Client
+		{
+			get
+			{
+				return this._Client.Entity;
+			}
+			set
+			{
+				Client previousValue = this._Client.Entity;
+				if (((previousValue != value) 
+							|| (this._Client.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Client.Entity = null;
+						previousValue.Resource = null;
+					}
+					this._Client.Entity = value;
+					if ((value != null))
+					{
+						value.Resource = this;
+					}
+					this.SendPropertyChanged("Client");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_ClientGroup_Resources(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ClientGroup_Resources(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_UptimeCalendars(UptimeCalendar entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_UptimeCalendars(UptimeCalendar entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+	}
+	
+	[Table(Name="dbo.Job")]
+	public partial class Job : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _JobId;
+		
+		private System.Nullable<System.Guid> _ParentJobId;
+		
+		private string _JobState;
+		
+		private System.Nullable<System.Guid> _ResourceId;
+		
+		private System.Nullable<double> _Percentage;
+		
+		private System.Data.Linq.Link<System.Data.Linq.Binary> _SerializedJob;
+		
+		private System.Nullable<System.DateTime> _DateCreated;
+		
+		private System.Nullable<System.DateTime> _DateCalculated;
+		
+		private System.Nullable<System.DateTime> _DateFinished;
+		
+		private int _Priority;
+		
+		private System.Nullable<System.Guid> _ProjectId;
+		
+		private System.Nullable<System.Guid> _UserId;
+		
+		private int _CoresNeeded;
+		
+		private int _MemoryNeeded;
+		
+		private EntitySet<AssignedResource> _AssignedResources;
+		
+		private EntitySet<RequiredPlugin> _RequiredPlugins;
+		
+		private EntitySet<Job> _Jobs;
+		
+		private EntityRef<Job> _Job1;
+		
+		private EntityRef<Project> _Project;
+		
+		private EntityRef<Client> _Client;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnParentJobIdChanging(System.Nullable<System.Guid> value);
+    partial void OnParentJobIdChanged();
+    partial void OnJobStateChanging(string value);
+    partial void OnJobStateChanged();
+    partial void OnResourceIdChanging(System.Nullable<System.Guid> value);
+    partial void OnResourceIdChanged();
+    partial void OnPercentageChanging(System.Nullable<double> value);
+    partial void OnPercentageChanged();
+    partial void OnSerializedJobChanging(System.Data.Linq.Binary value);
+    partial void OnSerializedJobChanged();
+    partial void OnDateCreatedChanging(System.Nullable<System.DateTime> value);
+    partial void OnDateCreatedChanged();
+    partial void OnDateCalculatedChanging(System.Nullable<System.DateTime> value);
+    partial void OnDateCalculatedChanged();
+    partial void OnDateFinishedChanging(System.Nullable<System.DateTime> value);
+    partial void OnDateFinishedChanged();
+    partial void OnPriorityChanging(int value);
+    partial void OnPriorityChanged();
+    partial void OnProjectIdChanging(System.Nullable<System.Guid> value);
+    partial void OnProjectIdChanged();
+    partial void OnUserIdChanging(System.Nullable<System.Guid> value);
+    partial void OnUserIdChanged();
+    partial void OnCoresNeededChanging(int value);
+    partial void OnCoresNeededChanged();
+    partial void OnMemoryNeededChanging(int value);
+    partial void OnMemoryNeededChanged();
+    #endregion
+		
+		public Job()
+		{
+			this._AssignedResources = new EntitySet<AssignedResource>(new Action<AssignedResource>(this.attach_AssignedResources), new Action<AssignedResource>(this.detach_AssignedResources));
+			this._RequiredPlugins = new EntitySet<RequiredPlugin>(new Action<RequiredPlugin>(this.attach_RequiredPlugins), new Action<RequiredPlugin>(this.detach_RequiredPlugins));
+			this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
+			this._Job1 = default(EntityRef<Job>);
+			this._Project = default(EntityRef<Project>);
+			this._Client = default(EntityRef<Client>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_JobId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ParentJobId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ParentJobId
+		{
+			get
+			{
+				return this._ParentJobId;
+			}
+			set
+			{
+				if ((this._ParentJobId != value))
+				{
+					if (this._Job1.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnParentJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._ParentJobId = value;
+					this.SendPropertyChanged("ParentJobId");
+					this.OnParentJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_JobState", DbType="VarChar(MAX)")]
+		public string JobState
+		{
+			get
+			{
+				return this._JobState;
+			}
+			set
+			{
+				if ((this._JobState != value))
+				{
+					this.OnJobStateChanging(value);
+					this.SendPropertyChanging();
+					this._JobState = value;
+					this.SendPropertyChanged("JobState");
+					this.OnJobStateChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Client.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Percentage", DbType="Float")]
+		public System.Nullable<double> Percentage
+		{
+			get
+			{
+				return this._Percentage;
+			}
+			set
+			{
+				if ((this._Percentage != value))
+				{
+					this.OnPercentageChanging(value);
+					this.SendPropertyChanging();
+					this._Percentage = value;
+					this.SendPropertyChanged("Percentage");
+					this.OnPercentageChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_SerializedJob", DbType="VarBinary(MAX)", UpdateCheck=UpdateCheck.Never)]
+		public System.Data.Linq.Binary SerializedJob
+		{
+			get
+			{
+				return this._SerializedJob.Value;
+			}
+			set
+			{
+				if ((this._SerializedJob.Value != value))
+				{
+					this.OnSerializedJobChanging(value);
+					this.SendPropertyChanging();
+					this._SerializedJob.Value = value;
+					this.SendPropertyChanged("SerializedJob");
+					this.OnSerializedJobChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_DateCreated", DbType="DateTime")]
+		public System.Nullable<System.DateTime> DateCreated
+		{
+			get
+			{
+				return this._DateCreated;
+			}
+			set
+			{
+				if ((this._DateCreated != value))
+				{
+					this.OnDateCreatedChanging(value);
+					this.SendPropertyChanging();
+					this._DateCreated = value;
+					this.SendPropertyChanged("DateCreated");
+					this.OnDateCreatedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_DateCalculated", DbType="DateTime")]
+		public System.Nullable<System.DateTime> DateCalculated
+		{
+			get
+			{
+				return this._DateCalculated;
+			}
+			set
+			{
+				if ((this._DateCalculated != value))
+				{
+					this.OnDateCalculatedChanging(value);
+					this.SendPropertyChanging();
+					this._DateCalculated = value;
+					this.SendPropertyChanged("DateCalculated");
+					this.OnDateCalculatedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_DateFinished", DbType="DateTime")]
+		public System.Nullable<System.DateTime> DateFinished
+		{
+			get
+			{
+				return this._DateFinished;
+			}
+			set
+			{
+				if ((this._DateFinished != value))
+				{
+					this.OnDateFinishedChanging(value);
+					this.SendPropertyChanging();
+					this._DateFinished = value;
+					this.SendPropertyChanged("DateFinished");
+					this.OnDateFinishedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Priority", DbType="Int NOT NULL")]
+		public int Priority
+		{
+			get
+			{
+				return this._Priority;
+			}
+			set
+			{
+				if ((this._Priority != value))
+				{
+					this.OnPriorityChanging(value);
+					this.SendPropertyChanging();
+					this._Priority = value;
+					this.SendPropertyChanged("Priority");
+					this.OnPriorityChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ProjectId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ProjectId
+		{
+			get
+			{
+				return this._ProjectId;
+			}
+			set
+			{
+				if ((this._ProjectId != value))
+				{
+					if (this._Project.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnProjectIdChanging(value);
+					this.SendPropertyChanging();
+					this._ProjectId = value;
+					this.SendPropertyChanged("ProjectId");
+					this.OnProjectIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_UserId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_CoresNeeded", DbType="Int NOT NULL")]
+		public int CoresNeeded
+		{
+			get
+			{
+				return this._CoresNeeded;
+			}
+			set
+			{
+				if ((this._CoresNeeded != value))
+				{
+					this.OnCoresNeededChanging(value);
+					this.SendPropertyChanging();
+					this._CoresNeeded = value;
+					this.SendPropertyChanged("CoresNeeded");
+					this.OnCoresNeededChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_MemoryNeeded", DbType="Int NOT NULL")]
+		public int MemoryNeeded
+		{
+			get
+			{
+				return this._MemoryNeeded;
+			}
+			set
+			{
+				if ((this._MemoryNeeded != value))
+				{
+					this.OnMemoryNeededChanging(value);
+					this.SendPropertyChanging();
+					this._MemoryNeeded = value;
+					this.SendPropertyChanged("MemoryNeeded");
+					this.OnMemoryNeededChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Job_AssignedResource", Storage="_AssignedResources", ThisKey="JobId", OtherKey="JobId")]
+		public EntitySet<AssignedResource> AssignedResources
+		{
+			get
+			{
+				return this._AssignedResources;
+			}
+			set
+			{
+				this._AssignedResources.Assign(value);
+			}
+		}
+		
+		[Association(Name="Job_RequiredPlugin", Storage="_RequiredPlugins", ThisKey="JobId", OtherKey="JobId")]
+		public EntitySet<RequiredPlugin> RequiredPlugins
+		{
+			get
+			{
+				return this._RequiredPlugins;
+			}
+			set
+			{
+				this._RequiredPlugins.Assign(value);
+			}
+		}
+		
+		[Association(Name="Job_Job", Storage="_Jobs", ThisKey="JobId", OtherKey="ParentJobId")]
+		public EntitySet<Job> Jobs
+		{
+			get
+			{
+				return this._Jobs;
+			}
+			set
+			{
+				this._Jobs.Assign(value);
+			}
+		}
+		
+		[Association(Name="Job_Job", Storage="_Job1", ThisKey="ParentJobId", OtherKey="JobId", IsForeignKey=true)]
+		public Job Job1
+		{
+			get
+			{
+				return this._Job1.Entity;
+			}
+			set
+			{
+				Job previousValue = this._Job1.Entity;
+				if (((previousValue != value) 
+							|| (this._Job1.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Job1.Entity = null;
+						previousValue.Jobs.Remove(this);
+					}
+					this._Job1.Entity = value;
+					if ((value != null))
+					{
+						value.Jobs.Add(this);
+						this._ParentJobId = value.JobId;
+					}
+					else
+					{
+						this._ParentJobId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Job1");
+				}
+			}
+		}
+		
+		[Association(Name="Project_Job", Storage="_Project", ThisKey="ProjectId", OtherKey="ProjectId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public Project Project
+		{
+			get
+			{
+				return this._Project.Entity;
+			}
+			set
+			{
+				Project previousValue = this._Project.Entity;
+				if (((previousValue != value) 
+							|| (this._Project.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Project.Entity = null;
+						previousValue.Jobs.Remove(this);
+					}
+					this._Project.Entity = value;
+					if ((value != null))
+					{
+						value.Jobs.Add(this);
+						this._ProjectId = value.ProjectId;
+					}
+					else
+					{
+						this._ProjectId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Project");
+				}
+			}
+		}
+		
+		[Association(Name="Client_Job", Storage="_Client", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public Client Client
+		{
+			get
+			{
+				return this._Client.Entity;
+			}
+			set
+			{
+				Client previousValue = this._Client.Entity;
+				if (((previousValue != value) 
+							|| (this._Client.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Client.Entity = null;
+						previousValue.Jobs.Remove(this);
+					}
+					this._Client.Entity = value;
+					if ((value != null))
+					{
+						value.Jobs.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Client");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = this;
+		}
+		
+		private void detach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = null;
+		}
+		
+		private void attach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = this;
+		}
+		
+		private void detach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = null;
+		}
+		
+		private void attach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job1 = this;
+		}
+		
+		private void detach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job1 = null;
+		}
+	}
+	
+	[Table(Name="dbo.UptimeCalendar")]
+	public partial class UptimeCalendar : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _UptimeCalendarId;
+		
+		private System.Guid _ResourceId;
+		
+		private System.DateTime _StartDate;
+		
+		private System.DateTime _EndDate;
+		
+		private bool _AllDayEvent;
+		
+		private bool _Recurring;
+		
+		private System.Guid _RecurringId;
+		
+		private EntityRef<Resource> _Resource;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnUptimeCalendarIdChanging(System.Guid value);
+    partial void OnUptimeCalendarIdChanged();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnStartDateChanging(System.DateTime value);
+    partial void OnStartDateChanged();
+    partial void OnEndDateChanging(System.DateTime value);
+    partial void OnEndDateChanged();
+    partial void OnAllDayEventChanging(bool value);
+    partial void OnAllDayEventChanged();
+    partial void OnRecurringChanging(bool value);
+    partial void OnRecurringChanged();
+    partial void OnRecurringIdChanging(System.Guid value);
+    partial void OnRecurringIdChanged();
+    #endregion
+		
+		public UptimeCalendar()
+		{
+			this._Resource = default(EntityRef<Resource>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_UptimeCalendarId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid UptimeCalendarId
+		{
+			get
+			{
+				return this._UptimeCalendarId;
+			}
+			set
+			{
+				if ((this._UptimeCalendarId != value))
+				{
+					this.OnUptimeCalendarIdChanging(value);
+					this.SendPropertyChanging();
+					this._UptimeCalendarId = value;
+					this.SendPropertyChanged("UptimeCalendarId");
+					this.OnUptimeCalendarIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_StartDate", DbType="DateTime NOT NULL")]
+		public System.DateTime StartDate
+		{
+			get
+			{
+				return this._StartDate;
+			}
+			set
+			{
+				if ((this._StartDate != value))
+				{
+					this.OnStartDateChanging(value);
+					this.SendPropertyChanging();
+					this._StartDate = value;
+					this.SendPropertyChanged("StartDate");
+					this.OnStartDateChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_EndDate", DbType="DateTime NOT NULL")]
+		public System.DateTime EndDate
+		{
+			get
+			{
+				return this._EndDate;
+			}
+			set
+			{
+				if ((this._EndDate != value))
+				{
+					this.OnEndDateChanging(value);
+					this.SendPropertyChanging();
+					this._EndDate = value;
+					this.SendPropertyChanged("EndDate");
+					this.OnEndDateChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_AllDayEvent", DbType="Bit NOT NULL")]
+		public bool AllDayEvent
+		{
+			get
+			{
+				return this._AllDayEvent;
+			}
+			set
+			{
+				if ((this._AllDayEvent != value))
+				{
+					this.OnAllDayEventChanging(value);
+					this.SendPropertyChanging();
+					this._AllDayEvent = value;
+					this.SendPropertyChanged("AllDayEvent");
+					this.OnAllDayEventChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Recurring", DbType="Bit NOT NULL")]
+		public bool Recurring
+		{
+			get
+			{
+				return this._Recurring;
+			}
+			set
+			{
+				if ((this._Recurring != value))
+				{
+					this.OnRecurringChanging(value);
+					this.SendPropertyChanging();
+					this._Recurring = value;
+					this.SendPropertyChanged("Recurring");
+					this.OnRecurringChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_RecurringId", DbType="UniqueIdentifier")]
+		public System.Guid RecurringId
+		{
+			get
+			{
+				return this._RecurringId;
+			}
+			set
+			{
+				if ((this._RecurringId != value))
+				{
+					this.OnRecurringIdChanging(value);
+					this.SendPropertyChanging();
+					this._RecurringId = value;
+					this.SendPropertyChanged("RecurringId");
+					this.OnRecurringIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Resource_UptimeCalendar", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.UptimeCalendars.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.UptimeCalendars.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.Client")]
+	public partial class Client : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ResourceId;
+		
+		private int _CPUSpeed;
+		
+		private int _Memory;
+		
+		private System.DateTime _Login;
+		
+		private string _Status;
+		
+		private string _CalendarSyncStatus;
+		
+		private System.Nullable<System.Guid> _UseCalendarFromResourceId;
+		
+		private System.Nullable<System.Guid> _ClientConfigId;
+		
+		private int _NumberOfCores;
+		
+		private int _NumberOfFreeCores;
+		
+		private int _FreeMemory;
+		
+		private EntitySet<UptimeStatistic> _UptimeStatistics;
+		
+		private EntitySet<Job> _Jobs;
+		
+		private EntityRef<Resource> _Resource;
+		
+		private EntityRef<ClientConfig> _ClientConfig;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnCPUSpeedChanging(int value);
+    partial void OnCPUSpeedChanged();
+    partial void OnMemoryChanging(int value);
+    partial void OnMemoryChanged();
+    partial void OnLoginChanging(System.DateTime value);
+    partial void OnLoginChanged();
+    partial void OnStatusChanging(string value);
+    partial void OnStatusChanged();
+    partial void OnCalendarSyncStatusChanging(string value);
+    partial void OnCalendarSyncStatusChanged();
+    partial void OnUseCalendarFromResourceIdChanging(System.Nullable<System.Guid> value);
+    partial void OnUseCalendarFromResourceIdChanged();
+    partial void OnClientConfigIdChanging(System.Nullable<System.Guid> value);
+    partial void OnClientConfigIdChanged();
+    partial void OnNumberOfCoresChanging(int value);
+    partial void OnNumberOfCoresChanged();
+    partial void OnNumberOfFreeCoresChanging(int value);
+    partial void OnNumberOfFreeCoresChanged();
+    partial void OnFreeMemoryChanging(int value);
+    partial void OnFreeMemoryChanged();
+    #endregion
+		
+		public Client()
+		{
+			this._UptimeStatistics = new EntitySet<UptimeStatistic>(new Action<UptimeStatistic>(this.attach_UptimeStatistics), new Action<UptimeStatistic>(this.detach_UptimeStatistics));
+			this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
+			this._Resource = default(EntityRef<Resource>);
+			this._ClientConfig = default(EntityRef<ClientConfig>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_CPUSpeed", DbType="Int NOT NULL")]
+		public int CPUSpeed
+		{
+			get
+			{
+				return this._CPUSpeed;
+			}
+			set
+			{
+				if ((this._CPUSpeed != value))
+				{
+					this.OnCPUSpeedChanging(value);
+					this.SendPropertyChanging();
+					this._CPUSpeed = value;
+					this.SendPropertyChanged("CPUSpeed");
+					this.OnCPUSpeedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Memory", DbType="Int NOT NULL")]
+		public int Memory
+		{
+			get
+			{
+				return this._Memory;
+			}
+			set
+			{
+				if ((this._Memory != value))
+				{
+					this.OnMemoryChanging(value);
+					this.SendPropertyChanging();
+					this._Memory = value;
+					this.SendPropertyChanged("Memory");
+					this.OnMemoryChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Login", DbType="DateTime NOT NULL")]
+		public System.DateTime Login
+		{
+			get
+			{
+				return this._Login;
+			}
+			set
+			{
+				if ((this._Login != value))
+				{
+					this.OnLoginChanging(value);
+					this.SendPropertyChanging();
+					this._Login = value;
+					this.SendPropertyChanged("Login");
+					this.OnLoginChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Status", DbType="VarChar(MAX)")]
+		public string Status
+		{
+			get
+			{
+				return this._Status;
+			}
+			set
+			{
+				if ((this._Status != value))
+				{
+					this.OnStatusChanging(value);
+					this.SendPropertyChanging();
+					this._Status = value;
+					this.SendPropertyChanged("Status");
+					this.OnStatusChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_CalendarSyncStatus", DbType="VarChar(MAX)")]
+		public string CalendarSyncStatus
+		{
+			get
+			{
+				return this._CalendarSyncStatus;
+			}
+			set
+			{
+				if ((this._CalendarSyncStatus != value))
+				{
+					this.OnCalendarSyncStatusChanging(value);
+					this.SendPropertyChanging();
+					this._CalendarSyncStatus = value;
+					this.SendPropertyChanged("CalendarSyncStatus");
+					this.OnCalendarSyncStatusChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_UseCalendarFromResourceId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> UseCalendarFromResourceId
+		{
+			get
+			{
+				return this._UseCalendarFromResourceId;
+			}
+			set
+			{
+				if ((this._UseCalendarFromResourceId != value))
+				{
+					this.OnUseCalendarFromResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._UseCalendarFromResourceId = value;
+					this.SendPropertyChanged("UseCalendarFromResourceId");
+					this.OnUseCalendarFromResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ClientConfigId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ClientConfigId
+		{
+			get
+			{
+				return this._ClientConfigId;
+			}
+			set
+			{
+				if ((this._ClientConfigId != value))
+				{
+					if (this._ClientConfig.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientConfigIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientConfigId = value;
+					this.SendPropertyChanged("ClientConfigId");
+					this.OnClientConfigIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_NumberOfCores", DbType="Int NOT NULL")]
+		public int NumberOfCores
+		{
+			get
+			{
+				return this._NumberOfCores;
+			}
+			set
+			{
+				if ((this._NumberOfCores != value))
+				{
+					this.OnNumberOfCoresChanging(value);
+					this.SendPropertyChanging();
+					this._NumberOfCores = value;
+					this.SendPropertyChanged("NumberOfCores");
+					this.OnNumberOfCoresChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_NumberOfFreeCores", DbType="Int NOT NULL")]
+		public int NumberOfFreeCores
+		{
+			get
+			{
+				return this._NumberOfFreeCores;
+			}
+			set
+			{
+				if ((this._NumberOfFreeCores != value))
+				{
+					this.OnNumberOfFreeCoresChanging(value);
+					this.SendPropertyChanging();
+					this._NumberOfFreeCores = value;
+					this.SendPropertyChanged("NumberOfFreeCores");
+					this.OnNumberOfFreeCoresChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_FreeMemory", DbType="Int NOT NULL")]
+		public int FreeMemory
+		{
+			get
+			{
+				return this._FreeMemory;
+			}
+			set
+			{
+				if ((this._FreeMemory != value))
+				{
+					this.OnFreeMemoryChanging(value);
+					this.SendPropertyChanging();
+					this._FreeMemory = value;
+					this.SendPropertyChanged("FreeMemory");
+					this.OnFreeMemoryChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Client_UptimeStatistic", Storage="_UptimeStatistics", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<UptimeStatistic> UptimeStatistics
+		{
+			get
+			{
+				return this._UptimeStatistics;
+			}
+			set
+			{
+				this._UptimeStatistics.Assign(value);
+			}
+		}
+		
+		[Association(Name="Client_Job", Storage="_Jobs", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<Job> Jobs
+		{
+			get
+			{
+				return this._Jobs;
+			}
+			set
+			{
+				this._Jobs.Assign(value);
+			}
+		}
+		
+		[Association(Name="Resource_Client", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.Client = null;
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.Client = this;
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		[Association(Name="ClientConfig_Client", Storage="_ClientConfig", ThisKey="ClientConfigId", OtherKey="ClientConfigId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public ClientConfig ClientConfig
+		{
+			get
+			{
+				return this._ClientConfig.Entity;
+			}
+			set
+			{
+				ClientConfig previousValue = this._ClientConfig.Entity;
+				if (((previousValue != value) 
+							|| (this._ClientConfig.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._ClientConfig.Entity = null;
+						previousValue.Clients.Remove(this);
+					}
+					this._ClientConfig.Entity = value;
+					if ((value != null))
+					{
+						value.Clients.Add(this);
+						this._ClientConfigId = value.ClientConfigId;
+					}
+					else
+					{
+						this._ClientConfigId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("ClientConfig");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_UptimeStatistics(UptimeStatistic entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = this;
+		}
+		
+		private void detach_UptimeStatistics(UptimeStatistic entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = null;
+		}
+		
+		private void attach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = this;
+		}
+		
+		private void detach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = null;
+		}
+	}
+}
+#pragma warning restore 1591
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HiveDataContext.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HiveDataContext.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HiveDataContext.cs	(revision 4073)
@@ -0,0 +1,2755 @@
+﻿#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.4927
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess
+{
+	using System.Data.Linq;
+	using System.Data.Linq.Mapping;
+	using System.Data;
+	using System.Collections.Generic;
+	using System.Reflection;
+	using System.Linq;
+	using System.Linq.Expressions;
+	using System.ComponentModel;
+	using System;
+	
+	
+	[System.Data.Linq.Mapping.DatabaseAttribute(Name="HeuristicLab.Hive.Linq.Test")]
+	public partial class HiveDataContext : System.Data.Linq.DataContext
+	{
+		
+		private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
+		
+    #region Extensibility Method Definitions
+    partial void OnCreated();
+    partial void InsertAssignedResource(AssignedResource instance);
+    partial void UpdateAssignedResource(AssignedResource instance);
+    partial void DeleteAssignedResource(AssignedResource instance);
+    partial void InsertUptimeStatistic(UptimeStatistic instance);
+    partial void UpdateUptimeStatistic(UptimeStatistic instance);
+    partial void DeleteUptimeStatistic(UptimeStatistic instance);
+    partial void InsertClientConfig(ClientConfig instance);
+    partial void UpdateClientConfig(ClientConfig instance);
+    partial void DeleteClientConfig(ClientConfig instance);
+    partial void InsertClientGroup_Resource(ClientGroup_Resource instance);
+    partial void UpdateClientGroup_Resource(ClientGroup_Resource instance);
+    partial void DeleteClientGroup_Resource(ClientGroup_Resource instance);
+    partial void InsertPluginInfo(PluginInfo instance);
+    partial void UpdatePluginInfo(PluginInfo instance);
+    partial void DeletePluginInfo(PluginInfo instance);
+    partial void InsertProject(Project instance);
+    partial void UpdateProject(Project instance);
+    partial void DeleteProject(Project instance);
+    partial void InsertRequiredPlugin(RequiredPlugin instance);
+    partial void UpdateRequiredPlugin(RequiredPlugin instance);
+    partial void DeleteRequiredPlugin(RequiredPlugin instance);
+    partial void InsertResource(Resource instance);
+    partial void UpdateResource(Resource instance);
+    partial void DeleteResource(Resource instance);
+    partial void InsertJob(Job instance);
+    partial void UpdateJob(Job instance);
+    partial void DeleteJob(Job instance);
+    partial void InsertUptimeCalendar(UptimeCalendar instance);
+    partial void UpdateUptimeCalendar(UptimeCalendar instance);
+    partial void DeleteUptimeCalendar(UptimeCalendar instance);
+    #endregion
+		
+		public HiveDataContext(string connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public HiveDataContext(System.Data.IDbConnection connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public HiveDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public HiveDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public System.Data.Linq.Table<AssignedResource> AssignedResources
+		{
+			get
+			{
+				return this.GetTable<AssignedResource>();
+			}
+		}
+		
+		public System.Data.Linq.Table<UptimeStatistic> UptimeStatistics
+		{
+			get
+			{
+				return this.GetTable<UptimeStatistic>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientConfig> ClientConfigs
+		{
+			get
+			{
+				return this.GetTable<ClientConfig>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientGroup_Resource> ClientGroup_Resources
+		{
+			get
+			{
+				return this.GetTable<ClientGroup_Resource>();
+			}
+		}
+		
+		public System.Data.Linq.Table<PluginInfo> PluginInfos
+		{
+			get
+			{
+				return this.GetTable<PluginInfo>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Project> Projects
+		{
+			get
+			{
+				return this.GetTable<Project>();
+			}
+		}
+		
+		public System.Data.Linq.Table<RequiredPlugin> RequiredPlugins
+		{
+			get
+			{
+				return this.GetTable<RequiredPlugin>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Resource> Resources
+		{
+			get
+			{
+				return this.GetTable<Resource>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Job> Jobs
+		{
+			get
+			{
+				return this.GetTable<Job>();
+			}
+		}
+		
+		public System.Data.Linq.Table<UptimeCalendar> UptimeCalendars
+		{
+			get
+			{
+				return this.GetTable<UptimeCalendar>();
+			}
+		}
+	}
+	
+	[Table(Name="dbo.AssignedResources")]
+	public partial class AssignedResource : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ResourceId;
+		
+		private System.Guid _JobId;
+		
+		private System.Guid _AssignedRessourcesId;
+		
+		private EntityRef<Resource> _Resource;
+		
+		private EntityRef<Job> _Job;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnAssignedRessourcesIdChanging(System.Guid value);
+    partial void OnAssignedRessourcesIdChanged();
+    #endregion
+		
+		public AssignedResource()
+		{
+			this._Resource = default(EntityRef<Resource>);
+			this._Job = default(EntityRef<Job>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_JobId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					if (this._Job.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_AssignedRessourcesId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid AssignedRessourcesId
+		{
+			get
+			{
+				return this._AssignedRessourcesId;
+			}
+			set
+			{
+				if ((this._AssignedRessourcesId != value))
+				{
+					this.OnAssignedRessourcesIdChanging(value);
+					this.SendPropertyChanging();
+					this._AssignedRessourcesId = value;
+					this.SendPropertyChanged("AssignedRessourcesId");
+					this.OnAssignedRessourcesIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Resource_AssignedResource", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.AssignedResources.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.AssignedResources.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		[Association(Name="Job_AssignedResource", Storage="_Job", ThisKey="JobId", OtherKey="JobId", IsForeignKey=true, DeleteRule="CASCADE")]
+		public Job Job
+		{
+			get
+			{
+				return this._Job.Entity;
+			}
+			set
+			{
+				Job previousValue = this._Job.Entity;
+				if (((previousValue != value) 
+							|| (this._Job.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Job.Entity = null;
+						previousValue.AssignedResources.Remove(this);
+					}
+					this._Job.Entity = value;
+					if ((value != null))
+					{
+						value.AssignedResources.Add(this);
+						this._JobId = value.JobId;
+					}
+					else
+					{
+						this._JobId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Job");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.UptimeStatistics")]
+	public partial class UptimeStatistic : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _UptimeStatisticsId;
+		
+		private System.DateTime _Login;
+		
+		private System.DateTime _Logout;
+		
+		private System.Guid _ResourceId;
+		
+		private EntityRef<Client> _Client;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnUptimeStatisticsIdChanging(System.Guid value);
+    partial void OnUptimeStatisticsIdChanged();
+    partial void OnLoginChanging(System.DateTime value);
+    partial void OnLoginChanged();
+    partial void OnLogoutChanging(System.DateTime value);
+    partial void OnLogoutChanged();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    #endregion
+		
+		public UptimeStatistic()
+		{
+			this._Client = default(EntityRef<Client>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_UptimeStatisticsId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid UptimeStatisticsId
+		{
+			get
+			{
+				return this._UptimeStatisticsId;
+			}
+			set
+			{
+				if ((this._UptimeStatisticsId != value))
+				{
+					this.OnUptimeStatisticsIdChanging(value);
+					this.SendPropertyChanging();
+					this._UptimeStatisticsId = value;
+					this.SendPropertyChanged("UptimeStatisticsId");
+					this.OnUptimeStatisticsIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Login", DbType="DateTime")]
+		public System.DateTime Login
+		{
+			get
+			{
+				return this._Login;
+			}
+			set
+			{
+				if ((this._Login != value))
+				{
+					this.OnLoginChanging(value);
+					this.SendPropertyChanging();
+					this._Login = value;
+					this.SendPropertyChanged("Login");
+					this.OnLoginChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Logout", DbType="DateTime")]
+		public System.DateTime Logout
+		{
+			get
+			{
+				return this._Logout;
+			}
+			set
+			{
+				if ((this._Logout != value))
+				{
+					this.OnLogoutChanging(value);
+					this.SendPropertyChanging();
+					this._Logout = value;
+					this.SendPropertyChanged("Logout");
+					this.OnLogoutChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Client.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Client_UptimeStatistic", Storage="_Client", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public Client Client
+		{
+			get
+			{
+				return this._Client.Entity;
+			}
+			set
+			{
+				Client previousValue = this._Client.Entity;
+				if (((previousValue != value) 
+							|| (this._Client.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Client.Entity = null;
+						previousValue.UptimeStatistics.Remove(this);
+					}
+					this._Client.Entity = value;
+					if ((value != null))
+					{
+						value.UptimeStatistics.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Client");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.ClientConfig")]
+	public partial class ClientConfig : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ClientConfigId;
+		
+		private System.Xml.Linq.XElement _UpDownTimeCalendar;
+		
+		private System.Nullable<int> _HeartBeatIntervall;
+		
+		private EntitySet<Client> _Clients;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnClientConfigIdChanging(System.Guid value);
+    partial void OnClientConfigIdChanged();
+    partial void OnUpDownTimeCalendarChanging(System.Xml.Linq.XElement value);
+    partial void OnUpDownTimeCalendarChanged();
+    partial void OnHeartBeatIntervallChanging(System.Nullable<int> value);
+    partial void OnHeartBeatIntervallChanged();
+    #endregion
+		
+		public ClientConfig()
+		{
+			this._Clients = new EntitySet<Client>(new Action<Client>(this.attach_Clients), new Action<Client>(this.detach_Clients));
+			OnCreated();
+		}
+		
+		[Column(Storage="_ClientConfigId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid ClientConfigId
+		{
+			get
+			{
+				return this._ClientConfigId;
+			}
+			set
+			{
+				if ((this._ClientConfigId != value))
+				{
+					this.OnClientConfigIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientConfigId = value;
+					this.SendPropertyChanged("ClientConfigId");
+					this.OnClientConfigIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_UpDownTimeCalendar", DbType="Xml", UpdateCheck=UpdateCheck.Never)]
+		public System.Xml.Linq.XElement UpDownTimeCalendar
+		{
+			get
+			{
+				return this._UpDownTimeCalendar;
+			}
+			set
+			{
+				if ((this._UpDownTimeCalendar != value))
+				{
+					this.OnUpDownTimeCalendarChanging(value);
+					this.SendPropertyChanging();
+					this._UpDownTimeCalendar = value;
+					this.SendPropertyChanged("UpDownTimeCalendar");
+					this.OnUpDownTimeCalendarChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_HeartBeatIntervall", DbType="Int")]
+		public System.Nullable<int> HeartBeatIntervall
+		{
+			get
+			{
+				return this._HeartBeatIntervall;
+			}
+			set
+			{
+				if ((this._HeartBeatIntervall != value))
+				{
+					this.OnHeartBeatIntervallChanging(value);
+					this.SendPropertyChanging();
+					this._HeartBeatIntervall = value;
+					this.SendPropertyChanged("HeartBeatIntervall");
+					this.OnHeartBeatIntervallChanged();
+				}
+			}
+		}
+		
+		[Association(Name="ClientConfig_Client", Storage="_Clients", ThisKey="ClientConfigId", OtherKey="ClientConfigId")]
+		public EntitySet<Client> Clients
+		{
+			get
+			{
+				return this._Clients;
+			}
+			set
+			{
+				this._Clients.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_Clients(Client entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientConfig = this;
+		}
+		
+		private void detach_Clients(Client entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientConfig = null;
+		}
+	}
+	
+	[Table(Name="dbo.ClientGroup_Resource")]
+	public partial class ClientGroup_Resource : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ClientGroup_RessourceId;
+		
+		private System.Guid _ClientGroupId;
+		
+		private System.Guid _ResourceId;
+		
+		private EntityRef<ClientGroup> _ClientGroup;
+		
+		private EntityRef<Resource> _Resource;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnClientGroup_RessourceIdChanging(System.Guid value);
+    partial void OnClientGroup_RessourceIdChanged();
+    partial void OnClientGroupIdChanging(System.Guid value);
+    partial void OnClientGroupIdChanged();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    #endregion
+		
+		public ClientGroup_Resource()
+		{
+			this._ClientGroup = default(EntityRef<ClientGroup>);
+			this._Resource = default(EntityRef<Resource>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_ClientGroup_RessourceId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid ClientGroup_RessourceId
+		{
+			get
+			{
+				return this._ClientGroup_RessourceId;
+			}
+			set
+			{
+				if ((this._ClientGroup_RessourceId != value))
+				{
+					this.OnClientGroup_RessourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientGroup_RessourceId = value;
+					this.SendPropertyChanged("ClientGroup_RessourceId");
+					this.OnClientGroup_RessourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ClientGroupId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ClientGroupId
+		{
+			get
+			{
+				return this._ClientGroupId;
+			}
+			set
+			{
+				if ((this._ClientGroupId != value))
+				{
+					if (this._ClientGroup.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientGroupIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientGroupId = value;
+					this.SendPropertyChanged("ClientGroupId");
+					this.OnClientGroupIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="ClientGroup_ClientGroup_Resource", Storage="_ClientGroup", ThisKey="ClientGroupId", OtherKey="ResourceId", IsForeignKey=true)]
+		public ClientGroup ClientGroup
+		{
+			get
+			{
+				return this._ClientGroup.Entity;
+			}
+			set
+			{
+				ClientGroup previousValue = this._ClientGroup.Entity;
+				if (((previousValue != value) 
+							|| (this._ClientGroup.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._ClientGroup.Entity = null;
+						previousValue.ClientGroup_Resources_Children.Remove(this);
+					}
+					this._ClientGroup.Entity = value;
+					if ((value != null))
+					{
+						value.ClientGroup_Resources_Children.Add(this);
+						this._ClientGroupId = value.ResourceId;
+					}
+					else
+					{
+						this._ClientGroupId = default(System.Guid);
+					}
+					this.SendPropertyChanged("ClientGroup");
+				}
+			}
+		}
+		
+		[Association(Name="Resource_ClientGroup_Resource", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.ClientGroup_Resources_Parents.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ClientGroup_Resources_Parents.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.PluginInfo")]
+	public partial class PluginInfo : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _PluginId;
+		
+		private string _Name;
+		
+		private string _Version;
+		
+		private string _BuildDate;
+		
+		private EntitySet<RequiredPlugin> _RequiredPlugins;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnPluginIdChanging(System.Guid value);
+    partial void OnPluginIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    partial void OnVersionChanging(string value);
+    partial void OnVersionChanged();
+    partial void OnBuildDateChanging(string value);
+    partial void OnBuildDateChanged();
+    #endregion
+		
+		public PluginInfo()
+		{
+			this._RequiredPlugins = new EntitySet<RequiredPlugin>(new Action<RequiredPlugin>(this.attach_RequiredPlugins), new Action<RequiredPlugin>(this.detach_RequiredPlugins));
+			OnCreated();
+		}
+		
+		[Column(Storage="_PluginId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid PluginId
+		{
+			get
+			{
+				return this._PluginId;
+			}
+			set
+			{
+				if ((this._PluginId != value))
+				{
+					this.OnPluginIdChanging(value);
+					this.SendPropertyChanging();
+					this._PluginId = value;
+					this.SendPropertyChanged("PluginId");
+					this.OnPluginIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Name", DbType="VarChar(MAX)")]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Version", DbType="VarChar(MAX)")]
+		public string Version
+		{
+			get
+			{
+				return this._Version;
+			}
+			set
+			{
+				if ((this._Version != value))
+				{
+					this.OnVersionChanging(value);
+					this.SendPropertyChanging();
+					this._Version = value;
+					this.SendPropertyChanged("Version");
+					this.OnVersionChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_BuildDate", DbType="VarChar(20)")]
+		public string BuildDate
+		{
+			get
+			{
+				return this._BuildDate;
+			}
+			set
+			{
+				if ((this._BuildDate != value))
+				{
+					this.OnBuildDateChanging(value);
+					this.SendPropertyChanging();
+					this._BuildDate = value;
+					this.SendPropertyChanged("BuildDate");
+					this.OnBuildDateChanged();
+				}
+			}
+		}
+		
+		[Association(Name="PluginInfo_RequiredPlugin", Storage="_RequiredPlugins", ThisKey="PluginId", OtherKey="PluginId")]
+		public EntitySet<RequiredPlugin> RequiredPlugins
+		{
+			get
+			{
+				return this._RequiredPlugins;
+			}
+			set
+			{
+				this._RequiredPlugins.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.PluginInfo = this;
+		}
+		
+		private void detach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.PluginInfo = null;
+		}
+	}
+	
+	[Table(Name="dbo.Project")]
+	public partial class Project : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ProjectId;
+		
+		private string _Name;
+		
+		private EntitySet<Job> _Jobs;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnProjectIdChanging(System.Guid value);
+    partial void OnProjectIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    #endregion
+		
+		public Project()
+		{
+			this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
+			OnCreated();
+		}
+		
+		[Column(Storage="_ProjectId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid ProjectId
+		{
+			get
+			{
+				return this._ProjectId;
+			}
+			set
+			{
+				if ((this._ProjectId != value))
+				{
+					this.OnProjectIdChanging(value);
+					this.SendPropertyChanging();
+					this._ProjectId = value;
+					this.SendPropertyChanged("ProjectId");
+					this.OnProjectIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Name", DbType="VarChar(MAX)")]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Project_Job", Storage="_Jobs", ThisKey="ProjectId", OtherKey="ProjectId")]
+		public EntitySet<Job> Jobs
+		{
+			get
+			{
+				return this._Jobs;
+			}
+			set
+			{
+				this._Jobs.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Project = this;
+		}
+		
+		private void detach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Project = null;
+		}
+	}
+	
+	[Table(Name="dbo.RequiredPlugins")]
+	public partial class RequiredPlugin : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _RequiredPluginId;
+		
+		private System.Guid _JobId;
+		
+		private System.Guid _PluginId;
+		
+		private EntityRef<PluginInfo> _PluginInfo;
+		
+		private EntityRef<Job> _Job;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnRequiredPluginIdChanging(System.Guid value);
+    partial void OnRequiredPluginIdChanged();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnPluginIdChanging(System.Guid value);
+    partial void OnPluginIdChanged();
+    #endregion
+		
+		public RequiredPlugin()
+		{
+			this._PluginInfo = default(EntityRef<PluginInfo>);
+			this._Job = default(EntityRef<Job>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_RequiredPluginId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
+		public System.Guid RequiredPluginId
+		{
+			get
+			{
+				return this._RequiredPluginId;
+			}
+			set
+			{
+				if ((this._RequiredPluginId != value))
+				{
+					this.OnRequiredPluginIdChanging(value);
+					this.SendPropertyChanging();
+					this._RequiredPluginId = value;
+					this.SendPropertyChanged("RequiredPluginId");
+					this.OnRequiredPluginIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_JobId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					if (this._Job.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_PluginId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid PluginId
+		{
+			get
+			{
+				return this._PluginId;
+			}
+			set
+			{
+				if ((this._PluginId != value))
+				{
+					if (this._PluginInfo.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnPluginIdChanging(value);
+					this.SendPropertyChanging();
+					this._PluginId = value;
+					this.SendPropertyChanged("PluginId");
+					this.OnPluginIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="PluginInfo_RequiredPlugin", Storage="_PluginInfo", ThisKey="PluginId", OtherKey="PluginId", IsForeignKey=true, DeleteRule="CASCADE")]
+		public PluginInfo PluginInfo
+		{
+			get
+			{
+				return this._PluginInfo.Entity;
+			}
+			set
+			{
+				PluginInfo previousValue = this._PluginInfo.Entity;
+				if (((previousValue != value) 
+							|| (this._PluginInfo.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._PluginInfo.Entity = null;
+						previousValue.RequiredPlugins.Remove(this);
+					}
+					this._PluginInfo.Entity = value;
+					if ((value != null))
+					{
+						value.RequiredPlugins.Add(this);
+						this._PluginId = value.PluginId;
+					}
+					else
+					{
+						this._PluginId = default(System.Guid);
+					}
+					this.SendPropertyChanged("PluginInfo");
+				}
+			}
+		}
+		
+		[Association(Name="Job_RequiredPlugin", Storage="_Job", ThisKey="JobId", OtherKey="JobId", IsForeignKey=true)]
+		public Job Job
+		{
+			get
+			{
+				return this._Job.Entity;
+			}
+			set
+			{
+				Job previousValue = this._Job.Entity;
+				if (((previousValue != value) 
+							|| (this._Job.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Job.Entity = null;
+						previousValue.RequiredPlugins.Remove(this);
+					}
+					this._Job.Entity = value;
+					if ((value != null))
+					{
+						value.RequiredPlugins.Add(this);
+						this._JobId = value.JobId;
+					}
+					else
+					{
+						this._JobId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Job");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[Table(Name="dbo.Resource")]
+	[InheritanceMapping(Code="RESOURCE", Type=typeof(Resource))]
+	[InheritanceMapping(Code="CLIENT", Type=typeof(Client), IsDefault=true)]
+	[InheritanceMapping(Code="GROUP", Type=typeof(ClientGroup))]
+	public partial class Resource : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		protected System.Guid _ResourceId;
+		
+		private string _Name;
+		
+		private string _ResourceType;
+		
+		private EntitySet<AssignedResource> _AssignedResources;
+		
+		private EntitySet<ClientGroup_Resource> _ClientGroup_Resources_Parents;
+		
+		private EntitySet<UptimeCalendar> _UptimeCalendars;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    partial void OnResourceTypeChanging(string value);
+    partial void OnResourceTypeChanged();
+    #endregion
+		
+		public Resource()
+		{
+			this._AssignedResources = new EntitySet<AssignedResource>(new Action<AssignedResource>(this.attach_AssignedResources), new Action<AssignedResource>(this.detach_AssignedResources));
+			this._ClientGroup_Resources_Parents = new EntitySet<ClientGroup_Resource>(new Action<ClientGroup_Resource>(this.attach_ClientGroup_Resources_Parents), new Action<ClientGroup_Resource>(this.detach_ClientGroup_Resources_Parents));
+			this._UptimeCalendars = new EntitySet<UptimeCalendar>(new Action<UptimeCalendar>(this.attach_UptimeCalendars), new Action<UptimeCalendar>(this.detach_UptimeCalendars));
+			OnCreated();
+		}
+		
+		[Column(Storage="_ResourceId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Name", DbType="VarChar(MAX)")]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceType", IsDiscriminator=true)]
+		public string ResourceType
+		{
+			get
+			{
+				return this._ResourceType;
+			}
+			set
+			{
+				if ((this._ResourceType != value))
+				{
+					this.OnResourceTypeChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceType = value;
+					this.SendPropertyChanged("ResourceType");
+					this.OnResourceTypeChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Resource_AssignedResource", Storage="_AssignedResources", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<AssignedResource> AssignedResources
+		{
+			get
+			{
+				return this._AssignedResources;
+			}
+			set
+			{
+				this._AssignedResources.Assign(value);
+			}
+		}
+		
+		[Association(Name="Resource_ClientGroup_Resource", Storage="_ClientGroup_Resources_Parents", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<ClientGroup_Resource> ClientGroup_Resources_Parents
+		{
+			get
+			{
+				return this._ClientGroup_Resources_Parents;
+			}
+			set
+			{
+				this._ClientGroup_Resources_Parents.Assign(value);
+			}
+		}
+		
+		[Association(Name="Resource_UptimeCalendar", Storage="_UptimeCalendars", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<UptimeCalendar> UptimeCalendars
+		{
+			get
+			{
+				return this._UptimeCalendars;
+			}
+			set
+			{
+				this._UptimeCalendars.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_ClientGroup_Resources_Parents(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ClientGroup_Resources_Parents(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_UptimeCalendars(UptimeCalendar entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_UptimeCalendars(UptimeCalendar entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+	}
+	
+	public partial class Client : Resource
+	{
+		
+		private System.Nullable<int> _CPUSpeed;
+		
+		private System.Nullable<int> _Memory;
+		
+		private System.Nullable<System.DateTime> _Login;
+		
+		private string _Status;
+		
+		private string _CalendarSyncStatus;
+		
+		private System.Nullable<System.Guid> _UseCalendarFromResourceId;
+		
+		private System.Nullable<System.Guid> _ClientConfigId;
+		
+		private System.Nullable<int> _NumberOfCores;
+		
+		private System.Nullable<int> _NumberOfFreeCores;
+		
+		private System.Nullable<int> _FreeMemory;
+		
+		private EntitySet<UptimeStatistic> _UptimeStatistics;
+		
+		private EntitySet<Job> _Jobs;
+		
+		private EntityRef<ClientConfig> _ClientConfig;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnCPUSpeedChanging(System.Nullable<int> value);
+    partial void OnCPUSpeedChanged();
+    partial void OnMemoryChanging(System.Nullable<int> value);
+    partial void OnMemoryChanged();
+    partial void OnLoginChanging(System.Nullable<System.DateTime> value);
+    partial void OnLoginChanged();
+    partial void OnStatusChanging(string value);
+    partial void OnStatusChanged();
+    partial void OnCalendarSyncStatusChanging(string value);
+    partial void OnCalendarSyncStatusChanged();
+    partial void OnUseCalendarFromResourceIdChanging(System.Nullable<System.Guid> value);
+    partial void OnUseCalendarFromResourceIdChanged();
+    partial void OnClientConfigIdChanging(System.Nullable<System.Guid> value);
+    partial void OnClientConfigIdChanged();
+    partial void OnNumberOfCoresChanging(System.Nullable<int> value);
+    partial void OnNumberOfCoresChanged();
+    partial void OnNumberOfFreeCoresChanging(System.Nullable<int> value);
+    partial void OnNumberOfFreeCoresChanged();
+    partial void OnFreeMemoryChanging(System.Nullable<int> value);
+    partial void OnFreeMemoryChanged();
+    #endregion
+		
+		public Client()
+		{
+			this._UptimeStatistics = new EntitySet<UptimeStatistic>(new Action<UptimeStatistic>(this.attach_UptimeStatistics), new Action<UptimeStatistic>(this.detach_UptimeStatistics));
+			this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
+			this._ClientConfig = default(EntityRef<ClientConfig>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_CPUSpeed", DbType="Int")]
+		public System.Nullable<int> CPUSpeed
+		{
+			get
+			{
+				return this._CPUSpeed;
+			}
+			set
+			{
+				if ((this._CPUSpeed != value))
+				{
+					this.OnCPUSpeedChanging(value);
+					this.SendPropertyChanging();
+					this._CPUSpeed = value;
+					this.SendPropertyChanged("CPUSpeed");
+					this.OnCPUSpeedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Memory", DbType="Int")]
+		public System.Nullable<int> Memory
+		{
+			get
+			{
+				return this._Memory;
+			}
+			set
+			{
+				if ((this._Memory != value))
+				{
+					this.OnMemoryChanging(value);
+					this.SendPropertyChanging();
+					this._Memory = value;
+					this.SendPropertyChanged("Memory");
+					this.OnMemoryChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Login", DbType="DateTime")]
+		public System.Nullable<System.DateTime> Login
+		{
+			get
+			{
+				return this._Login;
+			}
+			set
+			{
+				if ((this._Login != value))
+				{
+					this.OnLoginChanging(value);
+					this.SendPropertyChanging();
+					this._Login = value;
+					this.SendPropertyChanged("Login");
+					this.OnLoginChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Status", DbType="VarChar(MAX)")]
+		public string Status
+		{
+			get
+			{
+				return this._Status;
+			}
+			set
+			{
+				if ((this._Status != value))
+				{
+					this.OnStatusChanging(value);
+					this.SendPropertyChanging();
+					this._Status = value;
+					this.SendPropertyChanged("Status");
+					this.OnStatusChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_CalendarSyncStatus", DbType="VarChar(MAX)")]
+		public string CalendarSyncStatus
+		{
+			get
+			{
+				return this._CalendarSyncStatus;
+			}
+			set
+			{
+				if ((this._CalendarSyncStatus != value))
+				{
+					this.OnCalendarSyncStatusChanging(value);
+					this.SendPropertyChanging();
+					this._CalendarSyncStatus = value;
+					this.SendPropertyChanged("CalendarSyncStatus");
+					this.OnCalendarSyncStatusChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_UseCalendarFromResourceId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> UseCalendarFromResourceId
+		{
+			get
+			{
+				return this._UseCalendarFromResourceId;
+			}
+			set
+			{
+				if ((this._UseCalendarFromResourceId != value))
+				{
+					this.OnUseCalendarFromResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._UseCalendarFromResourceId = value;
+					this.SendPropertyChanged("UseCalendarFromResourceId");
+					this.OnUseCalendarFromResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ClientConfigId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ClientConfigId
+		{
+			get
+			{
+				return this._ClientConfigId;
+			}
+			set
+			{
+				if ((this._ClientConfigId != value))
+				{
+					if (this._ClientConfig.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientConfigIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientConfigId = value;
+					this.SendPropertyChanged("ClientConfigId");
+					this.OnClientConfigIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_NumberOfCores", DbType="Int")]
+		public System.Nullable<int> NumberOfCores
+		{
+			get
+			{
+				return this._NumberOfCores;
+			}
+			set
+			{
+				if ((this._NumberOfCores != value))
+				{
+					this.OnNumberOfCoresChanging(value);
+					this.SendPropertyChanging();
+					this._NumberOfCores = value;
+					this.SendPropertyChanged("NumberOfCores");
+					this.OnNumberOfCoresChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_NumberOfFreeCores", DbType="Int")]
+		public System.Nullable<int> NumberOfFreeCores
+		{
+			get
+			{
+				return this._NumberOfFreeCores;
+			}
+			set
+			{
+				if ((this._NumberOfFreeCores != value))
+				{
+					this.OnNumberOfFreeCoresChanging(value);
+					this.SendPropertyChanging();
+					this._NumberOfFreeCores = value;
+					this.SendPropertyChanged("NumberOfFreeCores");
+					this.OnNumberOfFreeCoresChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_FreeMemory", DbType="Int")]
+		public System.Nullable<int> FreeMemory
+		{
+			get
+			{
+				return this._FreeMemory;
+			}
+			set
+			{
+				if ((this._FreeMemory != value))
+				{
+					this.OnFreeMemoryChanging(value);
+					this.SendPropertyChanging();
+					this._FreeMemory = value;
+					this.SendPropertyChanged("FreeMemory");
+					this.OnFreeMemoryChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Client_UptimeStatistic", Storage="_UptimeStatistics", ThisKey="ResourceId", OtherKey="ResourceId")]
+		public EntitySet<UptimeStatistic> UptimeStatistics
+		{
+			get
+			{
+				return this._UptimeStatistics;
+			}
+			set
+			{
+				this._UptimeStatistics.Assign(value);
+			}
+		}
+		
+		[Association(Name="Client_Job", Storage="_Jobs", ThisKey="ResourceId", OtherKey="ResourceId", DeleteRule="SET NULL")]
+		public EntitySet<Job> Jobs
+		{
+			get
+			{
+				return this._Jobs;
+			}
+			set
+			{
+				this._Jobs.Assign(value);
+			}
+		}
+		
+		[Association(Name="ClientConfig_Client", Storage="_ClientConfig", ThisKey="ClientConfigId", OtherKey="ClientConfigId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public ClientConfig ClientConfig
+		{
+			get
+			{
+				return this._ClientConfig.Entity;
+			}
+			set
+			{
+				ClientConfig previousValue = this._ClientConfig.Entity;
+				if (((previousValue != value) 
+							|| (this._ClientConfig.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._ClientConfig.Entity = null;
+						previousValue.Clients.Remove(this);
+					}
+					this._ClientConfig.Entity = value;
+					if ((value != null))
+					{
+						value.Clients.Add(this);
+						this._ClientConfigId = value.ClientConfigId;
+					}
+					else
+					{
+						this._ClientConfigId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("ClientConfig");
+				}
+			}
+		}
+		
+		private void attach_UptimeStatistics(UptimeStatistic entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = this;
+		}
+		
+		private void detach_UptimeStatistics(UptimeStatistic entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = null;
+		}
+		
+		private void attach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = this;
+		}
+		
+		private void detach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Client = null;
+		}
+	}
+	
+	public partial class ClientGroup : Resource
+	{
+		
+		private EntitySet<ClientGroup_Resource> _ClientGroup_Resources_Children;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    #endregion
+		
+		public ClientGroup()
+		{
+			this._ClientGroup_Resources_Children = new EntitySet<ClientGroup_Resource>(new Action<ClientGroup_Resource>(this.attach_ClientGroup_Resources_Children), new Action<ClientGroup_Resource>(this.detach_ClientGroup_Resources_Children));
+			OnCreated();
+		}
+		
+		[Association(Name="ClientGroup_ClientGroup_Resource", Storage="_ClientGroup_Resources_Children", ThisKey="ResourceId", OtherKey="ClientGroupId")]
+		public EntitySet<ClientGroup_Resource> ClientGroup_Resources_Children
+		{
+			get
+			{
+				return this._ClientGroup_Resources_Children;
+			}
+			set
+			{
+				this._ClientGroup_Resources_Children.Assign(value);
+			}
+		}
+		
+		private void attach_ClientGroup_Resources_Children(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientGroup = this;
+		}
+		
+		private void detach_ClientGroup_Resources_Children(ClientGroup_Resource entity)
+		{
+			this.SendPropertyChanging();
+			entity.ClientGroup = null;
+		}
+	}
+	
+	[Table(Name="dbo.Job")]
+	public partial class Job : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _JobId;
+		
+		private System.Nullable<System.Guid> _ParentJobId;
+		
+		private string _JobState;
+		
+		private System.Nullable<System.Guid> _ResourceId;
+		
+		private System.Nullable<double> _Percentage;
+		
+		private System.Data.Linq.Link<System.Data.Linq.Binary> _SerializedJob;
+		
+		private System.Nullable<System.DateTime> _DateCreated;
+		
+		private System.Nullable<System.DateTime> _DateCalculated;
+		
+		private System.Nullable<System.DateTime> _DateFinished;
+		
+		private int _Priority;
+		
+		private System.Nullable<System.Guid> _ProjectId;
+		
+		private System.Nullable<System.Guid> _UserId;
+		
+		private int _CoresNeeded;
+		
+		private int _MemoryNeeded;
+		
+		private EntitySet<AssignedResource> _AssignedResources;
+		
+		private EntitySet<RequiredPlugin> _RequiredPlugins;
+		
+		private EntitySet<Job> _Jobs;
+		
+		private EntityRef<Job> _Job1;
+		
+		private EntityRef<Project> _Project;
+		
+		private EntityRef<Client> _Client;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnJobIdChanging(System.Guid value);
+    partial void OnJobIdChanged();
+    partial void OnParentJobIdChanging(System.Nullable<System.Guid> value);
+    partial void OnParentJobIdChanged();
+    partial void OnJobStateChanging(string value);
+    partial void OnJobStateChanged();
+    partial void OnResourceIdChanging(System.Nullable<System.Guid> value);
+    partial void OnResourceIdChanged();
+    partial void OnPercentageChanging(System.Nullable<double> value);
+    partial void OnPercentageChanged();
+    partial void OnSerializedJobChanging(System.Data.Linq.Binary value);
+    partial void OnSerializedJobChanged();
+    partial void OnDateCreatedChanging(System.Nullable<System.DateTime> value);
+    partial void OnDateCreatedChanged();
+    partial void OnDateCalculatedChanging(System.Nullable<System.DateTime> value);
+    partial void OnDateCalculatedChanged();
+    partial void OnDateFinishedChanging(System.Nullable<System.DateTime> value);
+    partial void OnDateFinishedChanged();
+    partial void OnPriorityChanging(int value);
+    partial void OnPriorityChanged();
+    partial void OnProjectIdChanging(System.Nullable<System.Guid> value);
+    partial void OnProjectIdChanged();
+    partial void OnUserIdChanging(System.Nullable<System.Guid> value);
+    partial void OnUserIdChanged();
+    partial void OnCoresNeededChanging(int value);
+    partial void OnCoresNeededChanged();
+    partial void OnMemoryNeededChanging(int value);
+    partial void OnMemoryNeededChanged();
+    #endregion
+		
+		public Job()
+		{
+			this._AssignedResources = new EntitySet<AssignedResource>(new Action<AssignedResource>(this.attach_AssignedResources), new Action<AssignedResource>(this.detach_AssignedResources));
+			this._RequiredPlugins = new EntitySet<RequiredPlugin>(new Action<RequiredPlugin>(this.attach_RequiredPlugins), new Action<RequiredPlugin>(this.detach_RequiredPlugins));
+			this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
+			this._Job1 = default(EntityRef<Job>);
+			this._Project = default(EntityRef<Project>);
+			this._Client = default(EntityRef<Client>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_JobId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid JobId
+		{
+			get
+			{
+				return this._JobId;
+			}
+			set
+			{
+				if ((this._JobId != value))
+				{
+					this.OnJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._JobId = value;
+					this.SendPropertyChanged("JobId");
+					this.OnJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ParentJobId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ParentJobId
+		{
+			get
+			{
+				return this._ParentJobId;
+			}
+			set
+			{
+				if ((this._ParentJobId != value))
+				{
+					if (this._Job1.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnParentJobIdChanging(value);
+					this.SendPropertyChanging();
+					this._ParentJobId = value;
+					this.SendPropertyChanged("ParentJobId");
+					this.OnParentJobIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_JobState", DbType="VarChar(MAX)")]
+		public string JobState
+		{
+			get
+			{
+				return this._JobState;
+			}
+			set
+			{
+				if ((this._JobState != value))
+				{
+					this.OnJobStateChanging(value);
+					this.SendPropertyChanging();
+					this._JobState = value;
+					this.SendPropertyChanged("JobState");
+					this.OnJobStateChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Client.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Percentage", DbType="Float")]
+		public System.Nullable<double> Percentage
+		{
+			get
+			{
+				return this._Percentage;
+			}
+			set
+			{
+				if ((this._Percentage != value))
+				{
+					this.OnPercentageChanging(value);
+					this.SendPropertyChanging();
+					this._Percentage = value;
+					this.SendPropertyChanged("Percentage");
+					this.OnPercentageChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_SerializedJob", DbType="VarBinary(MAX)", UpdateCheck=UpdateCheck.Never)]
+		public System.Data.Linq.Binary SerializedJob
+		{
+			get
+			{
+				return this._SerializedJob.Value;
+			}
+			set
+			{
+				if ((this._SerializedJob.Value != value))
+				{
+					this.OnSerializedJobChanging(value);
+					this.SendPropertyChanging();
+					this._SerializedJob.Value = value;
+					this.SendPropertyChanged("SerializedJob");
+					this.OnSerializedJobChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_DateCreated", DbType="DateTime")]
+		public System.Nullable<System.DateTime> DateCreated
+		{
+			get
+			{
+				return this._DateCreated;
+			}
+			set
+			{
+				if ((this._DateCreated != value))
+				{
+					this.OnDateCreatedChanging(value);
+					this.SendPropertyChanging();
+					this._DateCreated = value;
+					this.SendPropertyChanged("DateCreated");
+					this.OnDateCreatedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_DateCalculated", DbType="DateTime")]
+		public System.Nullable<System.DateTime> DateCalculated
+		{
+			get
+			{
+				return this._DateCalculated;
+			}
+			set
+			{
+				if ((this._DateCalculated != value))
+				{
+					this.OnDateCalculatedChanging(value);
+					this.SendPropertyChanging();
+					this._DateCalculated = value;
+					this.SendPropertyChanged("DateCalculated");
+					this.OnDateCalculatedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_DateFinished", DbType="DateTime")]
+		public System.Nullable<System.DateTime> DateFinished
+		{
+			get
+			{
+				return this._DateFinished;
+			}
+			set
+			{
+				if ((this._DateFinished != value))
+				{
+					this.OnDateFinishedChanging(value);
+					this.SendPropertyChanging();
+					this._DateFinished = value;
+					this.SendPropertyChanged("DateFinished");
+					this.OnDateFinishedChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Priority", DbType="Int NOT NULL")]
+		public int Priority
+		{
+			get
+			{
+				return this._Priority;
+			}
+			set
+			{
+				if ((this._Priority != value))
+				{
+					this.OnPriorityChanging(value);
+					this.SendPropertyChanging();
+					this._Priority = value;
+					this.SendPropertyChanged("Priority");
+					this.OnPriorityChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ProjectId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ProjectId
+		{
+			get
+			{
+				return this._ProjectId;
+			}
+			set
+			{
+				if ((this._ProjectId != value))
+				{
+					if (this._Project.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnProjectIdChanging(value);
+					this.SendPropertyChanging();
+					this._ProjectId = value;
+					this.SendPropertyChanged("ProjectId");
+					this.OnProjectIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_UserId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_CoresNeeded", DbType="Int NOT NULL")]
+		public int CoresNeeded
+		{
+			get
+			{
+				return this._CoresNeeded;
+			}
+			set
+			{
+				if ((this._CoresNeeded != value))
+				{
+					this.OnCoresNeededChanging(value);
+					this.SendPropertyChanging();
+					this._CoresNeeded = value;
+					this.SendPropertyChanged("CoresNeeded");
+					this.OnCoresNeededChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_MemoryNeeded", DbType="Int NOT NULL")]
+		public int MemoryNeeded
+		{
+			get
+			{
+				return this._MemoryNeeded;
+			}
+			set
+			{
+				if ((this._MemoryNeeded != value))
+				{
+					this.OnMemoryNeededChanging(value);
+					this.SendPropertyChanging();
+					this._MemoryNeeded = value;
+					this.SendPropertyChanged("MemoryNeeded");
+					this.OnMemoryNeededChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Job_AssignedResource", Storage="_AssignedResources", ThisKey="JobId", OtherKey="JobId")]
+		public EntitySet<AssignedResource> AssignedResources
+		{
+			get
+			{
+				return this._AssignedResources;
+			}
+			set
+			{
+				this._AssignedResources.Assign(value);
+			}
+		}
+		
+		[Association(Name="Job_RequiredPlugin", Storage="_RequiredPlugins", ThisKey="JobId", OtherKey="JobId")]
+		public EntitySet<RequiredPlugin> RequiredPlugins
+		{
+			get
+			{
+				return this._RequiredPlugins;
+			}
+			set
+			{
+				this._RequiredPlugins.Assign(value);
+			}
+		}
+		
+		[Association(Name="Job_Job", Storage="_Jobs", ThisKey="JobId", OtherKey="ParentJobId")]
+		public EntitySet<Job> Jobs
+		{
+			get
+			{
+				return this._Jobs;
+			}
+			set
+			{
+				this._Jobs.Assign(value);
+			}
+		}
+		
+		[Association(Name="Job_Job", Storage="_Job1", ThisKey="ParentJobId", OtherKey="JobId", IsForeignKey=true)]
+		public Job Job1
+		{
+			get
+			{
+				return this._Job1.Entity;
+			}
+			set
+			{
+				Job previousValue = this._Job1.Entity;
+				if (((previousValue != value) 
+							|| (this._Job1.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Job1.Entity = null;
+						previousValue.Jobs.Remove(this);
+					}
+					this._Job1.Entity = value;
+					if ((value != null))
+					{
+						value.Jobs.Add(this);
+						this._ParentJobId = value.JobId;
+					}
+					else
+					{
+						this._ParentJobId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Job1");
+				}
+			}
+		}
+		
+		[Association(Name="Project_Job", Storage="_Project", ThisKey="ProjectId", OtherKey="ProjectId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public Project Project
+		{
+			get
+			{
+				return this._Project.Entity;
+			}
+			set
+			{
+				Project previousValue = this._Project.Entity;
+				if (((previousValue != value) 
+							|| (this._Project.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Project.Entity = null;
+						previousValue.Jobs.Remove(this);
+					}
+					this._Project.Entity = value;
+					if ((value != null))
+					{
+						value.Jobs.Add(this);
+						this._ProjectId = value.ProjectId;
+					}
+					else
+					{
+						this._ProjectId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Project");
+				}
+			}
+		}
+		
+		[Association(Name="Client_Job", Storage="_Client", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="SET NULL")]
+		public Client Client
+		{
+			get
+			{
+				return this._Client.Entity;
+			}
+			set
+			{
+				Client previousValue = this._Client.Entity;
+				if (((previousValue != value) 
+							|| (this._Client.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Client.Entity = null;
+						previousValue.Jobs.Remove(this);
+					}
+					this._Client.Entity = value;
+					if ((value != null))
+					{
+						value.Jobs.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Client");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = this;
+		}
+		
+		private void detach_AssignedResources(AssignedResource entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = null;
+		}
+		
+		private void attach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = this;
+		}
+		
+		private void detach_RequiredPlugins(RequiredPlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job = null;
+		}
+		
+		private void attach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job1 = this;
+		}
+		
+		private void detach_Jobs(Job entity)
+		{
+			this.SendPropertyChanging();
+			entity.Job1 = null;
+		}
+	}
+	
+	[Table(Name="dbo.UptimeCalendar")]
+	public partial class UptimeCalendar : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _UptimeCalendarId;
+		
+		private System.Guid _ResourceId;
+		
+		private System.DateTime _StartDate;
+		
+		private System.DateTime _EndDate;
+		
+		private bool _AllDayEvent;
+		
+		private bool _Recurring;
+		
+		private System.Guid _RecurringId;
+		
+		private EntityRef<Resource> _Resource;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnUptimeCalendarIdChanging(System.Guid value);
+    partial void OnUptimeCalendarIdChanged();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnStartDateChanging(System.DateTime value);
+    partial void OnStartDateChanged();
+    partial void OnEndDateChanging(System.DateTime value);
+    partial void OnEndDateChanged();
+    partial void OnAllDayEventChanging(bool value);
+    partial void OnAllDayEventChanged();
+    partial void OnRecurringChanging(bool value);
+    partial void OnRecurringChanged();
+    partial void OnRecurringIdChanging(System.Guid value);
+    partial void OnRecurringIdChanged();
+    #endregion
+		
+		public UptimeCalendar()
+		{
+			this._Resource = default(EntityRef<Resource>);
+			OnCreated();
+		}
+		
+		[Column(Storage="_UptimeCalendarId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]
+		public System.Guid UptimeCalendarId
+		{
+			get
+			{
+				return this._UptimeCalendarId;
+			}
+			set
+			{
+				if ((this._UptimeCalendarId != value))
+				{
+					this.OnUptimeCalendarIdChanging(value);
+					this.SendPropertyChanging();
+					this._UptimeCalendarId = value;
+					this.SendPropertyChanged("UptimeCalendarId");
+					this.OnUptimeCalendarIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_StartDate", DbType="DateTime NOT NULL")]
+		public System.DateTime StartDate
+		{
+			get
+			{
+				return this._StartDate;
+			}
+			set
+			{
+				if ((this._StartDate != value))
+				{
+					this.OnStartDateChanging(value);
+					this.SendPropertyChanging();
+					this._StartDate = value;
+					this.SendPropertyChanged("StartDate");
+					this.OnStartDateChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_EndDate", DbType="DateTime NOT NULL")]
+		public System.DateTime EndDate
+		{
+			get
+			{
+				return this._EndDate;
+			}
+			set
+			{
+				if ((this._EndDate != value))
+				{
+					this.OnEndDateChanging(value);
+					this.SendPropertyChanging();
+					this._EndDate = value;
+					this.SendPropertyChanged("EndDate");
+					this.OnEndDateChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_AllDayEvent", DbType="Bit NOT NULL")]
+		public bool AllDayEvent
+		{
+			get
+			{
+				return this._AllDayEvent;
+			}
+			set
+			{
+				if ((this._AllDayEvent != value))
+				{
+					this.OnAllDayEventChanging(value);
+					this.SendPropertyChanging();
+					this._AllDayEvent = value;
+					this.SendPropertyChanged("AllDayEvent");
+					this.OnAllDayEventChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_Recurring", DbType="Bit NOT NULL")]
+		public bool Recurring
+		{
+			get
+			{
+				return this._Recurring;
+			}
+			set
+			{
+				if ((this._Recurring != value))
+				{
+					this.OnRecurringChanging(value);
+					this.SendPropertyChanging();
+					this._Recurring = value;
+					this.SendPropertyChanged("Recurring");
+					this.OnRecurringChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_RecurringId", DbType="UniqueIdentifier")]
+		public System.Guid RecurringId
+		{
+			get
+			{
+				return this._RecurringId;
+			}
+			set
+			{
+				if ((this._RecurringId != value))
+				{
+					this.OnRecurringIdChanging(value);
+					this.SendPropertyChanging();
+					this._RecurringId = value;
+					this.SendPropertyChanged("RecurringId");
+					this.OnRecurringIdChanged();
+				}
+			}
+		}
+		
+		[Association(Name="Resource_UptimeCalendar", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="CASCADE")]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.UptimeCalendars.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.UptimeCalendars.Add(this);
+						this._ResourceId = value.ResourceId;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+}
+#pragma warning restore 1591
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HiveDataContext.xml
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HiveDataContext.xml	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HiveDataContext.xml	(revision 4073)
@@ -0,0 +1,130 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Database Name="HeuristicLab.Hive.Linq.Test" Class="HiveDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
+  <Table Name="dbo.AssignedResources" Member="AssignedResources">
+    <Type Name="AssignedResource">
+      <Column Name="ResourceId" Member="ResourceId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid"/>
+      <Column Name="JobId" Member="JobId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" />
+      <Column Name="AssignedRessourcesId" Member="AssignedRessourcesId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
+      <Association Name="Resource_AssignedResource" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" DeleteRule="CASCADE" IsForeignKey="true" Type="Resource"/>
+      <Association Name="Job_AssignedResource" Member="Job" ThisKey="JobId" OtherKey="JobId" DeleteRule="CASCADE" IsForeignKey="true" Type="Job"/>
+    </Type>
+  </Table>
+  <Table Name="dbo.UptimeStatistics" Member="UptimeStatistics">
+    <Type Name="UptimeStatistic">
+      <Column Name="UptimeStatisticsId" Member="UptimeStatisticsId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
+      <Column Name="Login" Member="Login" DbType="DateTime" Type="System.DateTime" />
+      <Column Name="Logout" Member="Logout" DbType="DateTime" Type="System.DateTime" />
+      <Column Name="ResourceId" Member="ResourceId" DbType="UniqueIdentifier" Type="System.Guid" />
+      <Association Name="Client_UptimeStatistic" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" DeleteRule="SET NULL" IsForeignKey="true" Type="Client"/>
+    </Type>
+  </Table>
+  <Table Name="dbo.ClientConfig" Member="ClientConfigs">
+    <Type Name="ClientConfig">
+      <Column Name="ClientConfigId" Member="ClientConfigId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
+      <Column Name="UpDownTimeCalendar" Member="UpDownTimeCalendar" DbType="Xml" UpdateCheck="Never" Type="System.Xml.Linq.XElement"/>
+      <Column Name="HeartBeatIntervall" Member="HeartBeatIntervall" DbType="Int" Type="System.Int32" CanBeNull="true"/>
+      <Association Name="ClientConfig_Client" Member="Clients"  ThisKey="ClientConfigId" OtherKey="ClientConfigId" Type="Client"/>
+    </Type>
+  </Table>
+
+  <Table Name="dbo.ClientGroup_Resource" Member="ClientGroup_Resources">
+    <Type Name="ClientGroup_Resource">
+      <Column Name="ClientGroup_RessourceId" Member="ClientGroup_RessourceId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert"  />
+      <Column Name="ClientGroupId" Member="ClientGroupId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" />
+      <Column Name="ResourceId" Member="ResourceId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" />
+    
+      <Association Name="ClientGroup_ClientGroup_Resource" Member="ClientGroup" ThisKey="ClientGroupId" OtherKey="ResourceId" IsForeignKey="true" Type="ClientGroup" />
+      <Association Name="Resource_ClientGroup_Resource" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" DeleteRule="CASCADE" IsForeignKey="true" Type="Resource"/>
+    </Type>
+  </Table>
+  <Table Name="dbo.PluginInfo" Member="PluginInfos">
+    <Type Name="PluginInfo">
+      <Column Name="PluginId" Member="PluginId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
+      <Column Name="Name" Member="Name" DbType="VarChar(MAX)" Type="System.String" />
+      <Column Name="Version" Member="Version" DbType="VarChar(MAX)" Type="System.String"/>
+      <Column Name="BuildDate" Member="BuildDate" DbType="VarChar(20)" Type="System.String" />
+      <Association Name="PluginInfo_RequiredPlugin" Member="RequiredPlugins" ThisKey="PluginId" OtherKey="PluginId" Type="RequiredPlugin"/>
+    </Type>
+  </Table>
+  <Table Name="dbo.Project" Member="Projects">
+    <Type Name="Project">
+      <Column Name="ProjectId" Member="ProjectId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
+      <Column Name="Name" Member="Name" DbType="VarChar(MAX)" Type="System.String"/>
+      <Association Name="Project_Job" Member="Jobs" ThisKey="ProjectId" OtherKey="ProjectId" Type="Job" />
+    </Type>
+  </Table>
+  <Table Name="dbo.RequiredPlugins" Member="RequiredPlugins">
+    <Type Name="RequiredPlugin">
+      <Column Name="RequiredPluginId" Member="RequiredPluginId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" UpdateCheck="Never" AutoSync="OnInsert" />
+      <Column Name="JobId" Member="JobId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" />
+      <Column Name="PluginId" Member="PluginId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" />
+      <Association Name="PluginInfo_RequiredPlugin" Member="PluginInfo" ThisKey="PluginId" OtherKey="PluginId" DeleteRule="CASCADE" IsForeignKey="true" Type="PluginInfo"/>
+      <Association Name="Job_RequiredPlugin" Member="Job" ThisKey="JobId" OtherKey="JobId" IsForeignKey="true" Type="Job"/>
+    </Type>
+  </Table>
+  <Table Name="dbo.Resource" Member="Resources">
+    <Type Name="Resource" InheritanceCode="RESOURCE">
+      <Column Name="ResourceId" Member="ResourceId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" AutoSync="OnInsert" />
+      <Column Name="Name" Member="Name" DbType="VarChar(MAX)" Type="System.String" />
+      <Column Name="ResourceType" Member="ResourceType" IsDiscriminator="true" Type="System.String"/>
+      <Association Name="Resource_AssignedResource" Member="AssignedResources" ThisKey="ResourceId" OtherKey="ResourceId" Type="AssignedResource"/>      
+      <Association Name="Resource_ClientGroup_Resource" Member="ClientGroup_Resources_Parents" ThisKey="ResourceId" OtherKey="ResourceId" Type="ClientGroup_Resource" />
+      <Association Name="Resource_UptimeCalendar" Member="UptimeCalendars" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeCalendar" />      
+      <Type Name="Client" InheritanceCode="CLIENT" IsInheritanceDefault="true">        
+        <Column Name="CPUSpeed" Member="CPUSpeed" DbType="Int" Type="System.Int32" CanBeNull="true"/>
+        <Column Name="Memory" Member="Memory" DbType="Int" Type="System.Int32" CanBeNull="true"/>
+        <Column Name="Login" Member="Login" DbType="DateTime" Type="System.DateTime" CanBeNull="true"/>
+        <Column Name="Status" Member="Status" DbType="VarChar(MAX)" Type="System.String" CanBeNull="true"/>
+        <Column Name="CalendarSyncStatus" Member="CalendarSyncStatus" DbType="VarChar(MAX)" Type="System.String" CanBeNull="true"/>
+        <Column Name="UseCalendarFromResourceId" Member="UseCalendarFromResourceId" DbType="UniqueIdentifier" Type="System.Guid" CanBeNull="true"/>
+        <Column Name="ClientConfigId" Member="ClientConfigId" DbType="UniqueIdentifier" Type="System.Guid" CanBeNull="true"/>
+        <Column Name="NumberOfCores" Member="NumberOfCores" DbType="Int" Type="System.Int32" CanBeNull="true"/>
+        <Column Name="NumberOfFreeCores" Member="NumberOfFreeCores" DbType="Int" Type="System.Int32" CanBeNull="true"/>
+        <Column Name="FreeMemory" Member="FreeMemory" DbType="Int" Type="System.Int32" CanBeNull="true"/>
+        <Association Name="Client_UptimeStatistic" Member="UptimeStatistics" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeStatistic"/>
+        <Association Name="Client_Job" Member="Jobs" ThisKey="ResourceId" OtherKey="ResourceId" Type="Job" DeleteRule="SET NULL"/>        
+        <Association Name="ClientConfig_Client" Member="ClientConfig" ThisKey="ClientConfigId" OtherKey="ClientConfigId" DeleteRule="SET NULL" IsForeignKey="true" Type="ClientConfig"/>
+      </Type>
+      <Type Name="ClientGroup" InheritanceCode="GROUP" IsInheritanceDefault="false">
+        <Association Name="ClientGroup_ClientGroup_Resource" Member="ClientGroup_Resources_Children" ThisKey="ResourceId" OtherKey="ClientGroupId" Type="ClientGroup_Resource" />
+      </Type>
+    </Type>
+  </Table>
+  
+  <Table Name="dbo.Job" Member="Jobs">
+    <Type Name="Job">
+      <Column Name="JobId" Member="JobId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
+      <Column Name="ParentJobId" Member="ParentJobId" DbType="UniqueIdentifier" Type="System.Guid" CanBeNull="true" />
+      <Column Name="JobState" Member="JobState" DbType="VarChar(MAX)" Type="System.String"/>
+      <Column Name="ResourceId" Member="ResourceId" DbType="UniqueIdentifier" Type="System.Guid" CanBeNull="true"/>
+      <Column Name="Percentage" Member="Percentage" DbType="Float" Type="System.Double" CanBeNull="true"/>
+      <Column Name="SerializedJob" Member="SerializedJob" DbType="VarBinary(MAX)" UpdateCheck="Never" Type="System.Data.Linq.Binary" IsDelayLoaded="true"/>
+      <Column Name="DateCreated" Member="DateCreated" DbType="DateTime" Type="System.DateTime" CanBeNull="true"/>
+      <Column Name="DateCalculated" Member="DateCalculated" DbType="DateTime" Type="System.DateTime" CanBeNull="true"/>
+      <Column Name="DateFinished" Member="DateFinished" DbType="DateTime" Type="System.DateTime" CanBeNull="true"/>
+      <Column Name="Priority" Member="Priority" DbType="Int NOT NULL" Type="System.Int32"/>
+      <Column Name="ProjectId" Member="ProjectId" DbType="UniqueIdentifier" Type="System.Guid" CanBeNull="true"/>
+      <Column Name="UserId" Member="UserId" DbType="UniqueIdentifier" Type="System.Guid" CanBeNull="true"/>
+      <Column Name="CoresNeeded" Member="CoresNeeded" DbType="Int NOT NULL" Type="System.Int32"/>
+      <Column Name="MemoryNeeded" Member="MemoryNeeded" DbType="Int NOT NULL" Type="System.Int32"/>
+      <Association Name="Job_AssignedResource" Member="AssignedResources" ThisKey="JobId" OtherKey="JobId" Type="AssignedResource"/>
+      <Association Name="Job_RequiredPlugin" Member="RequiredPlugins" ThisKey="JobId" OtherKey="JobId" Type="RequiredPlugin" />
+      <Association Name="Job_Job" Member="Jobs" ThisKey="JobId" OtherKey="ParentJobId" Type="Job"/>
+      <Association Name="Job_Job" Member="Job1" ThisKey="ParentJobId" OtherKey="JobId" IsForeignKey="true" Type="Job" />
+      <Association Name="Project_Job" Member="Project" ThisKey="ProjectId" OtherKey="ProjectId" DeleteRule="SET NULL" IsForeignKey="true" Type="Project"/>
+      <Association Name="Client_Job" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" DeleteRule="SET NULL" IsForeignKey="true" Type="Client"/>
+    </Type>
+  </Table>
+  <Table Name="dbo.UptimeCalendar" Member="UptimeCalendars">
+    <Type Name="UptimeCalendar">
+      <Column Name="UptimeCalendarId" Member="UptimeCalendarId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
+      <Column Name="ResourceId" Member="ResourceId" DbType="UniqueIdentifier NOT NULL" Type="System.Guid" />
+      <Column Name="StartDate" Member="StartDate" DbType="DateTime NOT NULL" Type="System.DateTime" />
+      <Column Name="EndDate" Member="EndDate" DbType="DateTime NOT NULL" Type="System.DateTime"/>
+      <Column Name="AllDayEvent" Member="AllDayEvent" DbType="Bit NOT NULL" Type="System.Boolean"/>
+      <Column Name="Recurring" Member="Recurring" DbType="Bit NOT NULL" Type="System.Boolean"/>
+      <Column Name="RecurringId" Member="RecurringId" DbType="UniqueIdentifier" Type="System.Guid"/>
+      <Association Name="Resource_UptimeCalendar" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" DeleteRule="CASCADE" IsForeignKey="true" Type="Resource"/>
+    </Type>
+  </Table>
+</Database>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs	(revision 4073)
@@ -0,0 +1,205 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Data.Linq;
+using HeuristicLab.Hive.Server.DataAccess;
+using System.IO;
+using System.Data.SqlClient;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public class JobDao: BaseDao<JobDto, Job>, IJobDao {
+   
+    #region IGenericDao<JobDto,Job> Members
+
+    public JobDto FindById(Guid id) {
+      return (from job in Context.Jobs
+              where job.JobId.Equals(id)
+              select EntityToDto(job, null)).SingleOrDefault();
+    }
+
+    public IEnumerable<JobDto> FindAll() {
+      return (from job in Context.Jobs
+              select EntityToDto(job, null)).ToList();
+    }
+
+    public IEnumerable<JobDto> FindWithLimitations(State jobState, int offset, int count) {
+
+      IQueryable<JobDto> query = null;
+      if (jobState == State.finished) {
+         query = from job in Context.Jobs
+                 where job.JobState == Enum.GetName(typeof (State), jobState)
+                 orderby job.DateFinished
+                 select EntityToDto(job, null);
+      } else if (jobState == State.calculating || jobState == State.requestSnapshot || jobState == State.requestSnapshotSent) {
+        query = from job in Context.Jobs
+                    where job.JobState == Enum.GetName(typeof(State), jobState)
+                    orderby job.DateCalculated
+                    select EntityToDto(job, null);
+      } else {
+        query = from job in Context.Jobs
+                    where job.JobState == Enum.GetName(typeof(State), jobState)
+                    orderby job.DateCreated
+                    select EntityToDto(job, null);
+      }
+
+      return query.Skip(offset).Take(count).ToList();
+    }
+
+
+    public byte[] GetBinaryJobFile(Guid jobId) {
+      return (from job in Context.Jobs
+              where job.JobId.Equals(jobId)
+              select job.SerializedJob).SingleOrDefault().ToArray();
+    }
+
+    public JobDto Insert(JobDto bObj) {
+      Job j = DtoToEntity(bObj, null);
+      Context.Jobs.InsertOnSubmit(j);
+      CommitChanges();
+      bObj.Id = j.JobId;
+      return bObj;
+    }
+
+    public void SetBinaryJobFile(Guid jobId, byte[] data) {
+      Job j = (from job in Context.Jobs
+               where job.JobId.Equals(jobId)
+               select job).SingleOrDefault();
+      j.SerializedJob = data;
+      CommitChanges();
+    }
+
+    public SerializedJob InsertWithAttachedJob(SerializedJob job) {
+      Job j = DtoToEntity(job.JobInfo, null);
+      j.SerializedJob = job.SerializedJobData;
+      foreach (Guid assignRessourceId in job.JobInfo.AssignedResourceIds)
+        j.AssignedResources.Add(new AssignedResource { ResourceId = assignRessourceId});
+      Context.Jobs.InsertOnSubmit(j);
+      CommitChanges();
+      job.JobInfo.Id = j.JobId;
+      return job;
+
+    }
+
+    public void Delete(JobDto bObj) {
+      Job job = Context.Jobs.SingleOrDefault(j => j.JobId.Equals(bObj.Id));
+      Context.Jobs.DeleteOnSubmit(job);
+      CommitChanges();
+    }
+
+    public void Update(JobDto bObj) {
+      Job job = Context.Jobs.SingleOrDefault(j => j.JobId.Equals(bObj.Id));
+      DtoToEntity(bObj, job);    
+      CommitChanges(); 
+    }
+
+    public IEnumerable<JobDto> FindActiveJobsOfClient(ClientDto client) {
+      return (from j in Context.Jobs
+              where (j.JobState == Enum.GetName(typeof (State), State.calculating) ||
+                     j.JobState == Enum.GetName(typeof (State), State.abort) ||
+                     j.JobState == Enum.GetName(typeof (State), State.requestSnapshot) ||
+                     j.JobState == Enum.GetName(typeof (State), State.requestSnapshotSent)) &&
+                    (j.ResourceId.Equals(client.Id))
+              select EntityToDto(j, null)).ToList();
+    }
+    public IEnumerable<JobDto> FindFittingJobsForClient(State state, int freeCores, int freeMemory, Guid clientId) {
+      ClientGroupDao cgd = new ClientGroupDao();
+      
+      List<Guid> idList = new List<Guid>(cgd.FindAllGroupAndParentGroupIdsForClient(clientId));
+      //Add myself too - enables jobs for one specific host!
+      idList.Add(clientId);
+      
+      var q = (from ar in Context.AssignedResources               
+               where ar.Job.JobState == Enum.GetName(typeof (State), State.offline) &&
+                     ar.Job.CoresNeeded <= freeCores &&
+                     ar.Job.MemoryNeeded <= freeMemory &&
+                     idList.Contains(ar.ResourceId)
+               orderby ar.Job.Priority descending                 
+               select EntityToDto(ar.Job, null));
+      return q.ToList();
+      
+    }
+
+    public IEnumerable<JobDto> GetJobsByState(State state) {
+      return (from j in Context.Jobs
+              where (j.JobState == Enum.GetName(typeof (State), state))
+              select EntityToDto(j, null)).ToList();
+    }
+
+    public void AssignClientToJob(Guid clientId, Guid jobId) {
+      Client c = Context.Resources.OfType<Client>().SingleOrDefault(client => client.ResourceId.Equals(clientId));
+      Job j = Context.Jobs.SingleOrDefault(job => job.JobId.Equals(jobId));
+      c.Jobs.Add(j);
+      j.Client = c;
+      CommitChanges();      
+    }
+
+    public void SetJobOffline(JobDto job) {
+      Job j = Context.Jobs.SingleOrDefault(jq => jq.JobId.Equals(job.Id));
+      j.Client = null;
+      j.JobState = Enum.GetName(typeof(State), State.offline); 
+      CommitChanges();
+    }
+
+    public Stream GetSerializedJobStream(Guid jobId) {
+      VarBinarySource source =
+        new VarBinarySource(
+          (SqlConnection)Context.Connection, null,
+          "Job", "SerializedJob", "JobId", jobId);
+
+      return new VarBinaryStream(source);
+    }
+
+    #endregion
+
+    public override Job DtoToEntity(JobDto source, Job target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new Job();
+
+      target.CoresNeeded = source.CoresNeeded;
+      target.MemoryNeeded = source.MemoryNeeded;
+
+      target.DateCalculated = source.DateCalculated;
+      target.DateCreated = source.DateCreated;
+      target.DateFinished = source.DateFinished;
+      target.JobId = source.Id;
+
+      target.Percentage = source.Percentage;
+
+      target.Priority = source.Priority;
+      target.JobState = Enum.GetName(typeof(State), source.State);
+      return target;
+    }
+
+    //Assigned ressources are not used atm!
+    //Client is not used ATM - not sure when we stopped using those...
+    public override JobDto EntityToDto(Job source, JobDto target) {
+      if (source == null)
+        return null;
+      if(target == null)
+        target = new JobDto();
+    
+      //target.ParentJob = null;
+      //target.PluginsNeeded = null;
+      //target.Client = null;
+      //target.Project = null;
+      
+      target.CoresNeeded = source.CoresNeeded;
+      target.MemoryNeeded = source.MemoryNeeded;
+
+      target.DateCalculated = source.DateCalculated;
+      target.DateCreated = source.DateCreated;
+      target.DateFinished = source.DateFinished;
+      target.Id = source.JobId;
+       
+      target.Percentage = source.Percentage;
+      
+      target.Priority = source.Priority;
+      target.State = (State) Enum.Parse(typeof (State), source.JobState);
+      return target;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/LINQDataAccessPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/LINQDataAccessPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/LINQDataAccessPlugin.cs	(revision 4073)
@@ -0,0 +1,16 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  [Plugin("HeuristicLab.Hive.Server.LINQDataAccess-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.LINQDataAccess-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Server.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Tracing", "3.2.0")]
+  public class LINQDataAccessPlugin: PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/PluginInfoDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/PluginInfoDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/PluginInfoDao.cs	(revision 4073)
@@ -0,0 +1,103 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Server.DataAccess;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public class PluginInfoDao: BaseDao<HivePluginInfoDto, PluginInfo>, IPluginInfoDao {
+    #region IGenericDao<HivePluginInfoDto,PluginInfo> Members
+
+    public HivePluginInfoDto FindById(Guid id) {
+      return (from pi in Context.PluginInfos
+              where pi.PluginId.Equals(id)
+              select EntityToDto(pi, null)
+             ).SingleOrDefault();  
+    }
+
+    public IEnumerable<HivePluginInfoDto> FindAll() {
+      return (from pi in Context.PluginInfos              
+              select EntityToDto(pi, null)
+       ).ToList();  
+    }
+
+    public HivePluginInfoDto Insert(HivePluginInfoDto bObj) {
+      PluginInfo pi = DtoToEntity(bObj, null);
+      Context.PluginInfos.InsertOnSubmit(pi);
+      CommitChanges();
+      bObj.Id = pi.PluginId;
+      return bObj;
+    }
+
+    public void Delete(HivePluginInfoDto bObj) {
+      PluginInfo pi = Context.PluginInfos.SingleOrDefault(p => p.PluginId.Equals(bObj.Id));
+      Context.PluginInfos.DeleteOnSubmit(pi);      
+    }
+
+    public void Update(HivePluginInfoDto bObj) {
+      PluginInfo pi = Context.PluginInfos.SingleOrDefault(p => p.PluginId.Equals(bObj.Id));
+      DtoToEntity(bObj, pi);
+      CommitChanges();
+    }
+
+    public void InsertPluginDependenciesForJob(JobDto jobDto) {
+      foreach (HivePluginInfoDto info in jobDto.PluginsNeeded) {                
+        PluginInfo dbpi =
+          Context.PluginInfos.Where(pi => pi.Name.Equals(info.Name) && pi.Version == info.Version.ToString()).SingleOrDefault();
+        if (dbpi == null) {
+          dbpi = new PluginInfo {
+                                  BuildDate = info.BuildDate.ToString(),
+                                  Name = info.Name,
+                                  Version = info.Version.ToString()
+                                };
+          Context.PluginInfos.InsertOnSubmit(dbpi);
+          CommitChanges();
+        }
+
+        RequiredPlugin rq = new RequiredPlugin();
+        rq.JobId = jobDto.Id;
+        rq.PluginInfo = dbpi;
+        Context.RequiredPlugins.InsertOnSubmit(rq);
+        CommitChanges();
+      }
+    }
+
+    public List<HivePluginInfoDto> GetPluginDependenciesForJob(JobDto jobDto) {
+      return (from rp in Context.RequiredPlugins
+              where rp.JobId.Equals(jobDto.Id)
+              select EntityToDto(rp.PluginInfo, null)).ToList();
+      
+    }
+
+    #endregion
+
+    // Build Date not mapped - won't matter anyway, it's a obsolete field.
+    public override PluginInfo DtoToEntity(HivePluginInfoDto source, PluginInfo target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new PluginInfo();
+
+      target.Name = source.Name;
+      target.PluginId = source.Id;
+      target.Version = source.Version.ToString();      
+
+      return target;
+
+    }
+
+    public override HivePluginInfoDto EntityToDto(PluginInfo source, HivePluginInfoDto target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new HivePluginInfoDto();
+
+      target.Name = source.Name;
+      target.Id = source.PluginId;
+      target.Version = new Version(source.Version);
+
+      return target;
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Server.LINQDataAccess")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("21FAA962-223D-490f-A6CC-CFC02D4BF0B8")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/Settings.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/Settings.Designer.cs	(revision 4073)
@@ -0,0 +1,37 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
+        [global::System.Configuration.DefaultSettingValueAttribute("Data Source=127.0.0.1;Initial Catalog=HeuristicLab.Hive.Linq;Integrated Security=" +
+            "True;MultipleActiveResultSets=True")]
+        public string HeuristicLab_Hive_LinqConnectionString {
+            get {
+                return ((string)(this["HeuristicLab_Hive_LinqConnectionString"]));
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/Settings.settings
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/Settings.settings	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/Properties/Settings.settings	(revision 4073)
@@ -0,0 +1,14 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="HeuristicLab.Hive.Server.LINQDataAccess.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="HeuristicLab_Hive_LinqConnectionString" Type="(Connection string)" Scope="Application">
+      <DesignTimeValue Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
+&lt;SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
+  &lt;ConnectionString&gt;Data Source=127.0.0.1;Initial Catalog=HeuristicLab.Hive.Linq;Integrated Security=True;MultipleActiveResultSets=True&lt;/ConnectionString&gt;
+  &lt;ProviderName&gt;System.Data.SqlClient&lt;/ProviderName&gt;
+&lt;/SerializableConnectionString&gt;</DesignTimeValue>
+      <Value Profile="(Default)">Data Source=127.0.0.1;Initial Catalog=HeuristicLab.Hive.Linq;Integrated Security=True;MultipleActiveResultSets=True</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/UptimeCalendarDao.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/UptimeCalendarDao.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/UptimeCalendarDao.cs	(revision 4073)
@@ -0,0 +1,163 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Server.DataAccess;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  public class UptimeCalendarDao: BaseDao<AppointmentDto, UptimeCalendar>, IUptimeCalendarDao {
+    public override UptimeCalendar DtoToEntity(AppointmentDto source, UptimeCalendar target) {
+      if(source == null)
+        return null;
+      if (target == null)
+        target = new UptimeCalendar();
+
+      target.AllDayEvent = source.AllDayEvent;
+      target.EndDate = source.EndDate;
+      target.StartDate = source.StartDate;
+      target.Recurring = source.Recurring;
+      target.RecurringId = source.RecurringId;
+
+      target.ResourceId = source.ResourceId;
+
+      return target;
+      
+    }
+
+    public override AppointmentDto EntityToDto(UptimeCalendar source, AppointmentDto target) {
+      if (source == null)
+        return null;
+      if (target == null)
+        target = new AppointmentDto();
+      
+      target.AllDayEvent = source.AllDayEvent;
+      target.EndDate = source.EndDate;
+      target.StartDate = source.StartDate;
+      target.Recurring = source.Recurring;
+      target.RecurringId = source.RecurringId;
+
+      target.ResourceId = source.ResourceId;
+
+      return target;
+
+    }
+
+    #region IGenericDao<AppointmentDto> Members
+
+    public AppointmentDto FindById(Guid id) {
+      return (from app in Context.UptimeCalendars
+              where app.UptimeCalendarId.Equals(id)
+              select EntityToDto(app, null)).SingleOrDefault();
+    }
+
+    public IEnumerable<AppointmentDto> FindAll() {
+      return (from app in Context.UptimeCalendars              
+              select EntityToDto(app, null)).ToList();
+    }
+
+    public AppointmentDto Insert(AppointmentDto bObj) {
+      UptimeCalendar uc = DtoToEntity(bObj, null);
+      Context.UptimeCalendars.InsertOnSubmit(uc);
+      CommitChanges();
+      bObj.Id = uc.UptimeCalendarId;
+      return bObj;
+    }
+
+    public void Delete(AppointmentDto bObj) {
+      Context.UptimeCalendars.DeleteOnSubmit(Context.UptimeCalendars.SingleOrDefault(uc => uc.UptimeCalendarId.Equals(bObj.Id)));
+      CommitChanges();
+    }
+
+    public void Update(AppointmentDto bObj) {
+      UptimeCalendar cc = Context.UptimeCalendars.SingleOrDefault(c => c.UptimeCalendarId.Equals(bObj.Id));
+      DtoToEntity(bObj, cc);
+      CommitChanges();
+    }
+
+    public IEnumerable<AppointmentDto> GetUptimeCalendarForResource(Guid resourceId) {
+      return (from uc in Context.UptimeCalendars
+              where uc.ResourceId.Equals(resourceId)
+              select EntityToDto(uc, null)).ToList();
+    }
+
+    public void SetUptimeCalendarForResource(Guid resourceId, IEnumerable<AppointmentDto> appointments) {
+      var q = (from uc in Context.UptimeCalendars
+               where uc.ResourceId.Equals(resourceId)
+               select uc);
+      
+      Context.UptimeCalendars.DeleteAllOnSubmit(q);
+
+      foreach (AppointmentDto appdto in appointments) {      
+        UptimeCalendar uc = DtoToEntity(appdto, null);
+        uc.ResourceId = resourceId;
+        Context.UptimeCalendars.InsertOnSubmit(uc);
+      }
+
+      CommitChanges();            
+    }    
+
+    public IEnumerable<AppointmentDto> GetCalendarForClient(ClientDto client) {
+      Client dbc = Context.Resources.OfType<Client>().SingleOrDefault(c => c.ResourceId.Equals(client.Id));
+      IList<AppointmentDto> appointments = new List<AppointmentDto>();
+      if (dbc != null) {
+        ClientGroup cg =
+          Context.Resources.OfType<ClientGroup>().SingleOrDefault(cgroup => cgroup.ResourceId.Equals(dbc.UseCalendarFromResourceId));
+        //in case no plan has been set
+        if (cg == null)
+          if (dbc.ClientGroup_Resources_Parents.FirstOrDefault() != null)
+            cg = dbc.ClientGroup_Resources_Parents.FirstOrDefault().ClientGroup;
+
+        if (cg == null)
+          return appointments;
+
+        while (cg.UptimeCalendars.Count == 0) {
+          if (cg.ClientGroup_Resources_Parents.FirstOrDefault() != null)
+            cg = cg.ClientGroup_Resources_Parents.FirstOrDefault().ClientGroup;
+          else {
+            break;
+          }
+        }
+
+        foreach (UptimeCalendar appointment in cg.UptimeCalendars) {
+          appointments.Add(EntityToDto(appointment,null));  
+        }
+
+      }
+      return appointments;
+    }
+
+    public void NotifyClientsOfNewCalendar(Guid groupId, bool forcePush) {
+      
+      //Get the current ClientGroup
+      ClientGroup cg = Context.Resources.OfType<ClientGroup>().SingleOrDefault(cgroup => cgroup.ResourceId.Equals(groupId));
+      if(cg == null)
+        return;
+
+      //Get all the affected clients
+      List<Client> clients = Context.Resources.OfType<Client>().Where(c => c.UseCalendarFromResourceId.Equals(cg.ResourceId)).ToList();
+      
+      //Set new state
+      foreach (Client client in clients) {
+        client.CalendarSyncStatus = (forcePush ? Enum.GetName(typeof(CalendarState), CalendarState.ForceFetch) : Enum.GetName(typeof(CalendarState), CalendarState.Fetch));      
+      }
+      
+      CommitChanges();
+
+      //Get all Subgroups
+      List<ClientGroup> groups = (from cg1 in Context.Resources.OfType<ClientGroup>()
+                                  where cg1.ClientGroup_Resources_Parents.Any(
+                                cgr => cgr.ClientGroupId.Equals(groupId))
+                              select cg1).ToList();
+
+      //If they have their own calendar - stop propagation
+      //otherweise - propagate
+      foreach (ClientGroup cgroup in groups) {
+        if(cgroup.UptimeCalendars.Count == 0)
+          NotifyClientsOfNewCalendar(cgroup.ResourceId, forcePush);        
+      }
+    }
+
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/VarBinaryStream.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/VarBinaryStream.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/VarBinaryStream.cs	(revision 4073)
@@ -0,0 +1,281 @@
+/* Based on: 
+ *   http://www.eggheadcafe.com/conversation.aspx?messageid=29988910&threadid=29988841
+ * */
+
+using System;
+using System.IO;
+using System.Data.SqlClient;
+using System.Data;
+using HeuristicLab.Tracing;
+
+namespace HeuristicLab.Hive.Server.LINQDataAccess {
+  /// <summary>
+  /// The VarBinaryStream class inherits from Stream. It uses a
+  /// VarBinarySource class to execute the actual TSQL.
+  /// </summary>
+  public class VarBinaryStream : Stream, IDisposable {
+    private long _position;
+    private readonly VarBinarySource _source;
+
+    public VarBinaryStream(VarBinarySource source) {
+      _position = 0;
+      _source = source;
+    }
+
+    public override bool CanRead {
+      get { return true; }
+    }
+
+    public override bool CanSeek {
+      get { return true; }
+    }
+
+    public override bool CanWrite {
+      get { return true; }
+    }
+
+    public override long Length {
+      get { return _source.Length; }
+    }
+
+    public override long Position {
+      get { return _position; }
+      set { this.Seek(value, SeekOrigin.Begin); }
+    }
+
+    public override void Flush() { }
+
+    public override long Seek(long offset, SeekOrigin origin) {
+      switch (origin) {
+        case SeekOrigin.Begin: {
+            if ((offset < 0) && (offset > this.Length))
+              throw new ArgumentException("Invalid seek origin.");
+            _position = offset;
+            break;
+          }
+        case SeekOrigin.End: {
+            if ((offset > 0) && (offset < -this.Length))
+              throw new ArgumentException("Invalid seek origin.");
+            _position = this.Length - offset;
+            break;
+          }
+        case SeekOrigin.Current: {
+            if ((_position + offset > this.Length))
+              throw new ArgumentException("Invalid seek origin.");
+            _position = _position + offset;
+            break;
+          }
+        default: {
+            throw new ArgumentOutOfRangeException("origin");
+          }
+      }
+      return _position;
+    }
+
+    public override void SetLength(long value) {
+      throw new NotSupportedException();
+    }
+
+    public override int Read(byte[] buffer, int offset, int count) {
+      if (buffer == null)
+        throw new ArgumentNullException("buffer");
+      if (offset < 0)
+        throw new ArgumentOutOfRangeException("offset");
+      if (count < 0)
+        throw new ArgumentOutOfRangeException("count");
+      if (buffer.Length - offset < count)
+        throw new ArgumentException("Offset and length were out of bounds for the array");
+
+      byte[] data = _source.Read(Position, count);
+      if (data == null)
+        return 0;
+
+      Buffer.BlockCopy(data, 0, buffer, offset, data.Length);
+      _position += data.Length;
+      return data.Length;
+    }
+
+    public override void Write(byte[] buffer, int offset, int count) {
+      if (buffer == null)
+        throw new ArgumentNullException("buffer");
+      if (offset < 0)
+        throw new ArgumentOutOfRangeException("offset");
+      if (count < 0)
+        throw new ArgumentOutOfRangeException("count");
+      if (buffer.Length - offset < count)
+        throw new ArgumentException("Offset and length were out of bounds for the array");
+
+      byte[] data = GetWriteBuffer(buffer, count, offset);
+      _source.Write(data, _position, count);
+      _position += count;
+    }
+
+    private static byte[] GetWriteBuffer(byte[] buffer, int count, int
+    offset) {
+      if (buffer.Length == count)
+        return buffer;
+      byte[] data = new byte[count];
+      Buffer.BlockCopy(buffer, offset, data, 0, count);
+      return data;
+    }
+
+    public override void Close() {
+      _source.Close();
+    }
+
+    protected override void Dispose(bool disposing) {
+      if (!disposing) {
+        if (_source != null) {
+          _source.Close();
+          _source.Dispose();
+        }
+      }
+      base.Dispose(disposing);
+    }
+  }
+
+
+  public class VarBinarySource : IDisposable {
+    private SqlCommand _readCommand;
+    private SqlCommand _writeCommand;
+    private SqlConnection _connection;
+    private SqlTransaction _transaction;
+    private bool _ownedTransaction = false;
+    private bool _ownedConnection = false;
+    private readonly long _length;
+
+    public VarBinarySource(SqlConnection connection,
+      SqlTransaction transaction,
+      string table, string
+    dataColumn, string keyColumn, Guid key) {
+      _connection = connection;
+      _transaction = (SqlTransaction) ContextFactory.Context.Transaction;
+      /*
+      if (_connection.State == ConnectionState.Closed) {
+        _connection.Open();
+        _ownedConnection = true;
+
+        _transaction =
+          _connection.BeginTransaction(IsolationLevel.RepeatableRead) as SqlTransaction;
+        _ownedTransaction = true;
+      } else {
+        _ownedConnection = false;
+
+        if (transaction != null) {
+          _transaction = transaction;
+
+          _ownedTransaction = false;
+        } else {
+          _transaction =
+            _connection.BeginTransaction(IsolationLevel.ReadCommitted) as SqlTransaction;
+
+          _ownedTransaction = true;
+        }
+      }        */
+
+      _length = GetLength(connection, table, dataColumn, keyColumn, key);
+      _readCommand = CreateReadCommand(connection, table, dataColumn,
+      keyColumn, key);
+      _writeCommand = CreateWriteCommand(connection, table, dataColumn,
+      keyColumn, key);
+    }
+
+    public long Length {
+      get { return _length; }
+    }
+
+    private static SqlCommand CreateReadCommand(SqlConnection connection,
+    string table, string dataColumn, string keyColumn,
+    Guid key) {
+      SqlCommand readCommand = connection.CreateCommand();
+      readCommand.CommandText = string.Format(@"
+select substring({0}, @offset, @length)
+from {1}
+where {2} = @key", dataColumn, table, keyColumn);
+      readCommand.Parameters.Add("@key", SqlDbType.UniqueIdentifier).Value = key;
+      readCommand.Parameters.Add("@offset", SqlDbType.BigInt);
+      readCommand.Parameters.Add("@length", SqlDbType.BigInt);
+      return readCommand;
+    }
+
+    private static SqlCommand CreateWriteCommand(SqlConnection connection,
+    string table, string dataColumn, string keyColumn,
+    Guid key) {
+      SqlCommand writecommand = connection.CreateCommand();
+      writecommand.CommandText = string.Format(@"
+update {0}
+set {1}.write(@buffer, @offset, @length)
+where {2} = @key", table, dataColumn, keyColumn);
+      writecommand.Parameters.Add("@key", SqlDbType.UniqueIdentifier).Value = key;
+      writecommand.Parameters.Add("@offset", SqlDbType.BigInt);
+      writecommand.Parameters.Add("@length", SqlDbType.BigInt);
+      writecommand.Parameters.Add("@buffer", SqlDbType.VarBinary);
+      return writecommand;
+    }
+
+    private long GetLength(SqlConnection connection,
+      string table,
+    string dataColumn, string keyColumn,
+    Guid key) {
+      using (SqlCommand command = connection.CreateCommand()) {
+        command.Transaction = _transaction;
+
+        SqlParameter length = command.Parameters.Add("@length",
+        SqlDbType.BigInt);
+        length.Direction = ParameterDirection.Output;
+
+        command.CommandText = string.Format(@"
+select @length = cast(datalength({0}) as bigint)
+from {1}
+where {2} = @key", dataColumn, table, keyColumn);
+        command.Parameters.Add("@key", SqlDbType.UniqueIdentifier).Value = key;
+        command.ExecuteNonQuery();
+        return length.Value == DBNull.Value ? 0 : (long)length.Value;
+      }
+    }
+
+    public byte[] Read(long offset, long length) {
+      _readCommand.Transaction = _transaction;
+
+      // substring is 1-based.
+      _readCommand.Parameters["@offset"].Value = offset + 1;
+      _readCommand.Parameters["@length"].Value = length;
+      return (byte[])_readCommand.ExecuteScalar();
+    }
+
+    public void Write(byte[] buffer, long offset, long length) {
+      _writeCommand.Transaction = _transaction;
+
+      _writeCommand.Parameters["@buffer"].Value = buffer;
+      _writeCommand.Parameters["@offset"].Value = offset;
+      _writeCommand.Parameters["@length"].Value = length;
+      _writeCommand.ExecuteNonQuery();
+    }
+
+    public void Close() {
+      Logger.Info("Closing Stream");
+      if (_transaction != null) {
+        _transaction.Commit();
+        _transaction = null;
+        Logger.Info("Transaction commited and closed");
+      }
+
+      if (_connection != null) {
+        _connection.Close();
+        ContextFactory.Context.Dispose();
+        ContextFactory.Context = null;
+        Logger.Info("Connection and Context disposed and set null");
+      }
+    }
+
+    public void Dispose() {
+      if (_readCommand != null) {
+        _readCommand.Dispose();
+      }
+      if (_writeCommand != null) {
+        _writeCommand.Dispose();
+      }
+    }
+  }
+}
+
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/app.config
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/app.config	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/app.config	(revision 4073)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <configSections>
+    </configSections>
+    <connectionStrings>
+        <add name="HeuristicLab.Hive.Server.LINQDataAccess.Properties.Settings.HeuristicLab_Hive_LinqConnectionString"
+            connectionString="Data Source=127.0.0.1;Initial Catalog=HeuristicLab.Hive.Linq;Integrated Security=True;MultipleActiveResultSets=True"
+            providerName="System.Data.SqlClient" />
+    </connectionStrings>
+</configuration>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/DefaultScheduler.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/DefaultScheduler.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/DefaultScheduler.cs	(revision 4073)
@@ -0,0 +1,88 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Server.Core.InternalInterfaces;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.Hive.Server.DataAccess;
+using System.Threading;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.Scheduler {
+  class DefaultScheduler: IScheduler {
+
+    private ISessionFactory factory;
+
+    private static Mutex jobLock =
+      new Mutex();
+
+    #region IScheduler Members
+
+    public DefaultScheduler() {
+      factory = ServiceLocator.GetSessionFactory();
+    }
+
+    public bool ExistsJobForClient(HeuristicLab.Hive.Contracts.BusinessObjects.HeartBeatData hbData) {
+      ISession session = factory.GetSessionForCurrentThread();
+
+      try {
+        IJobAdapter jobAdapter =
+          session.GetDataAdapter<Job, IJobAdapter>();
+
+        List<Job> allOfflineJobsForClient = new List<Job>(
+          jobAdapter.FindJobs(State.offline, 
+          hbData.FreeCores,
+          hbData.FreeMemory, 
+          hbData.ClientId));
+        return (allOfflineJobsForClient != null && allOfflineJobsForClient.Count > 0);
+      }
+      finally {
+        if (session != null)
+          session.EndSession();
+      }
+    }
+
+    public HeuristicLab.Hive.Contracts.BusinessObjects.Job GetNextJobForClient(Guid clientId) {
+      ISession session = factory.GetSessionForCurrentThread();
+
+      try {
+        IJobAdapter jobAdapter =
+          session.GetDataAdapter<Job, IJobAdapter>();
+
+        IClientAdapter clientAdapter =
+          session.GetDataAdapter<ClientInfo, IClientAdapter>();
+
+        /// Critical section ///
+        jobLock.WaitOne();
+
+        ClientInfo client = clientAdapter.GetById(clientId);
+        LinkedList<Job> allOfflineJobsForClient = new LinkedList<Job>(
+          jobAdapter.FindJobs(State.offline, 
+          client.NrOfFreeCores, 
+          client.FreeMemory, 
+          client.Id));
+
+        Job jobToCalculate = null;
+        if (allOfflineJobsForClient != null && allOfflineJobsForClient.Count > 0) {
+          jobToCalculate = allOfflineJobsForClient.First.Value;
+          jobToCalculate.State = State.calculating;
+          jobToCalculate.Client = client;
+          jobToCalculate.Client.State = State.calculating;
+
+          jobToCalculate.DateCalculated = DateTime.Now;
+          jobAdapter.Update(jobToCalculate);
+        }
+        jobLock.ReleaseMutex();
+        /// End Critical section ///
+
+        return jobToCalculate;
+      }
+      finally {
+        if (session != null)
+          session.EndSession();
+      }
+    }
+
+    #endregion
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HeuristicLab.Hive.Server.Scheduler-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HeuristicLab.Hive.Server.Scheduler-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HeuristicLab.Hive.Server.Scheduler-3.3.csproj	(revision 4073)
@@ -0,0 +1,141 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{679E977A-117B-456E-8594-2A4DEADB658B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Server.Scheduler</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Server.Scheduler-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HiveServerSchedulerPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess.ADOHelper\3.3\HeuristicLab.DataAccess.ADOHelper-3.3.csproj">
+      <Project>{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}</Project>
+      <Name>HeuristicLab.DataAccess.ADOHelper-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Server.Core\3.3\HeuristicLab.Hive.Server.Core-3.3.csproj">
+      <Project>{898B31CF-81DC-453B-AEB3-BDF83197A7EE}</Project>
+      <Name>HeuristicLab.Hive.Server.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Server.DataAccess\3.3\HeuristicLab.Hive.Server.DataAccess-3.3.csproj">
+      <Project>{4D5A2A16-66C2-431D-9AA3-BD3041E64B84}</Project>
+      <Name>HeuristicLab.Hive.Server.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HiveServerSchedulerPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HiveServerSchedulerPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HiveServerSchedulerPlugin.cs	(revision 4073)
@@ -0,0 +1,34 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Server {
+  [Plugin("HeuristicLab.Hive.Server.Scheduler-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.Scheduler-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Server-3.2")]
+  public class HiveServerSchedulerPlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Server.Scheduler")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("25B50C56-CC87-4fa3-84CA-D28DD95FCB00")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/App.config
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/App.config	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/App.config	(revision 4073)
@@ -0,0 +1,9 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <configSections>
+    <sectionGroup name="spring">
+      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
+      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
+    </sectionGroup>
+  </configSections>
+</configuration>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HeuristicLab.Hive.Server-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HeuristicLab.Hive.Server-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HeuristicLab.Hive.Server-3.3.csproj	(revision 4073)
@@ -0,0 +1,206 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A04AE929-D0E1-466D-A9D3-BF3C4B2C209F}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Hive.Server</RootNamespace>
+    <AssemblyName>HeuristicLab.Hive.Server-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\HeuristicLab.ExtLibs\HeuristicLab.SpringNET\1.3.0\Common.Logging.dll</HintPath>
+    </Reference>
+    <Reference Include="Spring.Aop, Version=1.3.0.20214, Culture=neutral, PublicKeyToken=65e474d141e25e07, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\HeuristicLab.ExtLibs\HeuristicLab.SpringNET\1.3.0\Spring.Aop.dll</HintPath>
+    </Reference>
+    <Reference Include="Spring.Core, Version=1.3.0.20214, Culture=neutral, PublicKeyToken=65e474d141e25e07, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\HeuristicLab.ExtLibs\HeuristicLab.SpringNET\1.3.0\Spring.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="Spring.Services, Version=1.3.0.30214, Culture=neutral, PublicKeyToken=65e474d141e25e07, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\HeuristicLab.ExtLibs\HeuristicLab.SpringNET\1.3.0\Spring.Services.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Transactions" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="HiveServerPlugin.cs" />
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HiveServerApplication.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <Compile Include="ServiceCallInterception.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.3\HeuristicLab.Hive.Contracts-3.3.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Server.Core\3.3\HeuristicLab.Hive.Server.Core-3.3.csproj">
+      <Project>{898B31CF-81DC-453B-AEB3-BDF83197A7EE}</Project>
+      <Name>HeuristicLab.Hive.Server.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Server.LINQDataAccess\3.2\HeuristicLab.Hive.Server.LINQDataAccess-3.2.csproj">
+      <Project>{A4499DDD-D1B8-414F-98F6-903C2C71BEB0}</Project>
+      <Name>HeuristicLab.Hive.Server.LINQDataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config">
+    </None>
+    <None Include="Resources\HeuristicLab.ico" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HiveServerApplication.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HiveServerApplication.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HiveServerApplication.cs	(revision 4073)
@@ -0,0 +1,183 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using System.Net;
+using HeuristicLab.Hive.Server.Core;
+using HeuristicLab.Hive.Contracts;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Server.Properties;
+using Spring.ServiceModel;
+
+namespace HeuristicLab.Hive.Server {
+  [Application("Hive Server", "Server application for the distributed hive engine.", true)]
+  public class HiveServerApplication : ApplicationBase {
+    public const string STR_ClientCommunicator = "ClientCommunicator";
+    public const string STR_ServerConsoleFacade = "ServerConsoleFacade";
+    public const string STR_ExecutionEngineFacade = "ExecutionEngineFacade";
+
+    private Dictionary<string, ServiceHost> runningServices = new Dictionary<string, ServiceHost>();
+    private NetTcpBinding binding = (NetTcpBinding)WcfSettings.GetBinding();
+    private NetTcpBinding streamedBinding = (NetTcpBinding)WcfSettings.GetStreamedBinding();
+
+    private enum Services {
+      ClientCommunicator,
+      ServerConsoleFacade,
+      ExecutionEngineFacade,
+      All
+    }
+
+    private bool AddMexEndpoint(ServiceHost serviceHost) {
+      if (serviceHost != null) {
+        ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
+        serviceHost.Description.Behaviors.Add(behavior);
+
+        return serviceHost.AddServiceEndpoint(
+          typeof(IMetadataExchange),
+          MetadataExchangeBindings.CreateMexTcpBinding(),
+          "mex") != null;
+      } else
+        return false;
+    }
+
+    private Uri StartService(Services svc, IPAddress ipAddress, int port) {
+      string curServiceHost = "";
+      Uri uriTcp;
+      /*IEnumerable<IClientFacade> clientCommunicatorInstances = ApplicationManager.Manager.GetInstances<IClientFacade>();
+      IEnumerable<IServerConsoleFacade> serverConsoleInstances = ApplicationManager.Manager.GetInstances<IServerConsoleFacade>();
+      IEnumerable<IExecutionEngineFacade> executionEngineInstances = ApplicationManager.Manager.GetInstances<IExecutionEngineFacade>();*/
+      SpringServiceHost serviceHost = null;
+      switch (svc) {
+        case Services.ClientCommunicator:
+        //  if (clientCommunicatorInstances.Count() > 0) {
+            uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/HiveServer/");
+            //serviceHost = new ServiceHost(clientCommunicatorInstances.First().GetType(), uriTcp);
+            //serviceHost = new ServiceHost(typeof(ClientFacade), uriTcp);
+            serviceHost = new SpringServiceHost("clientFacade", uriTcp);
+            serviceHost.AddServiceEndpoint(typeof(IClientFacade), streamedBinding, STR_ClientCommunicator);
+            
+            ServiceDebugBehavior sdb = serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>();
+            if (sdb == null) {
+              sdb = new ServiceDebugBehavior();
+              serviceHost.Description.Behaviors.Add(sdb);
+            }
+            sdb.IncludeExceptionDetailInFaults = true;
+
+            
+
+            curServiceHost = STR_ClientCommunicator;
+        //  }
+          break;
+        case Services.ServerConsoleFacade:
+        //  if (serverConsoleInstances.Count() > 0) {
+            uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/HiveServerConsole/");
+            //serviceHost = new ServiceHost(serverConsoleInstances.First().GetType(), uriTcp);
+            serviceHost = new SpringServiceHost("serverConsoleFacade", uriTcp);
+            serviceHost.AddServiceEndpoint(typeof(IServerConsoleFacade), binding, STR_ServerConsoleFacade);
+            curServiceHost = STR_ServerConsoleFacade;
+        //  }
+          break;
+        case Services.ExecutionEngineFacade:
+        //  if (executionEngineInstances.Count() > 0) {
+            uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/ExecutionEngine/");
+            //serviceHost = new ServiceHost(executionEngineInstances.First().GetType(), uriTcp);
+            serviceHost = new SpringServiceHost("executionEngineFacade", uriTcp);
+            serviceHost.AddServiceEndpoint(typeof(IExecutionEngineFacade), streamedBinding, STR_ExecutionEngineFacade);
+            curServiceHost = STR_ExecutionEngineFacade;
+        //  }
+          break;
+        case Services.All:
+          throw new InvalidOperationException("Not supported!");
+        default:
+          return null;
+      }
+      if (!String.IsNullOrEmpty(curServiceHost)) {
+        AddMexEndpoint(serviceHost);
+        //WcfSettings.SetServiceCertificate(serviceHost);
+        serviceHost.Open();
+        runningServices.Add(curServiceHost, serviceHost);
+        return serviceHost.BaseAddresses[0];
+      } else
+        return null;
+    }
+
+    private void StopService(Services svc) {
+      ServiceHost svcHost = null;
+      switch (svc) {
+        case Services.ClientCommunicator:
+          runningServices.TryGetValue(STR_ClientCommunicator, out svcHost);
+          break;
+        case Services.ServerConsoleFacade:
+          runningServices.TryGetValue(STR_ServerConsoleFacade, out svcHost);
+          break;
+        case Services.ExecutionEngineFacade:
+          runningServices.TryGetValue(STR_ExecutionEngineFacade, out svcHost);
+          break;
+        case Services.All:
+          foreach (KeyValuePair<string, ServiceHost> item in runningServices)
+            item.Value.Close();
+          return;
+        default:
+          throw new InvalidOperationException("Not supported!");
+      }
+      svcHost.Close();
+    }
+
+    public override void Run() {
+      IPAddress[] addresses = Dns.GetHostAddresses(Dns.GetHostName());
+      int index = 0;
+      if (System.Environment.OSVersion.Version.Major >= 6) {
+        for (index = addresses.Length - 1; index >= 0; index--)
+          if (addresses[index].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
+            break;
+      }
+
+      //Start services and record their base address
+      Dictionary<string, Uri> baseAddrDict = new Dictionary<string, Uri>();
+      baseAddrDict.Add(STR_ClientCommunicator,
+        StartService(Services.ClientCommunicator, addresses[index], WcfSettings.DEFAULTPORT));
+      baseAddrDict.Add(STR_ServerConsoleFacade,
+        StartService(Services.ServerConsoleFacade, addresses[index], WcfSettings.DEFAULTPORT));
+      baseAddrDict.Add(STR_ExecutionEngineFacade,
+        StartService(Services.ExecutionEngineFacade, addresses[index], WcfSettings.DEFAULTPORT));
+
+      IEnumerable<ILifecycleManager> lifecycleManagers = ApplicationManager.Manager.GetInstances<ILifecycleManager>();
+      if (lifecycleManagers.Count() > 0) {
+        ILifecycleManager lifecycleManager =
+          lifecycleManagers.First();
+
+        lifecycleManager.Init();
+        Form mainForm = new MainForm(baseAddrDict);
+        Application.Run(mainForm);
+
+        lifecycleManager.Shutdown();
+      }
+      StopService(Services.All);
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HiveServerPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HiveServerPlugin.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HiveServerPlugin.cs	(revision 4073)
@@ -0,0 +1,40 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Hive.Server {
+  [Plugin("HeuristicLab.Hive.Server-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Server.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Server.LINQDataAccess-3.2")]
+  [PluginDependency("HeuristicLab.SpringNET", "1.3.0.0")]
+  [PluginDependency("HeuristicLab.Tracing", "3.2.0")]
+  public class HiveServerPlugin : PluginBase {
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.Designer.cs	(revision 4073)
@@ -0,0 +1,122 @@
+﻿namespace HeuristicLab.Hive.Server
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+          this.components = new System.ComponentModel.Container();
+          this.label1 = new System.Windows.Forms.Label();
+          this.rtfServices = new System.Windows.Forms.RichTextBox();
+          this.ni = new System.Windows.Forms.NotifyIcon(this.components);
+          this.ctxNotifyMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+          this.tsShowInfo = new System.Windows.Forms.ToolStripMenuItem();
+          this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+          this.tsExit = new System.Windows.Forms.ToolStripMenuItem();
+          this.ctxNotifyMenu.SuspendLayout();
+          this.SuspendLayout();
+          // 
+          // label1
+          // 
+          this.label1.AutoSize = true;
+          this.label1.Location = new System.Drawing.Point(12, 9);
+          this.label1.Name = "label1";
+          this.label1.Size = new System.Drawing.Size(97, 13);
+          this.label1.TabIndex = 0;
+          this.label1.Text = "Available Services:";
+          // 
+          // rtfServices
+          // 
+          this.rtfServices.Location = new System.Drawing.Point(12, 25);
+          this.rtfServices.Name = "rtfServices";
+          this.rtfServices.ReadOnly = true;
+          this.rtfServices.Size = new System.Drawing.Size(280, 121);
+          this.rtfServices.TabIndex = 1;
+          this.rtfServices.Text = "";
+          // 
+          // ni
+          // 
+          this.ni.ContextMenuStrip = this.ctxNotifyMenu;
+          this.ni.Text = "notifyIcon1";
+          this.ni.Visible = true;
+          // 
+          // ctxNotifyMenu
+          // 
+          this.ctxNotifyMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.tsShowInfo,
+            this.toolStripSeparator1,
+            this.tsExit});
+          this.ctxNotifyMenu.Name = "ctxNotifyMenu";
+          this.ctxNotifyMenu.Size = new System.Drawing.Size(96, 54);
+          // 
+          // tsShowInfo
+          // 
+          this.tsShowInfo.Name = "tsShowInfo";
+          this.tsShowInfo.Size = new System.Drawing.Size(95, 22);
+          this.tsShowInfo.Text = "&Info";
+          this.tsShowInfo.Click += new System.EventHandler(this.ShowInfo);
+          // 
+          // toolStripSeparator1
+          // 
+          this.toolStripSeparator1.Name = "toolStripSeparator1";
+          this.toolStripSeparator1.Size = new System.Drawing.Size(92, 6);
+          // 
+          // tsExit
+          // 
+          this.tsExit.Name = "tsExit";
+          this.tsExit.Size = new System.Drawing.Size(95, 22);
+          this.tsExit.Text = "E&xit";
+          this.tsExit.Click += new System.EventHandler(this.CloseApp);
+          // 
+          // MainForm
+          // 
+          this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+          this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+          this.ClientSize = new System.Drawing.Size(304, 166);
+          this.Controls.Add(this.rtfServices);
+          this.Controls.Add(this.label1);
+          this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+          this.Name = "MainForm";
+          this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+          this.Text = "Hive Server";
+          this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
+          this.ctxNotifyMenu.ResumeLayout(false);
+          this.ResumeLayout(false);
+          this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.RichTextBox rtfServices;
+        private System.Windows.Forms.NotifyIcon ni;
+        private System.Windows.Forms.ContextMenuStrip ctxNotifyMenu;
+        private System.Windows.Forms.ToolStripMenuItem tsShowInfo;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripMenuItem tsExit;
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.cs	(revision 4073)
@@ -0,0 +1,56 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Hive.Server.Properties;
+
+namespace HeuristicLab.Hive.Server
+{
+    public partial class MainForm : Form {
+        public MainForm(Dictionary<string, Uri> addresses) {
+          InitializeComponent();
+          this.Visible = false;
+
+          Uri uri;
+          StringBuilder servicesTxt = new StringBuilder();
+          addresses.TryGetValue(HiveServerApplication.STR_ClientCommunicator, out uri);
+          if (uri != null)
+            servicesTxt.AppendLine(String.Format("Server Client: {0}", uri));
+          addresses.TryGetValue(HiveServerApplication.STR_ServerConsoleFacade, out uri);
+          if (uri != null)
+            servicesTxt.AppendLine(String.Format("Server Console: {0}", uri));
+          addresses.TryGetValue(HiveServerApplication.STR_ExecutionEngineFacade, out uri);
+          if (uri != null)
+            servicesTxt.AppendLine(String.Format("Execution Engine: {0}", uri));
+
+          rtfServices.AppendText(servicesTxt.ToString());
+
+          ni.Icon = Resources.HeuristicLab;
+          ni.BalloonTipTitle = "HL Hive Server Services";
+          ni.BalloonTipText = servicesTxt.ToString();
+          ni.BalloonTipIcon = ToolTipIcon.Info;
+          ni.Text = "HL Hive Server Services";
+          ni.ShowBalloonTip(10000);
+        }
+
+        private void CloseApp(object sender, EventArgs e) {
+          Dispose();
+        }
+
+        private void ShowInfo(object sender, EventArgs e) {
+          this.Visible = true;
+        }
+
+        private void btnClose_Click(object sender, EventArgs e) {
+          this.Visible = false;
+        }
+
+        private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {          
+        }
+
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/MainForm.resx	(revision 4073)
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="ni.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="ctxNotifyMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>77, 17</value>
+  </metadata>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/AssemblyInfo.frame	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/AssemblyInfo.frame	(revision 4073)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Hive.Server")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("4B463015-5F7D-4e74-A878-56B6AD06A1AA")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Resources.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Resources.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Resources.Designer.cs	(revision 4073)
@@ -0,0 +1,70 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Server.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Hive.Server.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        internal static System.Drawing.Icon HeuristicLab {
+            get {
+                object obj = ResourceManager.GetObject("HeuristicLab", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Resources.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Resources.resx	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Resources.resx	(revision 4073)
@@ -0,0 +1,124 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="HeuristicLab" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\HeuristicLab.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Settings.Designer.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Settings.Designer.cs	(revision 4073)
@@ -0,0 +1,26 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Hive.Server.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Settings.settings
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Settings.settings	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/Properties/Settings.settings	(revision 4073)
@@ -0,0 +1,7 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/ServiceCallInterception.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/ServiceCallInterception.cs	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/ServiceCallInterception.cs	(revision 4073)
@@ -0,0 +1,98 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using AopAlliance.Intercept;
+using System.Threading;
+using HeuristicLab.Hive.Server.LINQDataAccess;
+using System.Transactions;
+using HeuristicLab.Hive.Contracts;
+using HeuristicLab.Tracing;
+using System.Reflection;
+using HeuristicLab.Hive.Server.Core;
+
+namespace HeuristicLab.Hive.Server {
+  internal class ServiceCallInterception : IMethodInterceptor {
+    private const bool UseTransactions = true;
+
+    public object Invoke(IMethodInvocation invocation) {
+      bool userTransaction = false;
+
+      DateTime start = DateTime.Now;
+      Logger.Info("Entering Method: " + invocation.Method.Name);
+
+      if (!ContextFactory.IsContextNull()) {
+        Logger.Info("Not null context found - why wasn't this disposed?");
+        try {
+          Logger.Info("Trying to dispose");
+          ContextFactory.Context.Dispose();
+        }
+        catch (Exception e) {
+          Logger.Error(e);
+        }
+        ContextFactory.Context = null;
+      }
+      Logger.Info("Context info: Timeout: " + ContextFactory.Context.Connection.ConnectionTimeout + " | " +
+                  ContextFactory.Context.Connection.State + " | Conn: " + ContextFactory.Context + " | HashCode is: " +
+                  ContextFactory.Context.Connection.GetHashCode());
+      Object obj = null;
+
+      Object[] attributes = invocation.Method.GetCustomAttributes(typeof (SpringTransaction), true);
+      foreach (Object o in attributes) {
+        SpringTransaction st = (SpringTransaction) o;
+        userTransaction = st.UserTransaction;
+      }
+      if (UseTransactions && !userTransaction) {
+        using (
+          TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
+                                                        new TransactionOptions
+                                                        {IsolationLevel = ApplicationConstants.ISOLATION_LEVEL_SCOPE})) {
+          try {
+            Logger.Debug("Current Transaction Isolation level is: " + Transaction.Current.IsolationLevel);
+            obj = invocation.Proceed();
+            scope.Complete();
+          }
+          catch (Exception e) {
+            Logger.Error("Exception occured during method invocation", e);
+            Logger.Error("Inner Exception: ", e.InnerException);
+          }
+          finally {
+            ContextFactory.Context.Dispose();
+            Logger.Debug("Disposed Context");
+            ContextFactory.Context = null;
+            Logger.Debug("Set Context Null");
+          }
+        }
+      }
+      else {
+        try {
+          obj = invocation.Proceed();
+        }
+        catch (Exception e) {
+          Logger.Error("Exception occured during method invocation", e);
+        }
+        finally {
+          ContextFactory.Context.Dispose();
+          Logger.Debug("Disposed Context");
+          ContextFactory.Context = null;
+          Logger.Debug("Set Context Null");
+        }
+      }
+      //}       
+      TimeSpan ts = DateTime.Now - start;
+      if (ts.Seconds > 2) {
+        Logger.Warn("Invocation took: " + ts);
+      }
+      else if (ts.Seconds > 10) {
+        Logger.Error("Invocation took: " + ts);
+      }
+      else {
+        Logger.Info("Invocation took: " + ts);
+        ;
+      }
+      Logger.Info("Leaving Method: " + invocation.Method.Name);
+
+      return obj;
+    }
+  }
+}
Index: anches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.2.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.2.csproj	(revision 4072)
+++ 	(revision )
@@ -1,167 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Security.ADODataAccess</RootNamespace>
-    <AssemblyName>HeuristicLab.Security.ADODataAccess-3.2</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <StartupObject>
-    </StartupObject>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ItemGroup>
-    <None Include="app.config" />
-    <None Include="datamodel_security_sqlserver.erwin" />
-    <None Include="dsSecurity.xsc">
-      <DependentUpon>dsSecurity.xsd</DependentUpon>
-    </None>
-    <None Include="dsSecurity.xsd">
-      <SubType>Designer</SubType>
-      <Generator>MSDataSetGenerator</Generator>
-      <LastGenOutput>dsSecurity.Designer.cs</LastGenOutput>
-    </None>
-    <None Include="dsSecurity.xss">
-      <DependentUpon>dsSecurity.xsd</DependentUpon>
-    </None>
-    <None Include="HeuristicLab.snk" />
-    <None Include="Properties\AssemblyInfo.frame" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-  </ItemGroup>
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="ADODataAccessPlugin.cs" />
-    <Compile Include="dsSecurity.cs">
-      <DependentUpon>dsSecurity.xsd</DependentUpon>
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="TableAdapterWrapper\GrantedPermissionsAdapterWrapper.cs" />
-    <Compile Include="TableAdapterWrapper\PermissionOwner_UserGroupAdapterWrapper.cs" />
-    <Compile Include="UserGroupAdapter.cs" />
-    <Compile Include="HLUserAdapter.cs" />
-    <Compile Include="PermissionOwnerAdapter.cs" />
-    <Compile Include="dsSecurity.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>dsSecurity.xsd</DependentUpon>
-    </Compile>
-    <Compile Include="PermissionAdapter.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-      <DependentUpon>Settings.settings</DependentUpon>
-    </Compile>
-    <Compile Include="TableAdapterWrapper\UserGroupAdapterWrapper.cs" />
-    <Compile Include="TableAdapterWrapper\HLUserAdapterWrapper.cs" />
-    <Compile Include="TableAdapterWrapper\PermissionOwnerAdapterWrapper.cs" />
-    <Compile Include="TableAdapterWrapper\PermissionAdapterWrapper.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.DataAccess.ADOHelper\3.2\HeuristicLab.DataAccess.ADOHelper-3.2.csproj">
-      <Project>{5CDACE54-5FB2-4344-A21C-963F63CB7C2B}</Project>
-      <Name>HeuristicLab.DataAccess.ADOHelper-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.2\HeuristicLab.DataAccess-3.2.csproj">
-      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
-      <Name>HeuristicLab.DataAccess-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Security.Contracts\3.2\HeuristicLab.Security.Contracts-3.2.csproj">
-      <Project>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</Project>
-      <Name>HeuristicLab.Security.Contracts-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Security.DataAccess\3.2\HeuristicLab.Security.DataAccess-3.2.csproj">
-      <Project>{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}</Project>
-      <Name>HeuristicLab.Security.DataAccess-3.2</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.3.csproj	(revision 4073)
@@ -0,0 +1,188 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Security.ADODataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.Security.ADODataAccess-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="datamodel_security_sqlserver.erwin" />
+    <None Include="dsSecurity.xsc">
+      <DependentUpon>dsSecurity.xsd</DependentUpon>
+    </None>
+    <None Include="dsSecurity.xsd">
+      <SubType>Designer</SubType>
+      <Generator>MSDataSetGenerator</Generator>
+      <LastGenOutput>dsSecurity.Designer.cs</LastGenOutput>
+    </None>
+    <None Include="dsSecurity.xss">
+      <DependentUpon>dsSecurity.xsd</DependentUpon>
+    </None>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="ADODataAccessPlugin.cs" />
+    <Compile Include="dsSecurity.cs">
+      <DependentUpon>dsSecurity.xsd</DependentUpon>
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="TableAdapterWrapper\GrantedPermissionsAdapterWrapper.cs" />
+    <Compile Include="TableAdapterWrapper\PermissionOwner_UserGroupAdapterWrapper.cs" />
+    <Compile Include="UserGroupAdapter.cs" />
+    <Compile Include="HLUserAdapter.cs" />
+    <Compile Include="PermissionOwnerAdapter.cs" />
+    <Compile Include="dsSecurity.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>dsSecurity.xsd</DependentUpon>
+    </Compile>
+    <Compile Include="PermissionAdapter.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+    <Compile Include="TableAdapterWrapper\UserGroupAdapterWrapper.cs" />
+    <Compile Include="TableAdapterWrapper\HLUserAdapterWrapper.cs" />
+    <Compile Include="TableAdapterWrapper\PermissionOwnerAdapterWrapper.cs" />
+    <Compile Include="TableAdapterWrapper\PermissionAdapterWrapper.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/Properties/Settings.Designer.cs	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/Properties/Settings.Designer.cs	(revision 4073)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3082
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -13,5 +13,5 @@
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
         
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/dsSecurity.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/dsSecurity.Designer.cs	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/dsSecurity.Designer.cs	(revision 4073)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3082
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -17,5 +17,4 @@
     ///Represents a strongly typed in-memory cache of data.
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.Serializable()]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
@@ -53,4 +52,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public dsSecurity() {
             this.BeginInit();
@@ -63,4 +63,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected dsSecurity(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
                 base(info, context, false) {
@@ -113,4 +114,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
@@ -122,4 +124,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
@@ -131,4 +134,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
@@ -140,4 +144,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
@@ -149,4 +154,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
@@ -158,4 +164,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
@@ -167,4 +174,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.BrowsableAttribute(true)]
         [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)]
@@ -179,4 +187,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)]
         public new global::System.Data.DataTableCollection Tables {
@@ -187,4 +196,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)]
         public new global::System.Data.DataRelationCollection Relations {
@@ -195,4 +205,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected override void InitializeDerivedDataSet() {
             this.BeginInit();
@@ -202,4 +213,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public override global::System.Data.DataSet Clone() {
             dsSecurity cln = ((dsSecurity)(base.Clone()));
@@ -210,4 +222,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected override bool ShouldSerializeTables() {
             return false;
@@ -215,4 +228,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected override bool ShouldSerializeRelations() {
             return false;
@@ -220,4 +234,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) {
             if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) {
@@ -259,4 +274,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() {
             global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream();
@@ -267,4 +283,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal void InitVars() {
             this.InitVars(true);
@@ -272,4 +289,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal void InitVars(bool initTable) {
             this.tableGrantedPermissions = ((GrantedPermissionsDataTable)(base.Tables["GrantedPermissions"]));
@@ -318,4 +336,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitClass() {
             this.DataSetName = "dsSecurity";
@@ -363,4 +382,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private bool ShouldSerializeGrantedPermissions() {
             return false;
@@ -368,4 +388,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private bool ShouldSerializeUserGroup() {
             return false;
@@ -373,4 +394,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private bool ShouldSerializeHLUser() {
             return false;
@@ -378,4 +400,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private bool ShouldSerializePermission() {
             return false;
@@ -383,4 +406,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private bool ShouldSerializePermissionOwner() {
             return false;
@@ -388,4 +412,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private bool ShouldSerializePermissionOwner_UserGroup() {
             return false;
@@ -393,4 +418,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) {
             if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) {
@@ -400,4 +426,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
             dsSecurity ds = new dsSecurity();
@@ -445,14 +472,20 @@
         }
         
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public delegate void GrantedPermissionsRowChangeEventHandler(object sender, GrantedPermissionsRowChangeEvent e);
         
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public delegate void UserGroupRowChangeEventHandler(object sender, UserGroupRowChangeEvent e);
         
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public delegate void HLUserRowChangeEventHandler(object sender, HLUserRowChangeEvent e);
         
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public delegate void PermissionRowChangeEventHandler(object sender, PermissionRowChangeEvent e);
         
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public delegate void PermissionOwnerRowChangeEventHandler(object sender, PermissionOwnerRowChangeEvent e);
         
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public delegate void PermissionOwner_UserGroupRowChangeEventHandler(object sender, PermissionOwner_UserGroupRowChangeEvent e);
         
@@ -460,5 +493,4 @@
         ///Represents the strongly named DataTable class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         [global::System.Serializable()]
         [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
@@ -472,4 +504,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsDataTable() {
                 this.TableName = "GrantedPermissions";
@@ -480,4 +513,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal GrantedPermissionsDataTable(global::System.Data.DataTable table) {
                 this.TableName = table.TableName;
@@ -496,4 +530,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected GrantedPermissionsDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
                     base(info, context) {
@@ -502,4 +537,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PermissionIdColumn {
                 get {
@@ -509,4 +545,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PermissionOwnerIdColumn {
                 get {
@@ -516,4 +553,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn EntityIdColumn {
                 get {
@@ -523,4 +561,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             [global::System.ComponentModel.Browsable(false)]
             public int Count {
@@ -531,4 +570,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRow this[int index] {
                 get {
@@ -537,13 +577,18 @@
             }
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event GrantedPermissionsRowChangeEventHandler GrantedPermissionsRowChanging;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event GrantedPermissionsRowChangeEventHandler GrantedPermissionsRowChanged;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event GrantedPermissionsRowChangeEventHandler GrantedPermissionsRowDeleting;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event GrantedPermissionsRowChangeEventHandler GrantedPermissionsRowDeleted;
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void AddGrantedPermissionsRow(GrantedPermissionsRow row) {
                 this.Rows.Add(row);
@@ -551,4 +596,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRow AddGrantedPermissionsRow(PermissionRow parentPermissionRowByR_49, PermissionOwnerRow parentPermissionOwnerRowByR_50, System.Guid EntityId) {
                 GrantedPermissionsRow rowGrantedPermissionsRow = ((GrantedPermissionsRow)(this.NewRow()));
@@ -569,4 +615,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRow FindByPermissionIdPermissionOwnerIdEntityId(System.Guid PermissionId, System.Guid PermissionOwnerId, System.Guid EntityId) {
                 return ((GrantedPermissionsRow)(this.Rows.Find(new object[] {
@@ -577,4 +624,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public override global::System.Data.DataTable Clone() {
                 GrantedPermissionsDataTable cln = ((GrantedPermissionsDataTable)(base.Clone()));
@@ -584,4 +632,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataTable CreateInstance() {
                 return new GrantedPermissionsDataTable();
@@ -589,4 +638,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal void InitVars() {
                 this.columnPermissionId = base.Columns["PermissionId"];
@@ -596,4 +646,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             private void InitClass() {
                 this.columnPermissionId = new global::System.Data.DataColumn("PermissionId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
@@ -613,4 +664,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRow NewGrantedPermissionsRow() {
                 return ((GrantedPermissionsRow)(this.NewRow()));
@@ -618,4 +670,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
                 return new GrantedPermissionsRow(builder);
@@ -623,4 +676,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Type GetRowType() {
                 return typeof(GrantedPermissionsRow);
@@ -628,4 +682,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanged(e);
@@ -636,4 +691,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanging(e);
@@ -644,4 +700,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleted(e);
@@ -652,4 +709,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleting(e);
@@ -660,4 +718,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void RemoveGrantedPermissionsRow(GrantedPermissionsRow row) {
                 this.Rows.Remove(row);
@@ -665,4 +724,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
                 global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
@@ -730,5 +790,4 @@
         ///Represents the strongly named DataTable class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         [global::System.Serializable()]
         [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
@@ -738,4 +797,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupDataTable() {
                 this.TableName = "UserGroup";
@@ -746,4 +806,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal UserGroupDataTable(global::System.Data.DataTable table) {
                 this.TableName = table.TableName;
@@ -762,4 +823,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected UserGroupDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
                     base(info, context) {
@@ -768,4 +830,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PermissionOwnerIdColumn {
                 get {
@@ -775,4 +838,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             [global::System.ComponentModel.Browsable(false)]
             public int Count {
@@ -783,4 +847,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRow this[int index] {
                 get {
@@ -789,13 +854,18 @@
             }
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event UserGroupRowChangeEventHandler UserGroupRowChanging;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event UserGroupRowChangeEventHandler UserGroupRowChanged;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event UserGroupRowChangeEventHandler UserGroupRowDeleting;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event UserGroupRowChangeEventHandler UserGroupRowDeleted;
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void AddUserGroupRow(UserGroupRow row) {
                 this.Rows.Add(row);
@@ -803,4 +873,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRow AddUserGroupRow(PermissionOwnerRow parentPermissionOwnerRowByUserGroup_is_a_PermissionOwner) {
                 UserGroupRow rowUserGroupRow = ((UserGroupRow)(this.NewRow()));
@@ -816,4 +887,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRow FindByPermissionOwnerId(System.Guid PermissionOwnerId) {
                 return ((UserGroupRow)(this.Rows.Find(new object[] {
@@ -822,4 +894,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public override global::System.Data.DataTable Clone() {
                 UserGroupDataTable cln = ((UserGroupDataTable)(base.Clone()));
@@ -829,4 +902,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataTable CreateInstance() {
                 return new UserGroupDataTable();
@@ -834,4 +908,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal void InitVars() {
                 this.columnPermissionOwnerId = base.Columns["PermissionOwnerId"];
@@ -839,4 +914,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             private void InitClass() {
                 this.columnPermissionOwnerId = new global::System.Data.DataColumn("PermissionOwnerId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
@@ -849,4 +925,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRow NewUserGroupRow() {
                 return ((UserGroupRow)(this.NewRow()));
@@ -854,4 +931,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
                 return new UserGroupRow(builder);
@@ -859,4 +937,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Type GetRowType() {
                 return typeof(UserGroupRow);
@@ -864,4 +943,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanged(e);
@@ -872,4 +952,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanging(e);
@@ -880,4 +961,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleted(e);
@@ -888,4 +970,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleting(e);
@@ -896,4 +979,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void RemoveUserGroupRow(UserGroupRow row) {
                 this.Rows.Remove(row);
@@ -901,4 +985,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
                 global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
@@ -966,5 +1051,4 @@
         ///Represents the strongly named DataTable class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         [global::System.Serializable()]
         [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
@@ -980,4 +1064,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserDataTable() {
                 this.TableName = "HLUser";
@@ -988,4 +1073,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal HLUserDataTable(global::System.Data.DataTable table) {
                 this.TableName = table.TableName;
@@ -1004,4 +1090,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected HLUserDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
                     base(info, context) {
@@ -1010,4 +1097,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PermissionOwnerIdColumn {
                 get {
@@ -1017,4 +1105,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PasswordColumn {
                 get {
@@ -1024,4 +1113,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn LoginColumn {
                 get {
@@ -1031,4 +1121,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn MailAddressColumn {
                 get {
@@ -1038,4 +1129,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             [global::System.ComponentModel.Browsable(false)]
             public int Count {
@@ -1046,4 +1138,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserRow this[int index] {
                 get {
@@ -1052,13 +1145,18 @@
             }
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event HLUserRowChangeEventHandler HLUserRowChanging;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event HLUserRowChangeEventHandler HLUserRowChanged;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event HLUserRowChangeEventHandler HLUserRowDeleting;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event HLUserRowChangeEventHandler HLUserRowDeleted;
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void AddHLUserRow(HLUserRow row) {
                 this.Rows.Add(row);
@@ -1066,4 +1164,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserRow AddHLUserRow(PermissionOwnerRow parentPermissionOwnerRowByUser_is_a_PermissionOwner, string Password, string Login, string MailAddress) {
                 HLUserRow rowHLUserRow = ((HLUserRow)(this.NewRow()));
@@ -1082,4 +1181,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserRow FindByPermissionOwnerId(System.Guid PermissionOwnerId) {
                 return ((HLUserRow)(this.Rows.Find(new object[] {
@@ -1088,4 +1188,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public override global::System.Data.DataTable Clone() {
                 HLUserDataTable cln = ((HLUserDataTable)(base.Clone()));
@@ -1095,4 +1196,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataTable CreateInstance() {
                 return new HLUserDataTable();
@@ -1100,4 +1202,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal void InitVars() {
                 this.columnPermissionOwnerId = base.Columns["PermissionOwnerId"];
@@ -1108,4 +1211,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             private void InitClass() {
                 this.columnPermissionOwnerId = new global::System.Data.DataColumn("PermissionOwnerId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
@@ -1127,4 +1231,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserRow NewHLUserRow() {
                 return ((HLUserRow)(this.NewRow()));
@@ -1132,4 +1237,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
                 return new HLUserRow(builder);
@@ -1137,4 +1243,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Type GetRowType() {
                 return typeof(HLUserRow);
@@ -1142,4 +1249,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanged(e);
@@ -1150,4 +1258,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanging(e);
@@ -1158,4 +1267,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleted(e);
@@ -1166,4 +1276,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleting(e);
@@ -1174,4 +1285,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void RemoveHLUserRow(HLUserRow row) {
                 this.Rows.Remove(row);
@@ -1179,4 +1291,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
                 global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
@@ -1244,5 +1357,4 @@
         ///Represents the strongly named DataTable class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         [global::System.Serializable()]
         [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
@@ -1258,4 +1370,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionDataTable() {
                 this.TableName = "Permission";
@@ -1266,4 +1379,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal PermissionDataTable(global::System.Data.DataTable table) {
                 this.TableName = table.TableName;
@@ -1282,4 +1396,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected PermissionDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
                     base(info, context) {
@@ -1288,4 +1403,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PermissionIdColumn {
                 get {
@@ -1295,4 +1411,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn NameColumn {
                 get {
@@ -1302,4 +1419,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn DescriptionColumn {
                 get {
@@ -1309,4 +1427,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PluginColumn {
                 get {
@@ -1316,4 +1435,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             [global::System.ComponentModel.Browsable(false)]
             public int Count {
@@ -1324,4 +1444,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionRow this[int index] {
                 get {
@@ -1330,13 +1451,18 @@
             }
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionRowChangeEventHandler PermissionRowChanging;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionRowChangeEventHandler PermissionRowChanged;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionRowChangeEventHandler PermissionRowDeleting;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionRowChangeEventHandler PermissionRowDeleted;
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void AddPermissionRow(PermissionRow row) {
                 this.Rows.Add(row);
@@ -1344,4 +1470,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionRow AddPermissionRow(System.Guid PermissionId, string Name, string Description, string Plugin) {
                 PermissionRow rowPermissionRow = ((PermissionRow)(this.NewRow()));
@@ -1357,4 +1484,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionRow FindByPermissionId(System.Guid PermissionId) {
                 return ((PermissionRow)(this.Rows.Find(new object[] {
@@ -1363,4 +1491,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public override global::System.Data.DataTable Clone() {
                 PermissionDataTable cln = ((PermissionDataTable)(base.Clone()));
@@ -1370,4 +1499,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataTable CreateInstance() {
                 return new PermissionDataTable();
@@ -1375,4 +1505,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal void InitVars() {
                 this.columnPermissionId = base.Columns["PermissionId"];
@@ -1383,4 +1514,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             private void InitClass() {
                 this.columnPermissionId = new global::System.Data.DataColumn("PermissionId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
@@ -1402,4 +1534,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionRow NewPermissionRow() {
                 return ((PermissionRow)(this.NewRow()));
@@ -1407,4 +1540,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
                 return new PermissionRow(builder);
@@ -1412,4 +1546,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Type GetRowType() {
                 return typeof(PermissionRow);
@@ -1417,4 +1552,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanged(e);
@@ -1425,4 +1561,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanging(e);
@@ -1433,4 +1570,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleted(e);
@@ -1441,4 +1579,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleting(e);
@@ -1449,4 +1588,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void RemovePermissionRow(PermissionRow row) {
                 this.Rows.Remove(row);
@@ -1454,4 +1594,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
                 global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
@@ -1519,5 +1660,4 @@
         ///Represents the strongly named DataTable class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         [global::System.Serializable()]
         [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
@@ -1529,4 +1669,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerDataTable() {
                 this.TableName = "PermissionOwner";
@@ -1537,4 +1678,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal PermissionOwnerDataTable(global::System.Data.DataTable table) {
                 this.TableName = table.TableName;
@@ -1553,4 +1695,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected PermissionOwnerDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
                     base(info, context) {
@@ -1559,4 +1702,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PermissionOwnerIdColumn {
                 get {
@@ -1566,4 +1710,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn NameColumn {
                 get {
@@ -1573,4 +1718,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             [global::System.ComponentModel.Browsable(false)]
             public int Count {
@@ -1581,4 +1727,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow this[int index] {
                 get {
@@ -1587,13 +1734,18 @@
             }
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwnerRowChangeEventHandler PermissionOwnerRowChanging;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwnerRowChangeEventHandler PermissionOwnerRowChanged;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwnerRowChangeEventHandler PermissionOwnerRowDeleting;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwnerRowChangeEventHandler PermissionOwnerRowDeleted;
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void AddPermissionOwnerRow(PermissionOwnerRow row) {
                 this.Rows.Add(row);
@@ -1601,4 +1753,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow AddPermissionOwnerRow(System.Guid PermissionOwnerId, string Name) {
                 PermissionOwnerRow rowPermissionOwnerRow = ((PermissionOwnerRow)(this.NewRow()));
@@ -1612,4 +1765,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow FindByPermissionOwnerId(System.Guid PermissionOwnerId) {
                 return ((PermissionOwnerRow)(this.Rows.Find(new object[] {
@@ -1618,4 +1772,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public override global::System.Data.DataTable Clone() {
                 PermissionOwnerDataTable cln = ((PermissionOwnerDataTable)(base.Clone()));
@@ -1625,4 +1780,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataTable CreateInstance() {
                 return new PermissionOwnerDataTable();
@@ -1630,4 +1786,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal void InitVars() {
                 this.columnPermissionOwnerId = base.Columns["PermissionOwnerId"];
@@ -1636,4 +1793,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             private void InitClass() {
                 this.columnPermissionOwnerId = new global::System.Data.DataColumn("PermissionOwnerId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
@@ -1649,4 +1807,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow NewPermissionOwnerRow() {
                 return ((PermissionOwnerRow)(this.NewRow()));
@@ -1654,4 +1813,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
                 return new PermissionOwnerRow(builder);
@@ -1659,4 +1819,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Type GetRowType() {
                 return typeof(PermissionOwnerRow);
@@ -1664,4 +1825,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanged(e);
@@ -1672,4 +1834,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanging(e);
@@ -1680,4 +1843,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleted(e);
@@ -1688,4 +1852,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleting(e);
@@ -1696,4 +1861,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void RemovePermissionOwnerRow(PermissionOwnerRow row) {
                 this.Rows.Remove(row);
@@ -1701,4 +1867,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
                 global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
@@ -1766,5 +1933,4 @@
         ///Represents the strongly named DataTable class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         [global::System.Serializable()]
         [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")]
@@ -1776,4 +1942,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupDataTable() {
                 this.TableName = "PermissionOwner_UserGroup";
@@ -1784,4 +1951,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal PermissionOwner_UserGroupDataTable(global::System.Data.DataTable table) {
                 this.TableName = table.TableName;
@@ -1800,4 +1968,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected PermissionOwner_UserGroupDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : 
                     base(info, context) {
@@ -1806,4 +1975,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn PermissionOwnerIdColumn {
                 get {
@@ -1813,4 +1983,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataColumn UserGroupIdColumn {
                 get {
@@ -1820,4 +1991,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             [global::System.ComponentModel.Browsable(false)]
             public int Count {
@@ -1828,4 +2000,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRow this[int index] {
                 get {
@@ -1834,13 +2007,18 @@
             }
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwner_UserGroupRowChangeEventHandler PermissionOwner_UserGroupRowChanging;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwner_UserGroupRowChangeEventHandler PermissionOwner_UserGroupRowChanged;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwner_UserGroupRowChangeEventHandler PermissionOwner_UserGroupRowDeleting;
             
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public event PermissionOwner_UserGroupRowChangeEventHandler PermissionOwner_UserGroupRowDeleted;
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void AddPermissionOwner_UserGroupRow(PermissionOwner_UserGroupRow row) {
                 this.Rows.Add(row);
@@ -1848,4 +2026,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRow AddPermissionOwner_UserGroupRow(PermissionOwnerRow parentPermissionOwnerRowByR_44, UserGroupRow parentUserGroupRowByR_57) {
                 PermissionOwner_UserGroupRow rowPermissionOwner_UserGroupRow = ((PermissionOwner_UserGroupRow)(this.NewRow()));
@@ -1865,4 +2044,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRow FindByPermissionOwnerIdUserGroupId(System.Guid PermissionOwnerId, System.Guid UserGroupId) {
                 return ((PermissionOwner_UserGroupRow)(this.Rows.Find(new object[] {
@@ -1872,4 +2052,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public override global::System.Data.DataTable Clone() {
                 PermissionOwner_UserGroupDataTable cln = ((PermissionOwner_UserGroupDataTable)(base.Clone()));
@@ -1879,4 +2060,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataTable CreateInstance() {
                 return new PermissionOwner_UserGroupDataTable();
@@ -1884,4 +2066,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal void InitVars() {
                 this.columnPermissionOwnerId = base.Columns["PermissionOwnerId"];
@@ -1890,4 +2073,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             private void InitClass() {
                 this.columnPermissionOwnerId = new global::System.Data.DataColumn("PermissionOwnerId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
@@ -1903,4 +2087,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRow NewPermissionOwner_UserGroupRow() {
                 return ((PermissionOwner_UserGroupRow)(this.NewRow()));
@@ -1908,4 +2093,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) {
                 return new PermissionOwner_UserGroupRow(builder);
@@ -1913,4 +2099,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override global::System.Type GetRowType() {
                 return typeof(PermissionOwner_UserGroupRow);
@@ -1918,4 +2105,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanged(e);
@@ -1926,4 +2114,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowChanging(e);
@@ -1934,4 +2123,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleted(e);
@@ -1942,4 +2132,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) {
                 base.OnRowDeleting(e);
@@ -1950,4 +2141,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void RemovePermissionOwner_UserGroupRow(PermissionOwner_UserGroupRow row) {
                 this.Rows.Remove(row);
@@ -1955,4 +2147,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) {
                 global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType();
@@ -2020,5 +2213,4 @@
         ///Represents strongly named DataRow class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         public partial class GrantedPermissionsRow : global::System.Data.DataRow {
             
@@ -2026,4 +2218,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal GrantedPermissionsRow(global::System.Data.DataRowBuilder rb) : 
                     base(rb) {
@@ -2032,4 +2225,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid PermissionId {
                 get {
@@ -2042,4 +2236,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid PermissionOwnerId {
                 get {
@@ -2052,4 +2247,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid EntityId {
                 get {
@@ -2062,4 +2258,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionRow PermissionRow {
                 get {
@@ -2072,4 +2269,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow PermissionOwnerRow {
                 get {
@@ -2085,5 +2283,4 @@
         ///Represents strongly named DataRow class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         public partial class UserGroupRow : global::System.Data.DataRow {
             
@@ -2091,4 +2288,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal UserGroupRow(global::System.Data.DataRowBuilder rb) : 
                     base(rb) {
@@ -2097,4 +2295,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid PermissionOwnerId {
                 get {
@@ -2107,4 +2306,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow PermissionOwnerRow {
                 get {
@@ -2117,4 +2317,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRow[] GetPermissionOwner_UserGroupRows() {
                 if ((this.Table.ChildRelations["R_57"] == null)) {
@@ -2130,5 +2331,4 @@
         ///Represents strongly named DataRow class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         public partial class HLUserRow : global::System.Data.DataRow {
             
@@ -2136,4 +2336,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal HLUserRow(global::System.Data.DataRowBuilder rb) : 
                     base(rb) {
@@ -2142,4 +2343,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid PermissionOwnerId {
                 get {
@@ -2152,4 +2354,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public string Password {
                 get {
@@ -2167,4 +2370,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public string Login {
                 get {
@@ -2182,4 +2386,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public string MailAddress {
                 get {
@@ -2197,4 +2402,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow PermissionOwnerRow {
                 get {
@@ -2207,4 +2413,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public bool IsPasswordNull() {
                 return this.IsNull(this.tableHLUser.PasswordColumn);
@@ -2212,4 +2419,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void SetPasswordNull() {
                 this[this.tableHLUser.PasswordColumn] = global::System.Convert.DBNull;
@@ -2217,4 +2425,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public bool IsLoginNull() {
                 return this.IsNull(this.tableHLUser.LoginColumn);
@@ -2222,4 +2431,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void SetLoginNull() {
                 this[this.tableHLUser.LoginColumn] = global::System.Convert.DBNull;
@@ -2227,4 +2437,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public bool IsMailAddressNull() {
                 return this.IsNull(this.tableHLUser.MailAddressColumn);
@@ -2232,4 +2443,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void SetMailAddressNull() {
                 this[this.tableHLUser.MailAddressColumn] = global::System.Convert.DBNull;
@@ -2240,5 +2452,4 @@
         ///Represents strongly named DataRow class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         public partial class PermissionRow : global::System.Data.DataRow {
             
@@ -2246,4 +2457,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal PermissionRow(global::System.Data.DataRowBuilder rb) : 
                     base(rb) {
@@ -2252,4 +2464,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid PermissionId {
                 get {
@@ -2262,4 +2475,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public string Name {
                 get {
@@ -2277,4 +2491,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public string Description {
                 get {
@@ -2292,4 +2507,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public string Plugin {
                 get {
@@ -2307,4 +2523,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public bool IsNameNull() {
                 return this.IsNull(this.tablePermission.NameColumn);
@@ -2312,4 +2529,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void SetNameNull() {
                 this[this.tablePermission.NameColumn] = global::System.Convert.DBNull;
@@ -2317,4 +2535,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public bool IsDescriptionNull() {
                 return this.IsNull(this.tablePermission.DescriptionColumn);
@@ -2322,4 +2541,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void SetDescriptionNull() {
                 this[this.tablePermission.DescriptionColumn] = global::System.Convert.DBNull;
@@ -2327,4 +2547,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public bool IsPluginNull() {
                 return this.IsNull(this.tablePermission.PluginColumn);
@@ -2332,4 +2553,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void SetPluginNull() {
                 this[this.tablePermission.PluginColumn] = global::System.Convert.DBNull;
@@ -2337,4 +2559,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRow[] GetGrantedPermissionsRows() {
                 if ((this.Table.ChildRelations["R_49"] == null)) {
@@ -2350,5 +2573,4 @@
         ///Represents strongly named DataRow class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         public partial class PermissionOwnerRow : global::System.Data.DataRow {
             
@@ -2356,4 +2578,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal PermissionOwnerRow(global::System.Data.DataRowBuilder rb) : 
                     base(rb) {
@@ -2362,4 +2585,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid PermissionOwnerId {
                 get {
@@ -2372,4 +2596,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public string Name {
                 get {
@@ -2387,4 +2612,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public bool IsNameNull() {
                 return this.IsNull(this.tablePermissionOwner.NameColumn);
@@ -2392,4 +2618,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public void SetNameNull() {
                 this[this.tablePermissionOwner.NameColumn] = global::System.Convert.DBNull;
@@ -2397,4 +2624,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRow[] GetGrantedPermissionsRows() {
                 if ((this.Table.ChildRelations["R_50"] == null)) {
@@ -2407,4 +2635,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRow[] GetUserGroupRows() {
                 if ((this.Table.ChildRelations["UserGroup_is_a_PermissionOwner"] == null)) {
@@ -2417,4 +2646,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserRow[] GetHLUserRows() {
                 if ((this.Table.ChildRelations["User_is_a_PermissionOwner"] == null)) {
@@ -2427,4 +2657,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRow[] GetPermissionOwner_UserGroupRows() {
                 if ((this.Table.ChildRelations["R_44"] == null)) {
@@ -2440,5 +2671,4 @@
         ///Represents strongly named DataRow class.
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
         public partial class PermissionOwner_UserGroupRow : global::System.Data.DataRow {
             
@@ -2446,4 +2676,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal PermissionOwner_UserGroupRow(global::System.Data.DataRowBuilder rb) : 
                     base(rb) {
@@ -2452,4 +2683,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid PermissionOwnerId {
                 get {
@@ -2462,4 +2694,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public System.Guid UserGroupId {
                 get {
@@ -2472,4 +2705,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow PermissionOwnerRow {
                 get {
@@ -2482,4 +2716,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRow UserGroupRow {
                 get {
@@ -2495,5 +2730,5 @@
         ///Row event argument class
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public class GrantedPermissionsRowChangeEvent : global::System.EventArgs {
             
@@ -2503,4 +2738,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRowChangeEvent(GrantedPermissionsRow row, global::System.Data.DataRowAction action) {
                 this.eventRow = row;
@@ -2509,4 +2745,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public GrantedPermissionsRow Row {
                 get {
@@ -2516,4 +2753,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataRowAction Action {
                 get {
@@ -2526,5 +2764,5 @@
         ///Row event argument class
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public class UserGroupRowChangeEvent : global::System.EventArgs {
             
@@ -2534,4 +2772,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRowChangeEvent(UserGroupRow row, global::System.Data.DataRowAction action) {
                 this.eventRow = row;
@@ -2540,4 +2779,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public UserGroupRow Row {
                 get {
@@ -2547,4 +2787,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataRowAction Action {
                 get {
@@ -2557,5 +2798,5 @@
         ///Row event argument class
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public class HLUserRowChangeEvent : global::System.EventArgs {
             
@@ -2565,4 +2806,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserRowChangeEvent(HLUserRow row, global::System.Data.DataRowAction action) {
                 this.eventRow = row;
@@ -2571,4 +2813,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public HLUserRow Row {
                 get {
@@ -2578,4 +2821,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataRowAction Action {
                 get {
@@ -2588,5 +2832,5 @@
         ///Row event argument class
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public class PermissionRowChangeEvent : global::System.EventArgs {
             
@@ -2596,4 +2840,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionRowChangeEvent(PermissionRow row, global::System.Data.DataRowAction action) {
                 this.eventRow = row;
@@ -2602,4 +2847,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionRow Row {
                 get {
@@ -2609,4 +2855,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataRowAction Action {
                 get {
@@ -2619,5 +2866,5 @@
         ///Row event argument class
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public class PermissionOwnerRowChangeEvent : global::System.EventArgs {
             
@@ -2627,4 +2874,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRowChangeEvent(PermissionOwnerRow row, global::System.Data.DataRowAction action) {
                 this.eventRow = row;
@@ -2633,4 +2881,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwnerRow Row {
                 get {
@@ -2640,4 +2889,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataRowAction Action {
                 get {
@@ -2650,5 +2900,5 @@
         ///Row event argument class
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public class PermissionOwner_UserGroupRowChangeEvent : global::System.EventArgs {
             
@@ -2658,4 +2908,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRowChangeEvent(PermissionOwner_UserGroupRow row, global::System.Data.DataRowAction action) {
                 this.eventRow = row;
@@ -2664,4 +2915,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public PermissionOwner_UserGroupRow Row {
                 get {
@@ -2671,4 +2923,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public global::System.Data.DataRowAction Action {
                 get {
@@ -2685,10 +2938,9 @@
     ///Represents the connection and commands used to retrieve and save data.
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
     [global::System.ComponentModel.ToolboxItem(true)]
     [global::System.ComponentModel.DataObjectAttribute(true)]
     [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
-        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+        ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
     [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
     public partial class GrantedPermissionsTableAdapter : global::System.ComponentModel.Component {
@@ -2705,4 +2957,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public GrantedPermissionsTableAdapter() {
             this.ClearBeforeFill = true;
@@ -2710,4 +2963,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
             get {
@@ -2720,4 +2974,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlConnection Connection {
             get {
@@ -2747,4 +3002,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlTransaction Transaction {
             get {
@@ -2772,4 +3028,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
             get {
@@ -2782,4 +3039,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public bool ClearBeforeFill {
             get {
@@ -2792,4 +3050,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitAdapter() {
             this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
@@ -2832,4 +3091,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
@@ -2838,4 +3098,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitCommandCollection() {
             this._commandCollection = new global::System.Data.SqlClient.SqlCommand[5];
@@ -2871,4 +3132,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
@@ -2883,4 +3145,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
@@ -2893,4 +3156,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -2906,4 +3170,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -2917,4 +3182,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -2930,4 +3196,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -2941,4 +3208,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -2954,4 +3222,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -2965,4 +3234,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -2980,4 +3250,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -2993,4 +3264,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity.GrantedPermissionsDataTable dataTable) {
@@ -2999,4 +3271,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity dataSet) {
@@ -3005,4 +3278,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow dataRow) {
@@ -3012,4 +3286,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow[] dataRows) {
@@ -3018,4 +3293,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
@@ -3041,4 +3317,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
@@ -3064,4 +3341,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -3090,4 +3368,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -3100,10 +3379,9 @@
     ///Represents the connection and commands used to retrieve and save data.
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
     [global::System.ComponentModel.ToolboxItem(true)]
     [global::System.ComponentModel.DataObjectAttribute(true)]
     [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
-        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+        ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
     [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
     public partial class UserGroupTableAdapter : global::System.ComponentModel.Component {
@@ -3120,4 +3398,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public UserGroupTableAdapter() {
             this.ClearBeforeFill = true;
@@ -3125,4 +3404,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
             get {
@@ -3135,4 +3415,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlConnection Connection {
             get {
@@ -3162,4 +3443,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlTransaction Transaction {
             get {
@@ -3187,4 +3469,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
             get {
@@ -3197,4 +3480,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public bool ClearBeforeFill {
             get {
@@ -3207,4 +3491,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitAdapter() {
             this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
@@ -3238,4 +3523,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
@@ -3244,4 +3530,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitCommandCollection() {
             this._commandCollection = new global::System.Data.SqlClient.SqlCommand[3];
@@ -3265,4 +3552,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
@@ -3277,4 +3565,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
@@ -3287,4 +3576,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -3300,4 +3590,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -3311,4 +3602,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -3324,4 +3616,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -3335,4 +3628,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity.UserGroupDataTable dataTable) {
@@ -3341,4 +3635,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity dataSet) {
@@ -3347,4 +3642,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow dataRow) {
@@ -3354,4 +3650,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow[] dataRows) {
@@ -3360,4 +3657,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
@@ -3381,4 +3679,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
@@ -3402,4 +3701,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -3424,4 +3724,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -3434,10 +3735,9 @@
     ///Represents the connection and commands used to retrieve and save data.
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
     [global::System.ComponentModel.ToolboxItem(true)]
     [global::System.ComponentModel.DataObjectAttribute(true)]
     [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
-        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+        ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
     [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
     public partial class HLUserTableAdapter : global::System.ComponentModel.Component {
@@ -3454,4 +3754,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public HLUserTableAdapter() {
             this.ClearBeforeFill = true;
@@ -3459,4 +3760,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
             get {
@@ -3469,4 +3771,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlConnection Connection {
             get {
@@ -3496,4 +3799,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlTransaction Transaction {
             get {
@@ -3521,4 +3825,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
             get {
@@ -3531,4 +3836,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public bool ClearBeforeFill {
             get {
@@ -3541,4 +3847,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitAdapter() {
             this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
@@ -3580,4 +3887,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
@@ -3586,4 +3894,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitCommandCollection() {
             this._commandCollection = new global::System.Data.SqlClient.SqlCommand[3];
@@ -3605,4 +3914,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
@@ -3617,4 +3927,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
@@ -3627,4 +3938,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -3640,4 +3952,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -3651,4 +3964,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -3669,4 +3983,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -3685,4 +4000,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity.HLUserDataTable dataTable) {
@@ -3691,4 +4007,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity dataSet) {
@@ -3697,4 +4014,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow dataRow) {
@@ -3704,4 +4022,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow[] dataRows) {
@@ -3710,4 +4029,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
@@ -3731,4 +4051,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
@@ -3770,4 +4091,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -3810,4 +4132,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -3820,10 +4143,9 @@
     ///Represents the connection and commands used to retrieve and save data.
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
     [global::System.ComponentModel.ToolboxItem(true)]
     [global::System.ComponentModel.DataObjectAttribute(true)]
     [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
-        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+        ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
     [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
     public partial class PermissionTableAdapter : global::System.ComponentModel.Component {
@@ -3840,4 +4162,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public PermissionTableAdapter() {
             this.ClearBeforeFill = true;
@@ -3845,4 +4168,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
             get {
@@ -3855,4 +4179,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlConnection Connection {
             get {
@@ -3882,4 +4207,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlTransaction Transaction {
             get {
@@ -3907,4 +4233,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
             get {
@@ -3917,4 +4244,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public bool ClearBeforeFill {
             get {
@@ -3927,4 +4255,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitAdapter() {
             this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
@@ -3965,4 +4294,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
@@ -3971,4 +4301,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitCommandCollection() {
             this._commandCollection = new global::System.Data.SqlClient.SqlCommand[2];
@@ -3986,4 +4317,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
@@ -3998,4 +4330,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
@@ -4008,4 +4341,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -4021,4 +4355,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -4032,4 +4367,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity.PermissionDataTable dataTable) {
@@ -4038,4 +4374,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity dataSet) {
@@ -4044,4 +4381,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow dataRow) {
@@ -4051,4 +4389,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow[] dataRows) {
@@ -4057,4 +4396,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
@@ -4078,4 +4418,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
@@ -4117,4 +4458,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -4157,4 +4499,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -4167,10 +4510,9 @@
     ///Represents the connection and commands used to retrieve and save data.
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
     [global::System.ComponentModel.ToolboxItem(true)]
     [global::System.ComponentModel.DataObjectAttribute(true)]
     [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
-        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+        ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
     [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
     public partial class PermissionOwnerTableAdapter : global::System.ComponentModel.Component {
@@ -4187,4 +4529,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public PermissionOwnerTableAdapter() {
             this.ClearBeforeFill = true;
@@ -4192,4 +4535,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
             get {
@@ -4202,4 +4546,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlConnection Connection {
             get {
@@ -4229,4 +4574,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlTransaction Transaction {
             get {
@@ -4254,4 +4600,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
             get {
@@ -4264,4 +4611,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public bool ClearBeforeFill {
             get {
@@ -4274,4 +4622,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitAdapter() {
             this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
@@ -4309,4 +4658,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
@@ -4315,4 +4665,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitCommandCollection() {
             this._commandCollection = new global::System.Data.SqlClient.SqlCommand[3];
@@ -4335,4 +4686,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
@@ -4347,4 +4699,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
@@ -4357,4 +4710,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -4370,4 +4724,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -4381,4 +4736,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -4399,4 +4755,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -4415,4 +4772,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity.PermissionOwnerDataTable dataTable) {
@@ -4421,4 +4779,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity dataSet) {
@@ -4427,4 +4786,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow dataRow) {
@@ -4434,4 +4794,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow[] dataRows) {
@@ -4440,4 +4801,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
@@ -4461,4 +4823,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
@@ -4488,4 +4851,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -4516,4 +4880,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -4526,10 +4891,9 @@
     ///Represents the connection and commands used to retrieve and save data.
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
     [global::System.ComponentModel.ToolboxItem(true)]
     [global::System.ComponentModel.DataObjectAttribute(true)]
     [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" +
-        ", Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+        ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
     [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
     public partial class PermissionOwner_UserGroupTableAdapter : global::System.ComponentModel.Component {
@@ -4546,4 +4910,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public PermissionOwner_UserGroupTableAdapter() {
             this.ClearBeforeFill = true;
@@ -4551,4 +4916,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter {
             get {
@@ -4561,4 +4927,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlConnection Connection {
             get {
@@ -4588,4 +4955,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         internal global::System.Data.SqlClient.SqlTransaction Transaction {
             get {
@@ -4613,4 +4981,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected global::System.Data.SqlClient.SqlCommand[] CommandCollection {
             get {
@@ -4623,4 +4992,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public bool ClearBeforeFill {
             get {
@@ -4633,4 +5003,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitAdapter() {
             this._adapter = new global::System.Data.SqlClient.SqlDataAdapter();
@@ -4667,4 +5038,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
@@ -4673,4 +5045,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private void InitCommandCollection() {
             this._commandCollection = new global::System.Data.SqlClient.SqlCommand[4];
@@ -4701,4 +5074,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)]
@@ -4713,4 +5087,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)]
@@ -4723,4 +5098,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -4736,4 +5112,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -4747,4 +5124,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -4761,4 +5139,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -4773,4 +5152,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
@@ -4786,4 +5166,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
@@ -4797,4 +5178,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity.PermissionOwner_UserGroupDataTable dataTable) {
@@ -4803,4 +5185,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsSecurity dataSet) {
@@ -4809,4 +5192,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow dataRow) {
@@ -4816,4 +5200,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(global::System.Data.DataRow[] dataRows) {
@@ -4822,4 +5207,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
@@ -4844,4 +5230,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
@@ -4866,4 +5253,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -4890,4 +5278,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
@@ -4900,9 +5289,8 @@
     ///TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios
     ///</summary>
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
     [global::System.ComponentModel.DesignerCategoryAttribute("code")]
     [global::System.ComponentModel.ToolboxItem(true)]
     [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerDesigner, Microsoft.VSD" +
-        "esigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+        "esigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
     [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapterManager")]
     public partial class TableAdapterManager : global::System.ComponentModel.Component {
@@ -4927,4 +5315,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public UpdateOrderOption UpdateOrder {
             get {
@@ -4937,7 +5326,8 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
-            "ft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" +
-            "", "System.Drawing.Design.UITypeEditor")]
+            "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+            "a", "System.Drawing.Design.UITypeEditor")]
         public GrantedPermissionsTableAdapter GrantedPermissionsTableAdapter {
             get {
@@ -4950,7 +5340,8 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
-            "ft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" +
-            "", "System.Drawing.Design.UITypeEditor")]
+            "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+            "a", "System.Drawing.Design.UITypeEditor")]
         public UserGroupTableAdapter UserGroupTableAdapter {
             get {
@@ -4963,7 +5354,8 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
-            "ft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" +
-            "", "System.Drawing.Design.UITypeEditor")]
+            "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+            "a", "System.Drawing.Design.UITypeEditor")]
         public HLUserTableAdapter HLUserTableAdapter {
             get {
@@ -4976,7 +5368,8 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
-            "ft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" +
-            "", "System.Drawing.Design.UITypeEditor")]
+            "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+            "a", "System.Drawing.Design.UITypeEditor")]
         public PermissionTableAdapter PermissionTableAdapter {
             get {
@@ -4989,7 +5382,8 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
-            "ft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" +
-            "", "System.Drawing.Design.UITypeEditor")]
+            "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+            "a", "System.Drawing.Design.UITypeEditor")]
         public PermissionOwnerTableAdapter PermissionOwnerTableAdapter {
             get {
@@ -5002,7 +5396,8 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" +
-            "ft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" +
-            "", "System.Drawing.Design.UITypeEditor")]
+            "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" +
+            "a", "System.Drawing.Design.UITypeEditor")]
         public PermissionOwner_UserGroupTableAdapter PermissionOwner_UserGroupTableAdapter {
             get {
@@ -5015,4 +5410,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public bool BackupDataSetBeforeUpdate {
             get {
@@ -5025,4 +5421,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         public global::System.Data.IDbConnection Connection {
@@ -5063,4 +5460,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         [global::System.ComponentModel.Browsable(false)]
         public int TableAdapterInstanceCount {
@@ -5093,4 +5491,5 @@
         ///</summary>
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private int UpdateUpdatedRows(dsSecurity dataSet, global::System.Collections.Generic.List<global::System.Data.DataRow> allChangedRows, global::System.Collections.Generic.List<global::System.Data.DataRow> allAddedRows) {
             int result = 0;
@@ -5156,4 +5555,5 @@
         ///</summary>
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private int UpdateInsertedRows(dsSecurity dataSet, global::System.Collections.Generic.List<global::System.Data.DataRow> allAddedRows) {
             int result = 0;
@@ -5213,4 +5613,5 @@
         ///</summary>
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private int UpdateDeletedRows(dsSecurity dataSet, global::System.Collections.Generic.List<global::System.Data.DataRow> allChangedRows) {
             int result = 0;
@@ -5270,4 +5671,5 @@
         ///</summary>
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private global::System.Data.DataRow[] GetRealUpdatedRows(global::System.Data.DataRow[] updatedRows, global::System.Collections.Generic.List<global::System.Data.DataRow> allAddedRows) {
             if (((updatedRows == null) 
@@ -5293,4 +5695,5 @@
         ///</summary>
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public virtual int UpdateAll(dsSecurity dataSet) {
             if ((dataSet == null)) {
@@ -5511,4 +5914,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected virtual void SortSelfReferenceRows(global::System.Data.DataRow[] rows, global::System.Data.DataRelation relation, bool childFirst) {
             global::System.Array.Sort<global::System.Data.DataRow>(rows, new SelfReferenceComparer(relation, childFirst));
@@ -5516,4 +5920,5 @@
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         protected virtual bool MatchTableAdapterConnection(global::System.Data.IDbConnection inputConnection) {
             if ((this._connection != null)) {
@@ -5533,5 +5938,5 @@
         ///Update Order Option
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         public enum UpdateOrderOption {
             
@@ -5544,5 +5949,5 @@
         ///Used to sort self-referenced table's rows
         ///</summary>
-        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
+        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
         private class SelfReferenceComparer : object, global::System.Collections.Generic.IComparer<global::System.Data.DataRow> {
             
@@ -5552,4 +5957,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             internal SelfReferenceComparer(global::System.Data.DataRelation relation, bool childFirst) {
                 this._relation = relation;
@@ -5563,30 +5969,44 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            private bool IsChildAndParent(global::System.Data.DataRow child, global::System.Data.DataRow parent) {
-                global::System.Diagnostics.Debug.Assert((child != null));
-                global::System.Diagnostics.Debug.Assert((parent != null));
-                global::System.Data.DataRow newParent = child.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default);
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
+            private global::System.Data.DataRow GetRoot(global::System.Data.DataRow row, out int distance) {
+                global::System.Diagnostics.Debug.Assert((row != null));
+                global::System.Data.DataRow root = row;
+                distance = 0;
+
+                global::System.Collections.Generic.IDictionary<global::System.Data.DataRow, global::System.Data.DataRow> traversedRows = new global::System.Collections.Generic.Dictionary<global::System.Data.DataRow, global::System.Data.DataRow>();
+                traversedRows[row] = row;
+
+                global::System.Data.DataRow parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default);
                 for (
-                ; ((newParent != null) 
-                            && ((object.ReferenceEquals(newParent, child) == false) 
-                            && (object.ReferenceEquals(newParent, parent) == false))); 
+                ; ((parent != null) 
+                            && (traversedRows.ContainsKey(parent) == false)); 
                 ) {
-                    newParent = newParent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default);
-                }
-                if ((newParent == null)) {
-                    for (newParent = child.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); ((newParent != null) 
-                                && ((object.ReferenceEquals(newParent, child) == false) 
-                                && (object.ReferenceEquals(newParent, parent) == false))); 
+                    distance = (distance + 1);
+                    root = parent;
+                    traversedRows[parent] = parent;
+                    parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default);
+                }
+
+                if ((distance == 0)) {
+                    traversedRows.Clear();
+                    traversedRows[row] = row;
+                    parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original);
+                    for (
+                    ; ((parent != null) 
+                                && (traversedRows.ContainsKey(parent) == false)); 
                     ) {
-                        newParent = newParent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original);
+                        distance = (distance + 1);
+                        root = parent;
+                        traversedRows[parent] = parent;
+                        parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original);
                     }
                 }
-                if (object.ReferenceEquals(newParent, parent)) {
-                    return true;
-                }
-                return false;
-            }
-            
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+
+                return root;
+            }
+            
+            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+            [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
             public int Compare(global::System.Data.DataRow row1, global::System.Data.DataRow row2) {
                 if (object.ReferenceEquals(row1, row2)) {
@@ -5600,14 +6020,23 @@
                 }
 
-                // Is row1 the child or grandchild of row2
-                if (this.IsChildAndParent(row1, row2)) {
-                    return this._childFirst;
-                }
+                int distance1 = 0;
+                global::System.Data.DataRow root1 = this.GetRoot(row1, out distance1);
 
-                // Is row2 the child or grandchild of row1
-                if (this.IsChildAndParent(row2, row1)) {
-                    return (-1 * this._childFirst);
-                }
-                return 0;
+                int distance2 = 0;
+                global::System.Data.DataRow root2 = this.GetRoot(row2, out distance2);
+
+                if (object.ReferenceEquals(root1, root2)) {
+                    return (this._childFirst * distance1.CompareTo(distance2));
+                }
+                else {
+                    global::System.Diagnostics.Debug.Assert(((root1.Table != null) 
+                                    && (root2.Table != null)));
+                    if ((root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2))) {
+                        return -1;
+                    }
+                    else {
+                        return 1;
+                    }
+                }
             }
         }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/GrantedPermission.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/GrantedPermission.cs	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/GrantedPermission.cs	(revision 4073)
@@ -21,8 +21,5 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using System.Runtime.Serialization;
-using HeuristicLab.DataAccess.Interfaces;
 
 namespace HeuristicLab.Security.Contracts.BusinessObjects {
Index: anches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.2.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.2.csproj	(revision 4072)
+++ 	(revision )
@@ -1,122 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Security.Contracts</RootNamespace>
-    <AssemblyName>HeuristicLab.Security.Contracts-3.2</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <StartupObject>
-    </StartupObject>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="BusinessObjects\GrantedPermission.cs" />
-    <Compile Include="BusinessObjects\Permission.cs" />
-    <Compile Include="BusinessObjects\PermissionOwner.cs" />
-    <Compile Include="BusinessObjects\User.cs" />
-    <Compile Include="BusinessObjects\UserGroup.cs" />
-    <Compile Include="BusinessObjects\PersistableObject.cs" />
-    <Compile Include="SecurityContractsPlugin.cs" />
-    <Compile Include="Interfaces\IPermissionManager.cs" />
-    <Compile Include="Interfaces\ISecurityManager.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Runtime.Serialization">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.ServiceModel">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.2\HeuristicLab.DataAccess-3.2.csproj">
-      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
-      <Name>HeuristicLab.DataAccess-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-  <ItemGroup>
-    <None Include="HeuristicLab.snk" />
-    <None Include="Properties\AssemblyInfo.frame" />
-  </ItemGroup>
-</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.3.csproj	(revision 4073)
@@ -0,0 +1,163 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Security.Contracts</RootNamespace>
+    <AssemblyName>HeuristicLab.Security.Contracts-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="BusinessObjects\GrantedPermission.cs" />
+    <Compile Include="BusinessObjects\Permission.cs" />
+    <Compile Include="BusinessObjects\PermissionOwner.cs" />
+    <Compile Include="BusinessObjects\User.cs" />
+    <Compile Include="BusinessObjects\UserGroup.cs" />
+    <Compile Include="BusinessObjects\PersistableObject.cs" />
+    <Compile Include="SecurityContractsPlugin.cs" />
+    <Compile Include="Interfaces\IPermissionManager.cs" />
+    <Compile Include="Interfaces\ISecurityManager.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.3\HeuristicLab.DataAccess-3.3.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+</Project>
Index: anches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.2.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.2.csproj	(revision 4072)
+++ 	(revision )
@@ -1,144 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Security.Core</RootNamespace>
-    <AssemblyName>HeuristicLab.Security.Core-3.2</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.ServiceModel">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="PermissionManager.cs" />
-    <Compile Include="SecurityCorePlugin.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SecurityCoreTest.cs" />
-    <Compile Include="SecurityManager.cs" />
-    <Compile Include="ServiceLocator.cs" />
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-      <DependentUpon>Settings.settings</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.2\HeuristicLab.DataAccess-3.2.csproj">
-      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
-      <Name>HeuristicLab.DataAccess-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Hive.Server.Core\3.2\HeuristicLab.Hive.Server.Core-3.2.csproj">
-      <Project>{898B31CF-81DC-453B-AEB3-BDF83197A7EE}</Project>
-      <Name>HeuristicLab.Hive.Server.Core-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Security.Contracts\3.2\HeuristicLab.Security.Contracts-3.2.csproj">
-      <Project>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</Project>
-      <Name>HeuristicLab.Security.Contracts-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Security.DataAccess\3.2\HeuristicLab.Security.DataAccess-3.2.csproj">
-      <Project>{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}</Project>
-      <Name>HeuristicLab.Security.DataAccess-3.2</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="app.config" />
-    <None Include="HeuristicLab.snk" />
-    <None Include="Properties\AssemblyInfo.frame" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.3.csproj	(revision 4073)
@@ -0,0 +1,164 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{CE2DFB48-6A9C-4507-96C6-5FC40E92035C}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Security.Core</RootNamespace>
+    <AssemblyName>HeuristicLab.Security.Core-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="PermissionManager.cs" />
+    <Compile Include="SecurityCorePlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SecurityCoreTest.cs" />
+    <Compile Include="SecurityManager.cs" />
+    <Compile Include="ServiceLocator.cs" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/Properties/Settings.Designer.cs	(revision 4072)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/Properties/Settings.Designer.cs	(revision 4073)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.4927
+//     Runtime Version:4.0.30319.1
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -13,5 +13,5 @@
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
         
Index: anches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.2.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.2.csproj	(revision 4072)
+++ 	(revision )
@@ -1,111 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Security.DataAccess</RootNamespace>
-    <AssemblyName>HeuristicLab.Security.DataAccess-3.2</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <StartupObject>
-    </StartupObject>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.2\HeuristicLab.DataAccess-3.2.csproj">
-      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
-      <Name>HeuristicLab.DataAccess-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Security.Contracts\3.2\HeuristicLab.Security.Contracts-3.2.csproj">
-      <Project>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</Project>
-      <Name>HeuristicLab.Security.Contracts-3.2</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="IPermissionAdapter.cs" />
-    <Compile Include="IPermissionOwnerAdapter.cs" />
-    <Compile Include="IUserAdapter.cs" />
-    <Compile Include="IUserGroupAdapter.cs" />
-    <Compile Include="SecurityDataAccessPlugin.cs" />
-  </ItemGroup>
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-  <ItemGroup>
-    <None Include="HeuristicLab.snk" />
-    <None Include="Properties\AssemblyInfo.frame" />
-  </ItemGroup>
-</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.3.csproj	(revision 4073)
@@ -0,0 +1,144 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AC3D84FF-F0D7-43F0-9C99-9F8DBE087E2C}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Security.DataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.Security.DataAccess-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="IPermissionAdapter.cs" />
+    <Compile Include="IPermissionOwnerAdapter.cs" />
+    <Compile Include="IUserAdapter.cs" />
+    <Compile Include="IUserGroupAdapter.cs" />
+    <Compile Include="SecurityDataAccessPlugin.cs" />
+  </ItemGroup>
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+</Project>
Index: anches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.2.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.2.csproj	(revision 4072)
+++ 	(revision )
@@ -1,136 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{E3288D4B-7A51-499A-AC5B-019319CE51DC}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Security.Server</RootNamespace>
-    <AssemblyName>HeuristicLab.Security.Server-3.2</AssemblyName>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.ServiceModel">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SecurityServer.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SecurityServer.Designer.cs">
-      <DependentUpon>SecurityServer.cs</DependentUpon>
-    </Compile>
-    <Compile Include="SecurityServerApplication.cs" />
-    <Compile Include="SecurityServerPlugin.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.2\HeuristicLab.Hive.Contracts-3.2.csproj">
-      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
-      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
-      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
-      <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Security.Contracts\3.2\HeuristicLab.Security.Contracts-3.2.csproj">
-      <Project>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</Project>
-      <Name>HeuristicLab.Security.Contracts-3.2</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="SecurityServer.resx">
-      <DependentUpon>SecurityServer.cs</DependentUpon>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="HeuristicLab.snk" />
-    <None Include="Properties\AssemblyInfo.frame" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
-
-call PreBuildEvent.cmd</PreBuildEvent>
-  </PropertyGroup>
-</Project>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.3.csproj	(revision 4073)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.3.csproj	(revision 4073)
@@ -0,0 +1,173 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{E3288D4B-7A51-499A-AC5B-019319CE51DC}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Security.Server</RootNamespace>
+    <AssemblyName>HeuristicLab.Security.Server-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SecurityServer.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="SecurityServer.Designer.cs">
+      <DependentUpon>SecurityServer.cs</DependentUpon>
+    </Compile>
+    <Compile Include="SecurityServerApplication.cs" />
+    <Compile Include="SecurityServerPlugin.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="SecurityServer.resx">
+      <DependentUpon>SecurityServer.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Security.Contracts\3.3\HeuristicLab.Security.Contracts-3.3.csproj">
+      <Project>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</Project>
+      <Name>HeuristicLab.Security.Contracts-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
