Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/HeuristicLab.Clients.Hive.LifecycleClient.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/HeuristicLab.Clients.Hive.LifecycleClient.csproj	(revision 5593)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/HeuristicLab.Clients.Hive.LifecycleClient.csproj	(revision 5593)
@@ -0,0 +1,114 @@
+﻿<?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)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Clients.Hive.LifecycleClient</RootNamespace>
+    <AssemblyName>HeuristicLab.Clients.Hive.LifecycleClient</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <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|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <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|AnyCPU'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\HeuristicLab.Clients.Hive.LifecycleClient.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\HeuristicLab.Clients.Hive.LifecycleClient.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Clients.Common-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Clients.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="app_ascheibe.config" />
+    <None Include="app_f005pc.config" />
+    <None Include="app_services.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Services.Hive.Common\3.4\HeuristicLab.Services.Hive.Common-3.4.csproj">
+      <Project>{14424A16-48D4-445E-80BF-DDF617548BBB}</Project>
+      <Name>HeuristicLab.Services.Hive.Common-3.4</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <!-- 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>
+  -->
+</Project>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/Program.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/Program.cs	(revision 5593)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/Program.cs	(revision 5593)
@@ -0,0 +1,13 @@
+﻿using HeuristicLab.Clients.Common;
+using HeuristicLab.Services.Hive.Common.ServiceContracts;
+
+namespace HeuristicLab.Clients.Hive.LifecycleClient {
+  class Program {
+    private static void Main(string[] args) {
+      using (var factory = ClientFactory.CreateChannelFactory<IHiveService>("wsHttpBinding_IHiveService", null, "hiveslave", "hiveslave")) {
+        IHiveService client = factory.Obj.CreateChannel();
+        client.TriggerLifecycle();
+      }
+    }
+  }
+}
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/Properties/AssemblyInfo.cs	(revision 5593)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/Properties/AssemblyInfo.cs	(revision 5593)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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.Clients.Hive.LifecycleClient")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("HeuristicLab.Clients.Hive.LifecycleClient")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
+[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("89113cb3-c207-42c2-9da2-4e4204359c42")]
+
+// 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("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app.config
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app.config	(revision 5593)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app.config	(revision 5593)
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+            <section name="HeuristicLab.Clients.Hive.Slave.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
+        </sectionGroup>
+    </configSections>
+    <userSettings>
+        <HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+            <setting name="Guid" serializeAs="String">
+                <value>00000000-0000-0000-0000-000000000000</value>
+            </setting>
+        </HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+    </userSettings>
+
+  <system.serviceModel>
+    <bindings>
+      <wsHttpBinding>
+        <binding name="wsHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
+          <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
+          <security mode="Message">
+            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
+            <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
+          </security>
+        </binding>
+      </wsHttpBinding>
+    </bindings>
+    <services>
+      <service name="HeuristicLab.Clients.Hive.Slave.SlaveCommunicationService">        
+        <endpoint address="net.pipe://localhost/HeuristicLabSlaveCom" binding="netNamedPipeBinding" contract="HeuristicLab.Clients.Hive.Slave.ServiceContracts.ISlaveCommunication"/>
+      </service>
+    </services>
+    <client>
+      <endpoint address="http://localhost/Hive-3.4/HiveService.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding" contract="HeuristicLab.Services.Hive.Common.ServiceContracts.IHiveService" name="wsHttpBinding_IHiveService">
+        <identity>
+          <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac="/>
+        </identity>
+      </endpoint>
+    </client>
+  </system.serviceModel>
+
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_ascheibe.config
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_ascheibe.config	(revision 5593)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_ascheibe.config	(revision 5593)
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+            <section name="HeuristicLab.Clients.Hive.Slave.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
+        </sectionGroup>
+    </configSections>
+    <userSettings>
+        <HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+            <setting name="Guid" serializeAs="String">
+                <value>00000000-0000-0000-0000-000000000000</value>
+            </setting>
+        </HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+    </userSettings>
+
+  <system.serviceModel>
+    <bindings>
+      <wsHttpBinding>
+        <binding name="wsHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
+          <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
+          <security mode="Message">
+            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
+            <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
+          </security>
+        </binding>
+      </wsHttpBinding>
+    </bindings>
+    <services>
+      <service name="HeuristicLab.Clients.Hive.Slave.SlaveCommunicationService">        
+        <endpoint address="net.pipe://localhost/HeuristicLabSlaveCom" binding="netNamedPipeBinding" contract="HeuristicLab.Clients.Hive.Slave.ServiceContracts.ISlaveCommunication"/>
+      </service>
+    </services>
+    <client>
+      <endpoint address="http://services.heuristiclab.com/Hive-3.4/HiveService.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding" contract="HeuristicLab.Services.Hive.Common.ServiceContracts.IHiveService" name="wsHttpBinding_IHiveService">
+        <identity>
+          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
+        </identity>
+      </endpoint>
+    </client>
+  </system.serviceModel>
+
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_f005pc.config
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_f005pc.config	(revision 5593)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_f005pc.config	(revision 5593)
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+            <section name="HeuristicLab.Clients.Hive.Slave.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
+        </sectionGroup>
+    </configSections>
+    <userSettings>
+        <HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+            <setting name="Guid" serializeAs="String">
+                <value>00000000-0000-0000-0000-000000000000</value>
+            </setting>
+        </HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+    </userSettings>
+
+  <system.serviceModel>
+    <bindings>
+      <wsHttpBinding>
+        <binding name="wsHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
+          <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
+          <security mode="Message">
+            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
+            <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
+          </security>
+        </binding>
+      </wsHttpBinding>
+    </bindings>
+    <services>
+      <service name="HeuristicLab.Clients.Hive.Slave.SlaveCommunicationService">        
+        <endpoint address="net.pipe://localhost/HeuristicLabSlaveCom" binding="netNamedPipeBinding" contract="HeuristicLab.Clients.Hive.Slave.ServiceContracts.ISlaveCommunication"/>
+      </service>
+    </services>
+    <client>
+      <endpoint address="http://localhost/Hive-3.4/HiveService.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding" contract="HeuristicLab.Services.Hive.Common.ServiceContracts.IHiveService" name="wsHttpBinding_IHiveService">
+        <identity>
+          <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac="/>
+        </identity>
+      </endpoint>
+    </client>
+  </system.serviceModel>
+
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_services.config
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_services.config	(revision 5593)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.LifecycleClient/app_services.config	(revision 5593)
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+            <section name="HeuristicLab.Clients.Hive.Slave.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
+        </sectionGroup>
+    </configSections>
+    <userSettings>
+        <HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+            <setting name="Guid" serializeAs="String">
+                <value>00000000-0000-0000-0000-000000000000</value>
+            </setting>
+        </HeuristicLab.Clients.Hive.Slave.Properties.Settings>
+    </userSettings>
+
+  <system.serviceModel>
+    <bindings>
+      <wsHttpBinding>
+        <binding name="wsHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
+          <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
+          <security mode="Message">
+            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
+            <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default"/>
+          </security>
+        </binding>
+      </wsHttpBinding>
+    </bindings>
+    <services>
+      <service name="HeuristicLab.Clients.Hive.Slave.SlaveCommunicationService">        
+        <endpoint address="net.pipe://localhost/HeuristicLabSlaveCom" binding="netNamedPipeBinding" contract="HeuristicLab.Clients.Hive.Slave.ServiceContracts.ISlaveCommunication"/>
+      </service>
+    </services>
+    <client>
+      <endpoint address="http://services.heuristiclab.com/Hive-3.4/HiveService.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding" contract="HeuristicLab.Services.Hive.Common.ServiceContracts.IHiveService" name="wsHttpBinding_IHiveService">
+        <identity>
+          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
+        </identity>
+      </endpoint>
+    </client>
+  </system.serviceModel>
+
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Tests/Mocks/MockHiveService.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Tests/Mocks/MockHiveService.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Tests/Mocks/MockHiveService.cs	(revision 5593)
@@ -335,4 +335,9 @@
     #endregion
 
