Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ClientInformation.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ClientInformation.cs	(revision 7552)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ClientInformation.cs	(revision 7553)
@@ -54,5 +54,19 @@
 
     private ClientInformation() {
-      FetchClientInformationFromServer();
+      if (ClientInformationUtils.IsClientHeuristicLab()) {
+        FetchClientInformationFromServer();
+      } else {
+        // this means we are executed by an Hive slave, therefore we just get our machine id (e.g. for OKB Algs)
+        // because the slave has already done the registration process
+        GenerateLocalClientConfig();
+      }
+    }
+
+    private void GenerateLocalClientConfig() {
+      clientExists = true;
+      errorOccured = false;
+      occuredException = null;
+      clientInfo = new Client();
+      clientInfo.Id = ClientInformationUtils.GetUniqueMachineId();
     }
 
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ClientInformationUtils.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ClientInformationUtils.cs	(revision 7552)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ClientInformationUtils.cs	(revision 7553)
@@ -61,4 +61,8 @@
       FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
       return versionInfo.FileVersion;
+    }
+
+    public static bool IsClientHeuristicLab() {
+      return Process.GetCurrentProcess().ProcessName == Settings.Default.HLExeName;
     }
 
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/HeuristicLab.Clients.Access-3.3.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/HeuristicLab.Clients.Access-3.3.csproj	(revision 7552)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/HeuristicLab.Clients.Access-3.3.csproj	(revision 7553)
@@ -138,4 +138,9 @@
     <Compile Include="ServiceClients\UserGroup.cs" />
     <Compile Include="ServiceClients\UserGroupBase.cs" />
+    <Compile Include="Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
     <Compile Include="UserInformation.cs" />
     <Compile Include="Views\LightweightUserGroupSelectionDialog.cs">
@@ -178,4 +183,8 @@
     <None Include="Properties\AssemblyInfo.cs.frame" />
     <None Include="ServiceClients\GenerateServiceClients.cmd" />
+    <None Include="Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
     <None Include="UpdateLocalInstallation.cmd" />
   </ItemGroup>
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Settings.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Settings.Designer.cs	(revision 7553)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Settings.Designer.cs	(revision 7553)
@@ -0,0 +1,35 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.239
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Clients.Access {
+    
+    
+    [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.DefaultSettingValueAttribute("HeuristicLab 3.3")]
+        public string HLExeName {
+            get {
+                return ((string)(this["HLExeName"]));
+            }
+        }
+    }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Settings.settings
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Settings.settings	(revision 7553)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Settings.settings	(revision 7553)
@@ -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.Clients.Access" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="HLExeName" Type="System.String" Scope="Application">
+      <Value Profile="(Default)">HeuristicLab 3.3</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/UserInformation.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/UserInformation.cs	(revision 7552)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/UserInformation.cs	(revision 7553)
@@ -23,5 +23,4 @@
 using System.Collections.Generic;
 using System.ServiceModel.Security;
-using HeuristicLab.Clients.Common.Properties;
 
 namespace HeuristicLab.Clients.Access {
@@ -80,5 +79,5 @@
 
     private void FetchUserInformationFromServer() {
-      userName = Settings.Default.UserName;
+      userName = HeuristicLab.Clients.Common.Properties.Settings.Default.UserName;
 
       try {
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7552)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7553)
@@ -663,4 +663,30 @@
     #region UserGroupBase
     public IEnumerable<DT.UserGroupBase> GetAllLeightweightUsersAndGroups() {
+      //TODO: it must be possible to include a role so not all users are returned but only the ones who are allowed to use a certain service
+      List<DT.UserGroup> userGroups = new List<DT.UserGroup>();
+      List<DT.UserGroupBase> result = new List<DT.UserGroupBase>();
+
+      // this is just for generating users from asp.net authenticaton db; we should maybe provide an updatescript instead
+      List<Guid> accessUserGuids = null;
+      using (DA.ASPNETAuthenticationDataContext context = new DA.ASPNETAuthenticationDataContext()) {
+        var query = from u in context.aspnet_Users
+                    select u.UserId;
+        accessUserGuids = query.ToList();
+      }
+      var lightweightUsers = accessUserGuids.Select(x => BuildLightweightUserDto(x));
+
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from u in context.UserGroupBases.OfType<DA.UserGroup>()
+                    select Convert.ToDto(u);
+        userGroups = query.ToList();
+      }
+
+      result.AddRange(lightweightUsers);
+      result.AddRange(userGroups);
+
+      return result;
+    }
+
+    public IEnumerable<DT.UserGroupBase> GetLeightweightUsersAndGroups(IEnumerable<Guid> ids) {
       List<DA.UserGroupBase> dbUserGroupsBases = new List<DA.UserGroupBase>();
       List<DT.UserGroupBase> result = new List<DT.UserGroupBase>();
@@ -668,4 +694,5 @@
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
         var query = from u in context.UserGroupBases
+                    where ids.Contains(u.Id)
                     select u;
         dbUserGroupsBases = query.ToList();
@@ -683,27 +710,4 @@
       return result;
     }
-
-    public IEnumerable<DT.UserGroupBase> GetLeightweightUsersAndGroups(IEnumerable<Guid> ids) {
-      List<DA.UserGroupBase> dbUserGroupsBases = new List<DA.UserGroupBase>();
-      List<DT.UserGroupBase> result = new List<DT.UserGroupBase>();
-
-      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
-        var query = from u in context.UserGroupBases
-                    where ids.Contains(u.Id)
-                    select u;
-        dbUserGroupsBases = query.ToList();
-      }
-
-      foreach (var ugb in dbUserGroupsBases) {
-        if (ugb.GetType() == typeof(DA.User)) {
-          var user = BuildLightweightUserDto(ugb.Id);
-          result.Add(user);
-        } else if (ugb.GetType() == typeof(DA.UserGroup)) {
-          var group = Convert.ToDto(ugb as DA.UserGroup);
-          result.Add(group);
-        }
-      }
-      return result;
-    }
     #endregion
 