+    #region Lifecycle Methods
+    public void TriggerLifecycle() {
+      throw new NotImplementedException();
+    }
+    #endregion
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/HeuristicLab.Clients.Hive.Slave-3.4.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/HeuristicLab.Clients.Hive.Slave-3.4.csproj	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/HeuristicLab.Clients.Hive.Slave-3.4.csproj	(revision 5593)
@@ -124,4 +124,5 @@
     <Compile Include="StatusCommons.cs" />
     <Compile Include="WcfService.cs" />
+    <None Include="app.config" />
     <None Include="app_ascheibe.config" />
     <None Include="app_f005pc.config" />
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Hive 3.4.sln
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Hive 3.4.sln	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Hive 3.4.sln	(revision 5593)
@@ -72,4 +72,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.DayView-1.0", "HeuristicLab.ExtLibs\HeuristicLab.DayView\1.0\HeuristicLab.DayView-1.0.csproj", "{02766ECC-D0F5-4115-9ECA-47409167B638}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CreateEventLogSources", "CreateEventLogSources\CreateEventLogSources.csproj", "{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Clients.Hive.LifecycleClient", "HeuristicLab.Clients.Hive.LifecycleClient\HeuristicLab.Clients.Hive.LifecycleClient.csproj", "{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}"
 EndProject
 Global
@@ -311,4 +315,30 @@
 		{02766ECC-D0F5-4115-9ECA-47409167B638}.Release|x86.ActiveCfg = Release|x86
 		{02766ECC-D0F5-4115-9ECA-47409167B638}.Release|x86.Build.0 = Release|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Debug|x64.ActiveCfg = Debug|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Debug|x86.ActiveCfg = Debug|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Debug|x86.Build.0 = Debug|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Release|Any CPU.ActiveCfg = Release|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Release|Mixed Platforms.Build.0 = Release|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Release|x64.ActiveCfg = Release|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Release|x86.ActiveCfg = Release|x86
+		{A0EB9657-4D57-4CC1-A309-EC010D7F9EAB}.Release|x86.Build.0 = Release|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Debug|x64.ActiveCfg = Debug|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Debug|x86.ActiveCfg = Debug|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Debug|x86.Build.0 = Debug|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Release|Any CPU.ActiveCfg = Release|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Release|Mixed Platforms.Build.0 = Release|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Release|x64.ActiveCfg = Release|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Release|x86.ActiveCfg = Release|x86
+		{54491B6A-1EDD-4C76-90A7-338BA9C1FBF8}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/Logger.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/Logger.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/Logger.cs	(revision 5593)
@@ -1,4 +1,6 @@
 ﻿using System;
 using System.Diagnostics;
+using System.Security;
+using System.Threading;
 
 namespace HeuristicLab.Services.Hive.Common {
@@ -17,18 +19,32 @@
     private EventLog log;
 
+    /// <summary>
+    /// Creating an EventSource requires certain permissions, which by default a IIS AppPool user does not have.
+    /// In this case just ignore security exceptions.
+    /// In order to make this work, the eventsource needs to be created manually
+    /// </summary>
     public Logger(string name, string source) {
-      //if (!EventLog.SourceExists(name)) {
-      //  EventLog.CreateEventSource(source, name);
-      //}
-      //log = new EventLog(name);
-      //log.Source = source;
+      try {
+        if (!EventLog.SourceExists(source)) {
+          EventLog.CreateEventSource(source, name);
+        }
+        log = new EventLog(name);
+        log.Source = source;
+      }
+      catch (SecurityException) { }
     }
 
     public void Log(string message) {
-      //log.WriteEntry(string.Format("{0} (AppDomain: {1}, Thread: {2})", message, AppDomain.CurrentDomain.Id, Thread.CurrentThread.ManagedThreadId), EventLogEntryType.Information);
+      try {
+        log.WriteEntry(string.Format("{0} (AppDomain: {1}, Thread: {2})", message, AppDomain.CurrentDomain.Id, Thread.CurrentThread.ManagedThreadId), EventLogEntryType.Information);
+      }
+      catch (SecurityException) { }
     }
 
     public void Error(Exception e) {
-      //log.WriteEntry(string.Format("{0} (AppDomain: {1}, Thread: {2})", e.Message, AppDomain.CurrentDomain.Id, Thread.CurrentThread.ManagedThreadId), EventLogEntryType.Error);
+      try {
+        log.WriteEntry(string.Format("{0} (AppDomain: {1}, Thread: {2})", e.Message, AppDomain.CurrentDomain.Id, Thread.CurrentThread.ManagedThreadId), EventLogEntryType.Error);
+      }
+      catch (SecurityException) { }
     }
   }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/ServiceContracts/IHiveService.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/ServiceContracts/IHiveService.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/ServiceContracts/IHiveService.cs	(revision 5593)
@@ -135,4 +135,6 @@
     Guid GetResourceId(string resourceName);
 
+    [OperationContract]
+    void TriggerLifecycle();
     #endregion
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDao.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDao.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDao.cs	(revision 5593)
@@ -558,4 +558,27 @@
     #endregion
 
+    #region Lifecycle Methods
+    public DateTime GetLastCleanup() {
+      using (var db = CreateContext()) {
+        var entity = db.Lifecycles.SingleOrDefault();
+        return entity != null ? entity.LastCleanup : DateTime.MinValue;
+      }
+    }
+
+    public void SetLastCleanup(DateTime datetime) {
+      using (var db = CreateContext()) {
+        var entity = db.Lifecycles.SingleOrDefault();
+        if (entity != null) {
+          entity.LastCleanup = datetime;
+        } else {
+          entity = new Lifecycle();
+          entity.LifecycleId = 0; // always only one entry with ID:0
+          entity.LastCleanup = datetime;
+          db.Lifecycles.InsertOnSubmit(entity);
+        }
+        db.SubmitChanges();
+      }
+    }
+    #endregion
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.dbml
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.dbml	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.dbml	(revision 5593)
@@ -143,3 +143,9 @@
     </Type>
   </Table>
+  <Table Name="" Member="Lifecycles">
+    <Type Name="Lifecycle">
+      <Column Name="LifecycleId" Type="System.Int32" DbType="Int" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="LastCleanup" Type="System.DateTime" DbType="DateTime" CanBeNull="false" />
+    </Type>
+  </Table>
 </Database>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.dbml.layout
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.dbml.layout	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.dbml.layout	(revision 5593)
@@ -83,5 +83,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(7.4687475 : 3.73240397135417); (7.4687475 : 5.5)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(7.4687475 : 3.73240397135417); (7.4687475 : 5.5)]" fixedFrom="NotFixed" fixedTo="NotFixed">
       <AssociationMoniker Name="/HiveDataContext/Job/Job_RequiredPlugin" />
       <nodes>
@@ -104,5 +104,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(6.5 : 3.17870198567708); (6.125 : 3.17870198567708)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(6.5 : 3.17870198567708); (6.125 : 3.17870198567708)]" fixedFrom="NotFixed" fixedTo="NotFixed">
       <AssociationMoniker Name="/HiveDataContext/Job/Job_HiveExperiment" />
       <nodes>
@@ -130,5 +130,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(6.5 : 1.69314697265625); (6.125 : 1.69314697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(6.5 : 1.69314697265625); (6.125 : 1.69314697265625)]" fixedFrom="NotFixed" fixedTo="NotFixed">
       <AssociationMoniker Name="/HiveDataContext/Job/Job_JobData" />
       <nodes>
@@ -163,5 +163,5 @@
       </nestedChildShapes>
     </classShape>
-    <associationConnector edgePoints="[(6.5 : 2.50564697265625); (3.75 : 2.50564697265625)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(6.5 : 2.50564697265625); (3.75 : 2.50564697265625)]" fixedFrom="NotFixed" fixedTo="NotFixed">
       <AssociationMoniker Name="/HiveDataContext/Job/Job_StateLog" />
       <nodes>
@@ -170,5 +170,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(11.25 : 1.78929768880208); (10.9375 : 1.78929768880208); (10.9375 : 0.6875); (2.75 : 0.6875); (2.75 : 1)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(11.25 : 1.78929768880208); (10.9375 : 1.78929768880208); (10.9375 : 0.6875); (2.75 : 0.6875); (2.75 : 1)]" fixedFrom="NotFixed" fixedTo="NotFixed">
       <AssociationMoniker Name="/HiveDataContext/Resource/Resource_StateLog" />
       <nodes>
@@ -184,4 +184,10 @@
       </nodes>
     </associationConnector>
+    <classShape Id="b4e7aaa8-a382-4560-a1fd-498de77e9340" absoluteBounds="1.75, 5.5, 2, 1.1939925130208327">
+      <DataClassMoniker Name="/HiveDataContext/Lifecycle" />
+      <nestedChildShapes>
+        <elementListCompartment Id="03597a2c-5c5d-4c2c-b741-c49ab5aa34d5" absoluteBounds="1.7650000000000001, 5.96, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
   </nestedChildShapes>
 </ordesignerObjectsDiagram>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.designer.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDataContext.designer.cs	(revision 5593)
@@ -64,4 +64,7 @@
     partial void UpdateHiveExperimentPermission(HiveExperimentPermission instance);
     partial void DeleteHiveExperimentPermission(HiveExperimentPermission instance);
+    partial void InsertLifecycle(Lifecycle instance);
+    partial void UpdateLifecycle(Lifecycle instance);
+    partial void DeleteLifecycle(Lifecycle instance);
     #endregion
 		
@@ -175,4 +178,12 @@
 			{
 				return this.GetTable<HiveExperimentPermission>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Lifecycle> Lifecycles
+		{
+			get
+			{
+				return this.GetTable<Lifecycle>();
 			}
 		}
@@ -3190,4 +3201,90 @@
 		}
 	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
+	public partial class Lifecycle : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private int _LifecycleId;
+		
+		private System.DateTime _LastCleanup;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnLifecycleIdChanging(int value);
+    partial void OnLifecycleIdChanged();
+    partial void OnLastCleanupChanging(System.DateTime value);
+    partial void OnLastCleanupChanged();
+    #endregion
+		
+		public Lifecycle()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LifecycleId", DbType="Int", IsPrimaryKey=true)]
+		public int LifecycleId
+		{
+			get
+			{
+				return this._LifecycleId;
+			}
+			set
+			{
+				if ((this._LifecycleId != value))
+				{
+					this.OnLifecycleIdChanging(value);
+					this.SendPropertyChanging();
+					this._LifecycleId = value;
+					this.SendPropertyChanged("LifecycleId");
+					this.OnLifecycleIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastCleanup", DbType="DateTime")]
+		public System.DateTime LastCleanup
+		{
+			get
+			{
+				return this._LastCleanup;
+			}
+			set
+			{
+				if ((this._LastCleanup != value))
+				{
+					this.OnLastCleanupChanging(value);
+					this.SendPropertyChanging();
+					this._LastCleanup = value;
+					this.SendPropertyChanged("LastCleanup");
+					this.OnLastCleanupChanged();
+				}
+			}
+		}
+		
+		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/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/Interfaces/IHiveDao.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/Interfaces/IHiveDao.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/Interfaces/IHiveDao.cs	(revision 5593)
@@ -100,4 +100,9 @@
     Guid GetExperimentForJob(Guid jobId);
     #endregion
+
+    #region Lifecycle Methods
+    DateTime GetLastCleanup();
+    void SetLastCleanup(DateTime datetime);
+    #endregion
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/Mocks/MockLifecycleManager.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/Mocks/MockLifecycleManager.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/Mocks/MockLifecycleManager.cs	(revision 5593)
@@ -20,15 +20,8 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using HeuristicLab.Services.Hive.Common;
-using HeuristicLab.Services.Hive.Common.DataTransfer;
 
 namespace HeuristicLab.Services.Hive.Tests.Mocks {
   public class MockLifecycleManager : ILifecycleManager {
-
-    public void Start() { }
-
-    public void Stop() { }
+    public void Cleanup() { }
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/ServiceTests.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/ServiceTests.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/ServiceTests.cs	(revision 5593)
@@ -23,5 +23,4 @@
 using System.Collections.Generic;
 using System.Linq;
-using System.Threading;
 using HeuristicLab.Services.Hive.Common;
 using HeuristicLab.Services.Hive.Common.DataTransfer;
@@ -242,8 +241,5 @@
 
       // lifecycle - let it process one server-heartbeat; the parent job must NOT be set to finished
-      var lifecycleManager = new LifecycleManager();
-      lifecycleManager.Start();
-      Thread.Sleep(1000);
-      lifecycleManager.Stop();
+      service.TriggerLifecycle();
 
       parentJobLoaded = service.GetJob(parentJob.Id);
@@ -255,7 +251,5 @@
 
       // lifecycle - let it process one server-heartbeat; this should set the parent job to finished
-      lifecycleManager.Start();
-      Thread.Sleep(1000);
-      lifecycleManager.Stop();
+      service.TriggerLifecycle();
 
       // test if parent job is finished
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Web/Hive-3.4/Web.config
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Web/Hive-3.4/Web.config	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Web/Hive-3.4/Web.config	(revision 5593)
@@ -70,7 +70,7 @@
 
   <system.webServer>
-    <modules runAllManagedModulesForAllRequests="true">
+    <!--<modules runAllManagedModulesForAllRequests="true">
       <add name="HiveServerModule" type="HeuristicLab.Services.Hive.IISModules.HiveServerModule"/>
-    </modules>
+    </modules>-->
     <directoryBrowse enabled="true"/>
   </system.webServer>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HeuristicLab.Services.Hive-3.4.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HeuristicLab.Services.Hive-3.4.csproj	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HeuristicLab.Services.Hive-3.4.csproj	(revision 5593)
@@ -115,11 +115,4 @@
     <Compile Include="Interfaces\ILifecycleManager.cs" />
     <Compile Include="Interfaces\IServiceLocator.cs" />
-    <Compile Include="Standalone\HeuristicLabServicesHiveApplication.cs" />
-    <Compile Include="Standalone\MainForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Standalone\MainForm.Designer.cs">
-      <DependentUpon>MainForm.cs</DependentUpon>
-    </Compile>
     <Compile Include="AuthorizationManager.cs" />
     <Compile Include="HeuristicLabServicesHivePlugin.cs" />
@@ -148,7 +141,5 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="Standalone\MainForm.resx">
-      <DependentUpon>MainForm.cs</DependentUpon>
-    </EmbeddedResource>
+    <Folder Include="Standalone\" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HiveService.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HiveService.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HiveService.cs	(revision 5593)
@@ -229,4 +229,6 @@
     // [PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Slave)]
     public List<MessageContainer> Heartbeat(Heartbeat heartbeat) {
+      TriggerLifecycle();
+
       using (trans.OpenTransaction()) {
         return heartbeatManager.ProcessHeartbeat(heartbeat);
@@ -255,5 +257,5 @@
     // [PrincipalPermission(SecurityAction.Demand, Role = HiveRoles.Slave)]
     public IEnumerable<Plugin> GetPlugins() {
-      return dao.GetPlugins(x => true);
+      return dao.GetPlugins(x => x.IsLocal == false);
     }
 
@@ -382,4 +384,14 @@
       }
     }
+
+    public void TriggerLifecycle() {
+      using (trans.OpenTransaction()) {
+        DateTime lastCleanup = dao.GetLastCleanup();
+        if (DateTime.Now - lastCleanup > TimeSpan.FromSeconds(59)) {
+          dao.SetLastCleanup(DateTime.Now);
+          lifecycleManager.Cleanup();
+        }
+      }
+    }
     #endregion
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/Interfaces/ILifecycleManager.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/Interfaces/ILifecycleManager.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/Interfaces/ILifecycleManager.cs	(revision 5593)
@@ -1,9 +1,3 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Services.Hive.Common;
-using HeuristicLab.Services.Hive.Common.DataTransfer;
-
+﻿
 namespace HeuristicLab.Services.Hive {
   /// <summary>
@@ -11,7 +5,5 @@
   /// </summary>
   public interface ILifecycleManager {
-    void Start();
-
-    void Stop();
+    void Cleanup();
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/LifecycleManager.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/LifecycleManager.cs	(revision 5591)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/LifecycleManager.cs	(revision 5593)
@@ -1,5 +1,4 @@
 ﻿using System;
 using System.Linq;
-using HeuristicLab.Core;
 using HeuristicLab.Services.Hive.Common;
 using HeuristicLab.Services.Hive.Common.DataTransfer;
@@ -7,5 +6,5 @@
 namespace HeuristicLab.Services.Hive {
   /// <summary>
-  /// This class holds the state of all recent heartbeats and decides to reschedule jobs and set slaves offline
+  /// This class offers methods for cleaning up offline slaves and jobs
   /// </summary>
   public class LifecycleManager : ILifecycleManager {
@@ -19,47 +18,12 @@
       get { return ServiceLocator.Instance.AuthorizationManager; }
     }
-
-    private static object locker = new object();
-
-    // Windows-Forms timer is single threaded, so callbacks will be synchron
-    private System.Windows.Forms.Timer timer;
-
-    public ExecutionState ExecutionState {
-      get { return timer.Enabled ? ExecutionState.Started : Core.ExecutionState.Stopped; }
+    private ILogger log {
+      get { return LogFactory.GetLogger(this.GetType().Namespace); }
     }
 
-    public LifecycleManager() {
-      this.timer = new System.Windows.Forms.Timer();
-      this.timer.Tick += new EventHandler(timer_Tick);
-    }
-
-    public void Start() {
-      if (ExecutionState == Core.ExecutionState.Stopped) {
-        // kick off the event immediately
-        timer_Tick(this, EventArgs.Empty);
-
-        // start the timer
-        this.timer.Interval = (int)new TimeSpan(0, 0, 30).TotalMilliseconds;
-        this.timer.Start();
-      }
-    }
-
-    public void Stop() {
-      if (ExecutionState == Core.ExecutionState.Started) {
-        timer.Stop();
-      }
-    }
-
-    /// <summary>
-    /// This method is supposed to check if slaves are online
-    /// if not -> set them offline and check if they where calculating a job
-    /// </summary>
-    private void timer_Tick(object sender, EventArgs e) {
-      lock (locker) {
-        using (trans.OpenTransaction()) {
-          SetTimeoutSlavesOffline();
-          FinishParentJobs();
-        }
-      }
+    public void Cleanup() {
+      log.Log("LifecycleManager.Cleanup()");
+      SetTimeoutSlavesOffline();
+      FinishParentJobs();
     }
 
@@ -101,4 +65,5 @@
       }
     }
+
   }
 }
