Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/AccessClient.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/AccessClient.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/AccessClient.cs	(revision 7368)
@@ -0,0 +1,126 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.Clients.Common;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.Access {
+  [Item("AccessClient", "Access client.")]
+  public sealed class AccessClient : IContent {
+    private static AccessClient instance;
+    public static AccessClient Instance {
+      get {
+        if (instance == null) instance = new AccessClient();
+        return instance;
+      }
+    }
+
+    #region Properties
+    private ItemList<LightweightUser> users;
+    public ItemList<LightweightUser> Users {
+      get { return users; }
+    }
+    #endregion
+
+    private AccessClient() {
+      users = new ItemList<LightweightUser>();
+    }
+
+    #region Refresh
+    private void Refresh() {
+      OnRefreshing();
+      users = new ItemList<LightweightUser>();
+
+      try {
+        users.AddRange(CallRunCreationService<ItemList<LightweightUser>>(s => new ItemList<LightweightUser>(s.GetAllLightweightUsers())));
+      }
+      finally {
+        OnRefreshed();
+      }
+    }
+    public void RefreshAsync(Action<Exception> exceptionCallback) {
+      var call = new Func<Exception>(delegate() {
+        try {
+          Refresh();
+        }
+        catch (Exception ex) {
+          return ex;
+        }
+        return null;
+      });
+      call.BeginInvoke(delegate(IAsyncResult result) {
+        Exception ex = call.EndInvoke(result);
+        if (ex != null) exceptionCallback(ex);
+      }, null);
+    }
+    #endregion
+
+    public static void Store(IAccessItem item) {
+      //TODO: never used? delete?
+    }
+
+    #region Events
+    public event EventHandler Refreshing;
+    private void OnRefreshing() {
+      EventHandler handler = Refreshing;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler Refreshed;
+    private void OnRefreshed() {
+      EventHandler handler = Refreshed;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    #endregion
+
+    #region Helpers
+    private static void CallRunCreationService(Action<IAccessService> call) {
+      AccessServiceClient client = ClientFactory.CreateClient<AccessServiceClient, IAccessService>();
+      try {
+        call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    private static T CallRunCreationService<T>(Func<IAccessService, T> call) {
+      AccessServiceClient client = ClientFactory.CreateClient<AccessServiceClient, IAccessService>();
+      try {
+        return call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    #endregion
+  }
+}
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 7367)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/HeuristicLab.Clients.Access-3.3.csproj	(revision 7368)
@@ -10,5 +10,5 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>HeuristicLab.Clients.Access</RootNamespace>
-    <AssemblyName>HeuristicLab.Clients.Access</AssemblyName>
+    <AssemblyName>HeuristicLab.Clients.Access-3.3</AssemblyName>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
@@ -18,5 +18,5 @@
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -26,5 +26,5 @@
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -38,4 +38,44 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Clients.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Clients.Common-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core.Views-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
     <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
@@ -44,6 +84,8 @@
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
     <Reference Include="System.Runtime.Serialization" />
     <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -53,7 +95,30 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="AccessClient.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="ServiceClients\AccessServiceClient.cs" />
+    <Compile Include="ServiceClients\AccessItem.cs" />
+    <Compile Include="ServiceClients\IAccessItem.cs" />
+    <Compile Include="ServiceClients\LightweightUser.cs" />
+    <Compile Include="ServiceClients\UserGroupBase.cs" />
+    <Compile Include="Views\LightweightUserView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\LightweightUserView.Designer.cs">
+      <DependentUpon>LightweightUserView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\RefreshableLightweightUserView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\RefreshableLightweightUserView.Designer.cs">
+      <DependentUpon>RefreshableLightweightUserView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\RefreshableView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\RefreshableView.Designer.cs">
+      <DependentUpon>RefreshableView.cs</DependentUpon>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
@@ -65,7 +130,5 @@
     <None Include="Properties\AssemblyInfo.cs.frame" />
     <None Include="ServiceClients\GenerateServiceClients.cmd" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Views\" />
+    <None Include="UpdateLocalInstallation.cmd" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
@@ -77,4 +140,13 @@
 call PreBuildEvent.cmd</PreBuildEvent>
   </PropertyGroup>
+  <PropertyGroup>
+    <PostBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+set TargetPath=$(TargetPath)
+
+call UpdateLocalInstallation.cmd</PostBuildEvent>
+  </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.
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Plugin.cs.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Plugin.cs.frame	(revision 7367)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Plugin.cs.frame	(revision 7368)
@@ -26,5 +26,5 @@
   /// Plugin class for HeuristicLab.Clients.Access plugin.
   /// </summary>
-  [Plugin("HeuristicLab.Clients.OKB", "3.3.6.$WCREV$")]
+  [Plugin("HeuristicLab.Clients.Access", "3.3.6.$WCREV$")]
   [PluginFile("HeuristicLab.Clients.Access-3.3.dll", PluginFileType.Assembly)]  
   [PluginDependency("HeuristicLab.Clients.Common", "3.3")]
@@ -36,10 +36,5 @@
   [PluginDependency("HeuristicLab.Data", "3.3")]
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
-  [PluginDependency("HeuristicLab.Operators", "3.3")]
-  [PluginDependency("HeuristicLab.Optimization", "3.3")]
-  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
-  [PluginDependency("HeuristicLab.Optimizer", "3.3")]
-  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]  
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabClientsAccessPlugin : PluginBase {
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessItem.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessItem.cs	(revision 7368)
@@ -0,0 +1,122 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.ComponentModel;
+using System.Drawing;
+using System.Runtime.Serialization;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.Access {
+  [Item("AccessItem", "Base class for all AccessService items.")]
+  public partial class AccessItem : IAccessItem {
+    public virtual string ItemName {
+      get { return ItemAttribute.GetName(this.GetType()); }
+    }
+    public virtual string ItemDescription {
+      get { return ItemAttribute.GetDescription(this.GetType()); }
+    }
+    public Version ItemVersion {
+      get { return ItemAttribute.GetVersion(this.GetType()); }
+    }
+    public static Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.Database; }
+    }
+    public virtual Image ItemImage {
+      get {
+        if (Modified)
+          return HeuristicLab.Common.Resources.VSImageLibrary.DatabaseModified;
+        else
+          return ItemAttribute.GetImage(this.GetType());
+      }
+    }
+
+    private bool modified;
+    public bool Modified {
+      get { return modified; }
+      private set {
+        if (value != modified) {
+          modified = value;
+          OnModifiedChanged();
+          RaisePropertyChanged("Modified");
+          OnItemImageChanged();
+          RaisePropertyChanged("ItemImage");
+        }
+      }
+    }
+
+    protected AccessItem(AccessItem original, Cloner cloner) {
+      cloner.RegisterClonedObject(original, this);
+      modified = true;
+    }
+    protected AccessItem() {
+      modified = true;
+    }
+
+    [OnDeserialized]
+    private void OnDeserialized(StreamingContext context) {
+      modified = false;
+    }
+
+    public object Clone() {
+      return Clone(new Cloner());
+    }
+    public virtual IDeepCloneable Clone(Cloner cloner) {
+      return new AccessItem(this, cloner);
+    }
+
+    public override string ToString() {
+      return ItemName;
+    }
+
+    public void Store() {
+      AccessClient.Store(this);
+      Modified = false;
+    }
+
+    protected void RaisePropertyChanged(string propertyName) {
+      OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
+      if ((propertyName != "Id") && (propertyName != "Modified") && (propertyName != "ItemImage")) {
+        Modified = true;
+      }
+    }
+    protected virtual void OnPropertyChanged(PropertyChangedEventArgs e) {
+      PropertyChangedEventHandler handler = PropertyChanged;
+      if (handler != null) handler(this, e);
+    }
+    public event EventHandler ModifiedChanged;
+    protected virtual void OnModifiedChanged() {
+      EventHandler handler = ModifiedChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler ItemImageChanged;
+    protected virtual void OnItemImageChanged() {
+      EventHandler handler = ItemImageChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      EventHandler handler = ToStringChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs	(revision 7367)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs	(revision 7368)
@@ -9,1687 +9,1390 @@
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.Clients.Access
-{
-    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="AccessItem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroupBase))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientError))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Resource))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientConfiguration))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientType))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Country))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.OperatingSystem))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientLog))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Role))]
-    public partial class AccessItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-    {
-        
-        [System.NonSerializedAttribute()]
-        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-        
-        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
-        {
-            get
-            {
-                return this.extensionDataField;
-            }
-            set
-            {
-                this.extensionDataField = value;
-            }
-        }
-        
-        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="UserGroupBase", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
-    public partial class UserGroupBase : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="User", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class User : HeuristicLab.Clients.Access.UserGroupBase
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string CommentField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.DateTime CreationDateField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string EmailField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string FullNameField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private bool IsApprovedField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.DateTime LastActivityDateField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.DateTime LastLoginDateField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.DateTime LastPasswordChangedDateField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string UserNameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Comment
-        {
-            get
-            {
-                return this.CommentField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.CommentField, value) != true))
-                {
-                    this.CommentField = value;
-                    this.RaisePropertyChanged("Comment");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.DateTime CreationDate
-        {
-            get
-            {
-                return this.CreationDateField;
-            }
-            set
-            {
-                if ((this.CreationDateField.Equals(value) != true))
-                {
-                    this.CreationDateField = value;
-                    this.RaisePropertyChanged("CreationDate");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Email
-        {
-            get
-            {
-                return this.EmailField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.EmailField, value) != true))
-                {
-                    this.EmailField = value;
-                    this.RaisePropertyChanged("Email");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string FullName
-        {
-            get
-            {
-                return this.FullNameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.FullNameField, value) != true))
-                {
-                    this.FullNameField = value;
-                    this.RaisePropertyChanged("FullName");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public bool IsApproved
-        {
-            get
-            {
-                return this.IsApprovedField;
-            }
-            set
-            {
-                if ((this.IsApprovedField.Equals(value) != true))
-                {
-                    this.IsApprovedField = value;
-                    this.RaisePropertyChanged("IsApproved");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.DateTime LastActivityDate
-        {
-            get
-            {
-                return this.LastActivityDateField;
-            }
-            set
-            {
-                if ((this.LastActivityDateField.Equals(value) != true))
-                {
-                    this.LastActivityDateField = value;
-                    this.RaisePropertyChanged("LastActivityDate");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.DateTime LastLoginDate
-        {
-            get
-            {
-                return this.LastLoginDateField;
-            }
-            set
-            {
-                if ((this.LastLoginDateField.Equals(value) != true))
-                {
-                    this.LastLoginDateField = value;
-                    this.RaisePropertyChanged("LastLoginDate");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.DateTime LastPasswordChangedDate
-        {
-            get
-            {
-                return this.LastPasswordChangedDateField;
-            }
-            set
-            {
-                if ((this.LastPasswordChangedDateField.Equals(value) != true))
-                {
-                    this.LastPasswordChangedDateField = value;
-                    this.RaisePropertyChanged("LastPasswordChangedDate");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string UserName
-        {
-            get
-            {
-                return this.UserNameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.UserNameField, value) != true))
-                {
-                    this.UserNameField = value;
-                    this.RaisePropertyChanged("UserName");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="LightweightUser", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class LightweightUser : HeuristicLab.Clients.Access.UserGroupBase
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string FullNameField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string UserNameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string FullName
-        {
-            get
-            {
-                return this.FullNameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.FullNameField, value) != true))
-                {
-                    this.FullNameField = value;
-                    this.RaisePropertyChanged("FullName");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string UserName
-        {
-            get
-            {
-                return this.UserNameField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.UserNameField, value) != true))
-                {
-                    this.UserNameField = value;
-                    this.RaisePropertyChanged("UserName");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="UserGroup", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class UserGroup : HeuristicLab.Clients.Access.UserGroupBase
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string NameField;
-        
-        [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.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="ClientError", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class ClientError : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid ClientIdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string ConfigDumpField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string ExceptionField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.DateTime TimestampField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string UserCommentField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid UserIdField;
-        
-        [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 string ConfigDump
-        {
-            get
-            {
-                return this.ConfigDumpField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.ConfigDumpField, value) != true))
-                {
-                    this.ConfigDumpField = value;
-                    this.RaisePropertyChanged("ConfigDump");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Exception
-        {
-            get
-            {
-                return this.ExceptionField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.ExceptionField, value) != true))
-                {
-                    this.ExceptionField = value;
-                    this.RaisePropertyChanged("Exception");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.DateTime Timestamp
-        {
-            get
-            {
-                return this.TimestampField;
-            }
-            set
-            {
-                if ((this.TimestampField.Equals(value) != true))
-                {
-                    this.TimestampField = value;
-                    this.RaisePropertyChanged("Timestamp");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string UserComment
-        {
-            get
-            {
-                return this.UserCommentField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.UserCommentField, value) != true))
-                {
-                    this.UserCommentField = value;
-                    this.RaisePropertyChanged("UserComment");
-                }
-            }
-        }
-        
-        [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");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Resource", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
-    public partial class Resource : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string DescriptionField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Description
-        {
-            get
-            {
-                return this.DescriptionField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.DescriptionField, value) != true))
-                {
-                    this.DescriptionField = value;
-                    this.RaisePropertyChanged("Description");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-        
-        [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.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Client", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class Client : HeuristicLab.Clients.Access.Resource
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private HeuristicLab.Clients.Access.ClientConfiguration ClientConfigurationField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private HeuristicLab.Clients.Access.ClientType ClientTypeField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private HeuristicLab.Clients.Access.Country CountryField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string HeuristicLabVersionField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private int MemorySizeField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private int NumberOfCoresField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private HeuristicLab.Clients.Access.OperatingSystem OperatingSystemField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string ProcessorTypeField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.DateTime TimestampField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public HeuristicLab.Clients.Access.ClientConfiguration ClientConfiguration
-        {
-            get
-            {
-                return this.ClientConfigurationField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.ClientConfigurationField, value) != true))
-                {
-                    this.ClientConfigurationField = value;
-                    this.RaisePropertyChanged("ClientConfiguration");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public HeuristicLab.Clients.Access.ClientType ClientType
-        {
-            get
-            {
-                return this.ClientTypeField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.ClientTypeField, value) != true))
-                {
-                    this.ClientTypeField = value;
-                    this.RaisePropertyChanged("ClientType");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public HeuristicLab.Clients.Access.Country Country
-        {
-            get
-            {
-                return this.CountryField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.CountryField, value) != true))
-                {
-                    this.CountryField = value;
-                    this.RaisePropertyChanged("Country");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string HeuristicLabVersion
-        {
-            get
-            {
-                return this.HeuristicLabVersionField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.HeuristicLabVersionField, value) != true))
-                {
-                    this.HeuristicLabVersionField = value;
-                    this.RaisePropertyChanged("HeuristicLabVersion");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public int MemorySize
-        {
-            get
-            {
-                return this.MemorySizeField;
-            }
-            set
-            {
-                if ((this.MemorySizeField.Equals(value) != true))
-                {
-                    this.MemorySizeField = value;
-                    this.RaisePropertyChanged("MemorySize");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public int NumberOfCores
-        {
-            get
-            {
-                return this.NumberOfCoresField;
-            }
-            set
-            {
-                if ((this.NumberOfCoresField.Equals(value) != true))
-                {
-                    this.NumberOfCoresField = value;
-                    this.RaisePropertyChanged("NumberOfCores");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public HeuristicLab.Clients.Access.OperatingSystem OperatingSystem
-        {
-            get
-            {
-                return this.OperatingSystemField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.OperatingSystemField, value) != true))
-                {
-                    this.OperatingSystemField = value;
-                    this.RaisePropertyChanged("OperatingSystem");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string ProcessorType
-        {
-            get
-            {
-                return this.ProcessorTypeField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.ProcessorTypeField, value) != true))
-                {
-                    this.ProcessorTypeField = value;
-                    this.RaisePropertyChanged("ProcessorType");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.DateTime Timestamp
-        {
-            get
-            {
-                return this.TimestampField;
-            }
-            set
-            {
-                if ((this.TimestampField.Equals(value) != true))
-                {
-                    this.TimestampField = value;
-                    this.RaisePropertyChanged("Timestamp");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="ClientConfiguration", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class ClientConfiguration : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string DescriptionField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string HashField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Description
-        {
-            get
-            {
-                return this.DescriptionField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.DescriptionField, value) != true))
-                {
-                    this.DescriptionField = value;
-                    this.RaisePropertyChanged("Description");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Hash
-        {
-            get
-            {
-                return this.HashField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.HashField, value) != true))
-                {
-                    this.HashField = value;
-                    this.RaisePropertyChanged("Hash");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="ClientType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class ClientType : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-        
-        [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.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Country", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class Country : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-        
-        [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.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="OperatingSystem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class OperatingSystem : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string NameField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-        
-        [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.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="ClientGroup", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class ClientGroup : HeuristicLab.Clients.Access.Resource
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="ClientLog", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class ClientLog : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string MessageField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid ResourceIdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.DateTime TimestampField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Message
-        {
-            get
-            {
-                return this.MessageField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.MessageField, value) != true))
-                {
-                    this.MessageField = value;
-                    this.RaisePropertyChanged("Message");
-                }
-            }
-        }
-        
-        [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 Timestamp
-        {
-            get
-            {
-                return this.TimestampField;
-            }
-            set
-            {
-                if ((this.TimestampField.Equals(value) != true))
-                {
-                    this.TimestampField = value;
-                    this.RaisePropertyChanged("Timestamp");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Role", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class Role : HeuristicLab.Clients.Access.AccessItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private string NameField;
-        
-        [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.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="ClientGroupMapping", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class ClientGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-    {
-        
-        [System.NonSerializedAttribute()]
-        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid ChildField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid ParentField;
-        
-        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
-        {
-            get
-            {
-                return this.extensionDataField;
-            }
-            set
-            {
-                this.extensionDataField = value;
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Child
-        {
-            get
-            {
-                return this.ChildField;
-            }
-            set
-            {
-                if ((this.ChildField.Equals(value) != true))
-                {
-                    this.ChildField = value;
-                    this.RaisePropertyChanged("Child");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Parent
-        {
-            get
-            {
-                return this.ParentField;
-            }
-            set
-            {
-                if ((this.ParentField.Equals(value) != true))
-                {
-                    this.ParentField = value;
-                    this.RaisePropertyChanged("Parent");
-                }
-            }
-        }
-        
-        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="UserGroupMapping", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-        "")]
-    [System.SerializableAttribute()]
-    public partial class UserGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-    {
-        
-        [System.NonSerializedAttribute()]
-        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid ChildField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid ParentField;
-        
-        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
-        {
-            get
-            {
-                return this.extensionDataField;
-            }
-            set
-            {
-                this.extensionDataField = value;
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Child
-        {
-            get
-            {
-                return this.ChildField;
-            }
-            set
-            {
-                if ((this.ChildField.Equals(value) != true))
-                {
-                    this.ChildField = value;
-                    this.RaisePropertyChanged("Child");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Parent
-        {
-            get
-            {
-                return this.ParentField;
-            }
-            set
-            {
-                if ((this.ParentField.Equals(value) != true))
-                {
-                    this.ParentField = value;
-                    this.RaisePropertyChanged("Parent");
-                }
-            }
-        }
-        
-        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="HeuristicLab.Clients.Access.IAccessService")]
-    public interface IAccessService
-    {
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddRole", ReplyAction="http://tempuri.org/IAccessService/AddRoleResponse")]
-        HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteRole", ReplyAction="http://tempuri.org/IAccessService/DeleteRoleResponse")]
-        void DeleteRole(HeuristicLab.Clients.Access.Role role);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserRoles", ReplyAction="http://tempuri.org/IAccessService/GetUserRolesResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddRoleToGroup", ReplyAction="http://tempuri.org/IAccessService/AddRoleToGroupResponse")]
-        void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveRoleFromGroup", ReplyAction="http://tempuri.org/IAccessService/RemoveRoleFromGroupResponse")]
-        void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/ReportError", ReplyAction="http://tempuri.org/IAccessService/ReportErrorResponse")]
-        void ReportError(HeuristicLab.Clients.Access.ClientError error);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientErrors", ReplyAction="http://tempuri.org/IAccessService/GetClientErrorsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetLastClientErrors", ReplyAction="http://tempuri.org/IAccessService/GetLastClientErrorsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteError", ReplyAction="http://tempuri.org/IAccessService/DeleteErrorResponse")]
-        void DeleteError(HeuristicLab.Clients.Access.ClientError error);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/ClientExists", ReplyAction="http://tempuri.org/IAccessService/ClientExistsResponse")]
-        bool ClientExists(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClient", ReplyAction="http://tempuri.org/IAccessService/GetClientResponse")]
-        HeuristicLab.Clients.Access.Client GetClient(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClients", ReplyAction="http://tempuri.org/IAccessService/GetClientsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllClients", ReplyAction="http://tempuri.org/IAccessService/GetAllClientsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddClient", ReplyAction="http://tempuri.org/IAccessService/AddClientResponse")]
-        System.Guid AddClient(HeuristicLab.Clients.Access.Client client);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateClient", ReplyAction="http://tempuri.org/IAccessService/UpdateClientResponse")]
-        void UpdateClient(HeuristicLab.Clients.Access.Client client);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteClient", ReplyAction="http://tempuri.org/IAccessService/DeleteClientResponse")]
-        void DeleteClient(HeuristicLab.Clients.Access.Client client);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllClientGroups", ReplyAction="http://tempuri.org/IAccessService/GetAllClientGroupsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientGroups", ReplyAction="http://tempuri.org/IAccessService/GetClientGroupsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddClientGroup", ReplyAction="http://tempuri.org/IAccessService/AddClientGroupResponse")]
-        System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateClientGroup", ReplyAction="http://tempuri.org/IAccessService/UpdateClientGroupResponse")]
-        void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteClientGroup", ReplyAction="http://tempuri.org/IAccessService/DeleteClientGroupResponse")]
-        void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddResourceToGroup", ReplyAction="http://tempuri.org/IAccessService/AddResourceToGroupResponse")]
-        void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveResourceFromGroup", ReplyAction="http://tempuri.org/IAccessService/RemoveResourceFromGroupResponse")]
-        void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientGroupMapping", ReplyAction="http://tempuri.org/IAccessService/GetClientGroupMappingResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetResources", ReplyAction="http://tempuri.org/IAccessService/GetResourcesResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetLastClientLog", ReplyAction="http://tempuri.org/IAccessService/GetLastClientLogResponse")]
-        HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientLogs", ReplyAction="http://tempuri.org/IAccessService/GetClientLogsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientLogsSince", ReplyAction="http://tempuri.org/IAccessService/GetClientLogsSinceResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddClientLog", ReplyAction="http://tempuri.org/IAccessService/AddClientLogResponse")]
-        void AddClientLog(HeuristicLab.Clients.Access.ClientLog log);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteClientLog", ReplyAction="http://tempuri.org/IAccessService/DeleteClientLogResponse")]
-        void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/Login", ReplyAction="http://tempuri.org/IAccessService/LoginResponse")]
-        HeuristicLab.Clients.Access.User Login();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllLightweightUsers", ReplyAction="http://tempuri.org/IAccessService/GetAllLightweightUsersResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllUsers", ReplyAction="http://tempuri.org/IAccessService/GetAllUsersResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUsers", ReplyAction="http://tempuri.org/IAccessService/GetUsersResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUser", ReplyAction="http://tempuri.org/IAccessService/AddUserResponse")]
-        HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteUser", ReplyAction="http://tempuri.org/IAccessService/DeleteUserResponse")]
-        void DeleteUser(HeuristicLab.Clients.Access.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateUser", ReplyAction="http://tempuri.org/IAccessService/UpdateUserResponse")]
-        void UpdateUser(HeuristicLab.Clients.Access.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUserToRole", ReplyAction="http://tempuri.org/IAccessService/AddUserToRoleResponse")]
-        void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveUserFromRole", ReplyAction="http://tempuri.org/IAccessService/RemoveUserFromRoleResponse")]
-        void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/ResetPassword", ReplyAction="http://tempuri.org/IAccessService/ResetPasswordResponse")]
-        bool ResetPassword(HeuristicLab.Clients.Access.User user, string oldPassword, string newPassword);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllUserGroups", ReplyAction="http://tempuri.org/IAccessService/GetAllUserGroupsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserGroupsOfUser", ReplyAction="http://tempuri.org/IAccessService/GetUserGroupsOfUserResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserGroups", ReplyAction="http://tempuri.org/IAccessService/GetUserGroupsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUserGroup", ReplyAction="http://tempuri.org/IAccessService/AddUserGroupResponse")]
-        System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateUserGroup", ReplyAction="http://tempuri.org/IAccessService/UpdateUserGroupResponse")]
-        void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteUserGroup", ReplyAction="http://tempuri.org/IAccessService/DeleteUserGroupResponse")]
-        void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUserGroupBaseToGroup", ReplyAction="http://tempuri.org/IAccessService/AddUserGroupBaseToGroupResponse")]
-        void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroup", ReplyAction="http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroupResponse")]
-        void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUsersAndGroups", ReplyAction="http://tempuri.org/IAccessService/GetUsersAndGroupsResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserGroupMapping", ReplyAction="http://tempuri.org/IAccessService/GetUserGroupMappingResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetRoles", ReplyAction="http://tempuri.org/IAccessService/GetRolesResponse")]
-        System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles();
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-    public interface IAccessServiceChannel : HeuristicLab.Clients.Access.IAccessService, System.ServiceModel.IClientChannel
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-    public partial class AccessServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.Access.IAccessService>, HeuristicLab.Clients.Access.IAccessService
-    {
-        
-        public AccessServiceClient()
-        {
-        }
-        
-        public AccessServiceClient(string endpointConfigurationName) : 
-                base(endpointConfigurationName)
-        {
-        }
-        
-        public AccessServiceClient(string endpointConfigurationName, string remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public AccessServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public AccessServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(binding, remoteAddress)
-        {
-        }
-        
-        public HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role)
-        {
-            return base.Channel.AddRole(role);
-        }
-        
-        public void DeleteRole(HeuristicLab.Clients.Access.Role role)
-        {
-            base.Channel.DeleteRole(role);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user)
-        {
-            return base.Channel.GetUserRoles(user);
-        }
-        
-        public void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role)
-        {
-            base.Channel.AddRoleToGroup(userGroup, role);
-        }
-        
-        public void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role)
-        {
-            base.Channel.RemoveRoleFromGroup(userGroup, role);
-        }
-        
-        public void ReportError(HeuristicLab.Clients.Access.ClientError error)
-        {
-            base.Channel.ReportError(error);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors()
-        {
-            return base.Channel.GetClientErrors();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate)
-        {
-            return base.Channel.GetLastClientErrors(startDate);
-        }
-        
-        public void DeleteError(HeuristicLab.Clients.Access.ClientError error)
-        {
-            base.Channel.DeleteError(error);
-        }
-        
-        public bool ClientExists(System.Guid id)
-        {
-            return base.Channel.ClientExists(id);
-        }
-        
-        public HeuristicLab.Clients.Access.Client GetClient(System.Guid id)
-        {
-            return base.Channel.GetClient(id);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids)
-        {
-            return base.Channel.GetClients(ids);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients()
-        {
-            return base.Channel.GetAllClients();
-        }
-        
-        public System.Guid AddClient(HeuristicLab.Clients.Access.Client client)
-        {
-            return base.Channel.AddClient(client);
-        }
-        
-        public void UpdateClient(HeuristicLab.Clients.Access.Client client)
-        {
-            base.Channel.UpdateClient(client);
-        }
-        
-        public void DeleteClient(HeuristicLab.Clients.Access.Client client)
-        {
-            base.Channel.DeleteClient(client);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups()
-        {
-            return base.Channel.GetAllClientGroups();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids)
-        {
-            return base.Channel.GetClientGroups(ids);
-        }
-        
-        public System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group)
-        {
-            return base.Channel.AddClientGroup(group);
-        }
-        
-        public void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group)
-        {
-            base.Channel.UpdateClientGroup(group);
-        }
-        
-        public void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group)
-        {
-            base.Channel.DeleteClientGroup(group);
-        }
-        
-        public void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group)
-        {
-            base.Channel.AddResourceToGroup(resource, group);
-        }
-        
-        public void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group)
-        {
-            base.Channel.RemoveResourceFromGroup(resource, group);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping()
-        {
-            return base.Channel.GetClientGroupMapping();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources()
-        {
-            return base.Channel.GetResources();
-        }
-        
-        public HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId)
-        {
-            return base.Channel.GetLastClientLog(clientId);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId)
-        {
-            return base.Channel.GetClientLogs(clientId);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate)
-        {
-            return base.Channel.GetClientLogsSince(startDate);
-        }
-        
-        public void AddClientLog(HeuristicLab.Clients.Access.ClientLog log)
-        {
-            base.Channel.AddClientLog(log);
-        }
-        
-        public void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log)
-        {
-            base.Channel.DeleteClientLog(log);
-        }
-        
-        public HeuristicLab.Clients.Access.User Login()
-        {
-            return base.Channel.Login();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers()
-        {
-            return base.Channel.GetAllLightweightUsers();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers()
-        {
-            return base.Channel.GetAllUsers();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids)
-        {
-            return base.Channel.GetUsers(ids);
-        }
-        
-        public HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user)
-        {
-            return base.Channel.AddUser(user);
-        }
-        
-        public void DeleteUser(HeuristicLab.Clients.Access.User user)
-        {
-            base.Channel.DeleteUser(user);
-        }
-        
-        public void UpdateUser(HeuristicLab.Clients.Access.User user)
-        {
-            base.Channel.UpdateUser(user);
-        }
-        
-        public void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user)
-        {
-            base.Channel.AddUserToRole(role, user);
-        }
-        
-        public void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user)
-        {
-            base.Channel.RemoveUserFromRole(role, user);
-        }
-        
-        public bool ResetPassword(HeuristicLab.Clients.Access.User user, string oldPassword, string newPassword)
-        {
-            return base.Channel.ResetPassword(user, oldPassword, newPassword);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups()
-        {
-            return base.Channel.GetAllUserGroups();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId)
-        {
-            return base.Channel.GetUserGroupsOfUser(userId);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids)
-        {
-            return base.Channel.GetUserGroups(ids);
-        }
-        
-        public System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group)
-        {
-            return base.Channel.AddUserGroup(group);
-        }
-        
-        public void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group)
-        {
-            base.Channel.UpdateUserGroup(group);
-        }
-        
-        public void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group)
-        {
-            base.Channel.DeleteUserGroup(group);
-        }
-        
-        public void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group)
-        {
-            base.Channel.AddUserGroupBaseToGroup(resource, group);
-        }
-        
-        public void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group)
-        {
-            base.Channel.RemoveUserGroupBaseFromGroup(resource, group);
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups()
-        {
-            return base.Channel.GetUsersAndGroups();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping()
-        {
-            return base.Channel.GetUserGroupMapping();
-        }
-        
-        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles()
-        {
-            return base.Channel.GetRoles();
-        }
-    }
+namespace HeuristicLab.Clients.Access {
+
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AccessItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroupBase))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientError))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Resource))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientConfiguration))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientType))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Country))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.OperatingSystem))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientLog))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Role))]
+  public partial class AccessItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    [System.NonSerializedAttribute()]
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "UserGroupBase", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
+  public partial class UserGroupBase : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "User", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class User : HeuristicLab.Clients.Access.UserGroupBase {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string CommentField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime CreationDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string EmailField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string FullNameField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private bool IsApprovedField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime LastActivityDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime LastLoginDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime LastPasswordChangedDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string UserNameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Comment {
+      get {
+        return this.CommentField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.CommentField, value) != true)) {
+          this.CommentField = value;
+          this.RaisePropertyChanged("Comment");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime CreationDate {
+      get {
+        return this.CreationDateField;
+      }
+      set {
+        if ((this.CreationDateField.Equals(value) != true)) {
+          this.CreationDateField = value;
+          this.RaisePropertyChanged("CreationDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Email {
+      get {
+        return this.EmailField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.EmailField, value) != true)) {
+          this.EmailField = value;
+          this.RaisePropertyChanged("Email");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string FullName {
+      get {
+        return this.FullNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.FullNameField, value) != true)) {
+          this.FullNameField = value;
+          this.RaisePropertyChanged("FullName");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool IsApproved {
+      get {
+        return this.IsApprovedField;
+      }
+      set {
+        if ((this.IsApprovedField.Equals(value) != true)) {
+          this.IsApprovedField = value;
+          this.RaisePropertyChanged("IsApproved");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime LastActivityDate {
+      get {
+        return this.LastActivityDateField;
+      }
+      set {
+        if ((this.LastActivityDateField.Equals(value) != true)) {
+          this.LastActivityDateField = value;
+          this.RaisePropertyChanged("LastActivityDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime LastLoginDate {
+      get {
+        return this.LastLoginDateField;
+      }
+      set {
+        if ((this.LastLoginDateField.Equals(value) != true)) {
+          this.LastLoginDateField = value;
+          this.RaisePropertyChanged("LastLoginDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime LastPasswordChangedDate {
+      get {
+        return this.LastPasswordChangedDateField;
+      }
+      set {
+        if ((this.LastPasswordChangedDateField.Equals(value) != true)) {
+          this.LastPasswordChangedDateField = value;
+          this.RaisePropertyChanged("LastPasswordChangedDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string UserName {
+      get {
+        return this.UserNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.UserNameField, value) != true)) {
+          this.UserNameField = value;
+          this.RaisePropertyChanged("UserName");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "UserGroup", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class UserGroup : HeuristicLab.Clients.Access.UserGroupBase {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string NameField;
+
+    [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.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "LightweightUser", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class LightweightUser : HeuristicLab.Clients.Access.UserGroupBase {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string FullNameField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string UserNameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string FullName {
+      get {
+        return this.FullNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.FullNameField, value) != true)) {
+          this.FullNameField = value;
+          this.RaisePropertyChanged("FullName");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string UserName {
+      get {
+        return this.UserNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.UserNameField, value) != true)) {
+          this.UserNameField = value;
+          this.RaisePropertyChanged("UserName");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientError", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class ClientError : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid ClientIdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string ConfigDumpField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string ExceptionField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime TimestampField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string UserCommentField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid UserIdField;
+
+    [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 string ConfigDump {
+      get {
+        return this.ConfigDumpField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ConfigDumpField, value) != true)) {
+          this.ConfigDumpField = value;
+          this.RaisePropertyChanged("ConfigDump");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Exception {
+      get {
+        return this.ExceptionField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ExceptionField, value) != true)) {
+          this.ExceptionField = value;
+          this.RaisePropertyChanged("Exception");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime Timestamp {
+      get {
+        return this.TimestampField;
+      }
+      set {
+        if ((this.TimestampField.Equals(value) != true)) {
+          this.TimestampField = value;
+          this.RaisePropertyChanged("Timestamp");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string UserComment {
+      get {
+        return this.UserCommentField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.UserCommentField, value) != true)) {
+          this.UserCommentField = value;
+          this.RaisePropertyChanged("UserComment");
+        }
+      }
+    }
+
+    [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");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Resource", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
+  public partial class Resource : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string DescriptionField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string NameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Description {
+      get {
+        return this.DescriptionField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.DescriptionField, value) != true)) {
+          this.DescriptionField = value;
+          this.RaisePropertyChanged("Description");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+
+    [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.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Client", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class Client : HeuristicLab.Clients.Access.Resource {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private HeuristicLab.Clients.Access.ClientConfiguration ClientConfigurationField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private HeuristicLab.Clients.Access.ClientType ClientTypeField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private HeuristicLab.Clients.Access.Country CountryField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string HeuristicLabVersionField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private int MemorySizeField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private int NumberOfCoresField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private HeuristicLab.Clients.Access.OperatingSystem OperatingSystemField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string ProcessorTypeField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime TimestampField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.Access.ClientConfiguration ClientConfiguration {
+      get {
+        return this.ClientConfigurationField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ClientConfigurationField, value) != true)) {
+          this.ClientConfigurationField = value;
+          this.RaisePropertyChanged("ClientConfiguration");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.Access.ClientType ClientType {
+      get {
+        return this.ClientTypeField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ClientTypeField, value) != true)) {
+          this.ClientTypeField = value;
+          this.RaisePropertyChanged("ClientType");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.Access.Country Country {
+      get {
+        return this.CountryField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.CountryField, value) != true)) {
+          this.CountryField = value;
+          this.RaisePropertyChanged("Country");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string HeuristicLabVersion {
+      get {
+        return this.HeuristicLabVersionField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.HeuristicLabVersionField, value) != true)) {
+          this.HeuristicLabVersionField = value;
+          this.RaisePropertyChanged("HeuristicLabVersion");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public int MemorySize {
+      get {
+        return this.MemorySizeField;
+      }
+      set {
+        if ((this.MemorySizeField.Equals(value) != true)) {
+          this.MemorySizeField = value;
+          this.RaisePropertyChanged("MemorySize");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public int NumberOfCores {
+      get {
+        return this.NumberOfCoresField;
+      }
+      set {
+        if ((this.NumberOfCoresField.Equals(value) != true)) {
+          this.NumberOfCoresField = value;
+          this.RaisePropertyChanged("NumberOfCores");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.Access.OperatingSystem OperatingSystem {
+      get {
+        return this.OperatingSystemField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.OperatingSystemField, value) != true)) {
+          this.OperatingSystemField = value;
+          this.RaisePropertyChanged("OperatingSystem");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string ProcessorType {
+      get {
+        return this.ProcessorTypeField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ProcessorTypeField, value) != true)) {
+          this.ProcessorTypeField = value;
+          this.RaisePropertyChanged("ProcessorType");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime Timestamp {
+      get {
+        return this.TimestampField;
+      }
+      set {
+        if ((this.TimestampField.Equals(value) != true)) {
+          this.TimestampField = value;
+          this.RaisePropertyChanged("Timestamp");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientConfiguration", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class ClientConfiguration : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string DescriptionField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string HashField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Description {
+      get {
+        return this.DescriptionField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.DescriptionField, value) != true)) {
+          this.DescriptionField = value;
+          this.RaisePropertyChanged("Description");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Hash {
+      get {
+        return this.HashField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.HashField, value) != true)) {
+          this.HashField = value;
+          this.RaisePropertyChanged("Hash");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class ClientType : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string NameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+
+    [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.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Country", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class Country : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string NameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+
+    [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.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "OperatingSystem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class OperatingSystem : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string NameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+
+    [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.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientGroup", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class ClientGroup : HeuristicLab.Clients.Access.Resource {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientLog", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class ClientLog : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string MessageField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid ResourceIdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime TimestampField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Message {
+      get {
+        return this.MessageField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.MessageField, value) != true)) {
+          this.MessageField = value;
+          this.RaisePropertyChanged("Message");
+        }
+      }
+    }
+
+    [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 Timestamp {
+      get {
+        return this.TimestampField;
+      }
+      set {
+        if ((this.TimestampField.Equals(value) != true)) {
+          this.TimestampField = value;
+          this.RaisePropertyChanged("Timestamp");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Role", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class Role : HeuristicLab.Clients.Access.AccessItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string NameField;
+
+    [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.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientGroupMapping", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class ClientGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    [System.NonSerializedAttribute()]
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid ChildField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid ParentField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Child {
+      get {
+        return this.ChildField;
+      }
+      set {
+        if ((this.ChildField.Equals(value) != true)) {
+          this.ChildField = value;
+          this.RaisePropertyChanged("Child");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Parent {
+      get {
+        return this.ParentField;
+      }
+      set {
+        if ((this.ParentField.Equals(value) != true)) {
+          this.ParentField = value;
+          this.RaisePropertyChanged("Parent");
+        }
+      }
+    }
+
+    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 = "UserGroupMapping", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+      "")]
+  [System.SerializableAttribute()]
+  public partial class UserGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    [System.NonSerializedAttribute()]
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid ChildField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid ParentField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Child {
+      get {
+        return this.ChildField;
+      }
+      set {
+        if ((this.ChildField.Equals(value) != true)) {
+          this.ChildField = value;
+          this.RaisePropertyChanged("Child");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Parent {
+      get {
+        return this.ParentField;
+      }
+      set {
+        if ((this.ParentField.Equals(value) != true)) {
+          this.ParentField = value;
+          this.RaisePropertyChanged("Parent");
+        }
+      }
+    }
+
+    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 = "HeuristicLab.Clients.Access.IAccessService")]
+  public interface IAccessService {
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddRole", ReplyAction = "http://tempuri.org/IAccessService/AddRoleResponse")]
+    HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteRole", ReplyAction = "http://tempuri.org/IAccessService/DeleteRoleResponse")]
+    void DeleteRole(HeuristicLab.Clients.Access.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserRoles", ReplyAction = "http://tempuri.org/IAccessService/GetUserRolesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddRoleToGroup", ReplyAction = "http://tempuri.org/IAccessService/AddRoleToGroupResponse")]
+    void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveRoleFromGroup", ReplyAction = "http://tempuri.org/IAccessService/RemoveRoleFromGroupResponse")]
+    void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/ReportError", ReplyAction = "http://tempuri.org/IAccessService/ReportErrorResponse")]
+    void ReportError(HeuristicLab.Clients.Access.ClientError error);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientErrors", ReplyAction = "http://tempuri.org/IAccessService/GetClientErrorsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLastClientErrors", ReplyAction = "http://tempuri.org/IAccessService/GetLastClientErrorsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteError", ReplyAction = "http://tempuri.org/IAccessService/DeleteErrorResponse")]
+    void DeleteError(HeuristicLab.Clients.Access.ClientError error);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/ClientExists", ReplyAction = "http://tempuri.org/IAccessService/ClientExistsResponse")]
+    bool ClientExists(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClient", ReplyAction = "http://tempuri.org/IAccessService/GetClientResponse")]
+    HeuristicLab.Clients.Access.Client GetClient(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClients", ReplyAction = "http://tempuri.org/IAccessService/GetClientsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllClients", ReplyAction = "http://tempuri.org/IAccessService/GetAllClientsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddClient", ReplyAction = "http://tempuri.org/IAccessService/AddClientResponse")]
+    System.Guid AddClient(HeuristicLab.Clients.Access.Client client);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateClient", ReplyAction = "http://tempuri.org/IAccessService/UpdateClientResponse")]
+    void UpdateClient(HeuristicLab.Clients.Access.Client client);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteClient", ReplyAction = "http://tempuri.org/IAccessService/DeleteClientResponse")]
+    void DeleteClient(HeuristicLab.Clients.Access.Client client);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllClientGroups", ReplyAction = "http://tempuri.org/IAccessService/GetAllClientGroupsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientGroups", ReplyAction = "http://tempuri.org/IAccessService/GetClientGroupsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddClientGroup", ReplyAction = "http://tempuri.org/IAccessService/AddClientGroupResponse")]
+    System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateClientGroup", ReplyAction = "http://tempuri.org/IAccessService/UpdateClientGroupResponse")]
+    void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteClientGroup", ReplyAction = "http://tempuri.org/IAccessService/DeleteClientGroupResponse")]
+    void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddResourceToGroup", ReplyAction = "http://tempuri.org/IAccessService/AddResourceToGroupResponse")]
+    void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveResourceFromGroup", ReplyAction = "http://tempuri.org/IAccessService/RemoveResourceFromGroupResponse")]
+    void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientGroupMapping", ReplyAction = "http://tempuri.org/IAccessService/GetClientGroupMappingResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetResources", ReplyAction = "http://tempuri.org/IAccessService/GetResourcesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLastClientLog", ReplyAction = "http://tempuri.org/IAccessService/GetLastClientLogResponse")]
+    HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientLogs", ReplyAction = "http://tempuri.org/IAccessService/GetClientLogsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientLogsSince", ReplyAction = "http://tempuri.org/IAccessService/GetClientLogsSinceResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddClientLog", ReplyAction = "http://tempuri.org/IAccessService/AddClientLogResponse")]
+    void AddClientLog(HeuristicLab.Clients.Access.ClientLog log);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteClientLog", ReplyAction = "http://tempuri.org/IAccessService/DeleteClientLogResponse")]
+    void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/Login", ReplyAction = "http://tempuri.org/IAccessService/LoginResponse")]
+    HeuristicLab.Clients.Access.User Login();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllLightweightUsers", ReplyAction = "http://tempuri.org/IAccessService/GetAllLightweightUsersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllUsers", ReplyAction = "http://tempuri.org/IAccessService/GetAllUsersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUsers", ReplyAction = "http://tempuri.org/IAccessService/GetUsersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUser", ReplyAction = "http://tempuri.org/IAccessService/AddUserResponse")]
+    HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteUser", ReplyAction = "http://tempuri.org/IAccessService/DeleteUserResponse")]
+    void DeleteUser(HeuristicLab.Clients.Access.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateUser", ReplyAction = "http://tempuri.org/IAccessService/UpdateUserResponse")]
+    void UpdateUser(HeuristicLab.Clients.Access.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUserToRole", ReplyAction = "http://tempuri.org/IAccessService/AddUserToRoleResponse")]
+    void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveUserFromRole", ReplyAction = "http://tempuri.org/IAccessService/RemoveUserFromRoleResponse")]
+    void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/ResetPassword", ReplyAction = "http://tempuri.org/IAccessService/ResetPasswordResponse")]
+    bool ResetPassword(HeuristicLab.Clients.Access.User user, string oldPassword, string newPassword);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllUserGroups", ReplyAction = "http://tempuri.org/IAccessService/GetAllUserGroupsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserGroupsOfUser", ReplyAction = "http://tempuri.org/IAccessService/GetUserGroupsOfUserResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserGroups", ReplyAction = "http://tempuri.org/IAccessService/GetUserGroupsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUserGroup", ReplyAction = "http://tempuri.org/IAccessService/AddUserGroupResponse")]
+    System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateUserGroup", ReplyAction = "http://tempuri.org/IAccessService/UpdateUserGroupResponse")]
+    void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteUserGroup", ReplyAction = "http://tempuri.org/IAccessService/DeleteUserGroupResponse")]
+    void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUserGroupBaseToGroup", ReplyAction = "http://tempuri.org/IAccessService/AddUserGroupBaseToGroupResponse")]
+    void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroup", ReplyAction = "http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroupResponse")]
+    void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUsersAndGroups", ReplyAction = "http://tempuri.org/IAccessService/GetUsersAndGroupsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserGroupMapping", ReplyAction = "http://tempuri.org/IAccessService/GetUserGroupMappingResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetRoles", ReplyAction = "http://tempuri.org/IAccessService/GetRolesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles();
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public interface IAccessServiceChannel : HeuristicLab.Clients.Access.IAccessService, System.ServiceModel.IClientChannel {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public partial class AccessServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.Access.IAccessService>, HeuristicLab.Clients.Access.IAccessService {
+
+    public AccessServiceClient() {
+    }
+
+    public AccessServiceClient(string endpointConfigurationName) :
+      base(endpointConfigurationName) {
+    }
+
+    public AccessServiceClient(string endpointConfigurationName, string remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public AccessServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public AccessServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(binding, remoteAddress) {
+    }
+
+    public HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role) {
+      return base.Channel.AddRole(role);
+    }
+
+    public void DeleteRole(HeuristicLab.Clients.Access.Role role) {
+      base.Channel.DeleteRole(role);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user) {
+      return base.Channel.GetUserRoles(user);
+    }
+
+    public void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role) {
+      base.Channel.AddRoleToGroup(userGroup, role);
+    }
+
+    public void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role) {
+      base.Channel.RemoveRoleFromGroup(userGroup, role);
+    }
+
+    public void ReportError(HeuristicLab.Clients.Access.ClientError error) {
+      base.Channel.ReportError(error);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors() {
+      return base.Channel.GetClientErrors();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate) {
+      return base.Channel.GetLastClientErrors(startDate);
+    }
+
+    public void DeleteError(HeuristicLab.Clients.Access.ClientError error) {
+      base.Channel.DeleteError(error);
+    }
+
+    public bool ClientExists(System.Guid id) {
+      return base.Channel.ClientExists(id);
+    }
+
+    public HeuristicLab.Clients.Access.Client GetClient(System.Guid id) {
+      return base.Channel.GetClient(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids) {
+      return base.Channel.GetClients(ids);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients() {
+      return base.Channel.GetAllClients();
+    }
+
+    public System.Guid AddClient(HeuristicLab.Clients.Access.Client client) {
+      return base.Channel.AddClient(client);
+    }
+
+    public void UpdateClient(HeuristicLab.Clients.Access.Client client) {
+      base.Channel.UpdateClient(client);
+    }
+
+    public void DeleteClient(HeuristicLab.Clients.Access.Client client) {
+      base.Channel.DeleteClient(client);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups() {
+      return base.Channel.GetAllClientGroups();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids) {
+      return base.Channel.GetClientGroups(ids);
+    }
+
+    public System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group) {
+      return base.Channel.AddClientGroup(group);
+    }
+
+    public void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group) {
+      base.Channel.UpdateClientGroup(group);
+    }
+
+    public void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group) {
+      base.Channel.DeleteClientGroup(group);
+    }
+
+    public void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group) {
+      base.Channel.AddResourceToGroup(resource, group);
+    }
+
+    public void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group) {
+      base.Channel.RemoveResourceFromGroup(resource, group);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping() {
+      return base.Channel.GetClientGroupMapping();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources() {
+      return base.Channel.GetResources();
+    }
+
+    public HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId) {
+      return base.Channel.GetLastClientLog(clientId);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId) {
+      return base.Channel.GetClientLogs(clientId);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate) {
+      return base.Channel.GetClientLogsSince(startDate);
+    }
+
+    public void AddClientLog(HeuristicLab.Clients.Access.ClientLog log) {
+      base.Channel.AddClientLog(log);
+    }
+
+    public void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log) {
+      base.Channel.DeleteClientLog(log);
+    }
+
+    public HeuristicLab.Clients.Access.User Login() {
+      return base.Channel.Login();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers() {
+      return base.Channel.GetAllLightweightUsers();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers() {
+      return base.Channel.GetAllUsers();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids) {
+      return base.Channel.GetUsers(ids);
+    }
+
+    public HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user) {
+      return base.Channel.AddUser(user);
+    }
+
+    public void DeleteUser(HeuristicLab.Clients.Access.User user) {
+      base.Channel.DeleteUser(user);
+    }
+
+    public void UpdateUser(HeuristicLab.Clients.Access.User user) {
+      base.Channel.UpdateUser(user);
+    }
+
+    public void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user) {
+      base.Channel.AddUserToRole(role, user);
+    }
+
+    public void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user) {
+      base.Channel.RemoveUserFromRole(role, user);
+    }
+
+    public bool ResetPassword(HeuristicLab.Clients.Access.User user, string oldPassword, string newPassword) {
+      return base.Channel.ResetPassword(user, oldPassword, newPassword);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups() {
+      return base.Channel.GetAllUserGroups();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId) {
+      return base.Channel.GetUserGroupsOfUser(userId);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids) {
+      return base.Channel.GetUserGroups(ids);
+    }
+
+    public System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group) {
+      return base.Channel.AddUserGroup(group);
+    }
+
+    public void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group) {
+      base.Channel.UpdateUserGroup(group);
+    }
+
+    public void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group) {
+      base.Channel.DeleteUserGroup(group);
+    }
+
+    public void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group) {
+      base.Channel.AddUserGroupBaseToGroup(resource, group);
+    }
+
+    public void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group) {
+      base.Channel.RemoveUserGroupBaseFromGroup(resource, group);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups() {
+      return base.Channel.GetUsersAndGroups();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping() {
+      return base.Channel.GetUserGroupMapping();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles() {
+      return base.Channel.GetRoles();
+    }
+  }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/GenerateServiceClients.cmd
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/GenerateServiceClients.cmd	(revision 7367)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/GenerateServiceClients.cmd	(revision 7368)
@@ -3,5 +3,5 @@
 echo.
 echo *******************************************************************************************
-echo Generating HiveService client
+echo Generating AccessService client
 echo.
 
@@ -21,10 +21,10 @@
 echo.
 echo Following modifications have to be done manually in generated data contracts:
-echo  * Remove method "protected void RaisePropertyChanged(string propertyName)" in HiveItem
+echo  * Remove method "protected void RaisePropertyChanged(string propertyName)" in AccessServiceItem
 echo.
 echo !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!!
 echo ---------------------------------------------------------------------------------------
 echo.
-echo Generation of HiveService client finished.
+echo Generation of AccessService client finished.
 echo *******************************************************************************************
 
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/IAccessItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/IAccessItem.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/IAccessItem.cs	(revision 7368)
@@ -0,0 +1,32 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.ComponentModel;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.Access {
+  public interface IAccessItem : IItem, INotifyPropertyChanged {
+    bool Modified { get; }
+    void Store();
+    event EventHandler ModifiedChanged;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/LightweightUser.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/LightweightUser.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/LightweightUser.cs	(revision 7368)
@@ -0,0 +1,44 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.Access {
+  [Item("LightweightUser", "A user.")]
+  public partial class LightweightUser {
+    protected LightweightUser(LightweightUser original, Cloner cloner)
+      : base(original, cloner) {
+      FullName = original.FullName;
+      UserName = original.UserName;
+    }
+
+    public LightweightUser() { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new LightweightUser(this, cloner);
+    }
+
+    public override string ToString() {
+      return UserName + " ( " + FullName + ")";
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroupBase.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroupBase.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroupBase.cs	(revision 7368)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Clients.Access {
+  [Item("UserGroupBase", "A UserGroupBase.")]
+  public partial class UserGroupBase {
+    protected UserGroupBase(UserGroupBase original, Cloner cloner)
+      : base(original, cloner) {
+      Id = original.Id;
+    }
+
+    public UserGroupBase() { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new UserGroupBase(this, cloner);
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/UpdateLocalInstallation.cmd
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/UpdateLocalInstallation.cmd	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/UpdateLocalInstallation.cmd	(revision 7368)
@@ -0,0 +1,3 @@
+for /f "delims=" %%a in ('DIR /B /S "..\..\..\trunk\sources\bin\HeuristicLab 3.3.exe.config"') do @set HLCONFIG=%%a
+for /f "delims=" %%a in ('DIR /B /S "..\..\..\trunk\sources\bin\HeuristicLab.Clients.Access-3.3.dll.config"') do @set ACCESSCONFIG=%%a
+"%SolutionDir%ConfigMerger.exe" "%ACCESSCONFIG%" "%HLCONFIG%"
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/LightweightUserView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/LightweightUserView.Designer.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/LightweightUserView.Designer.cs	(revision 7368)
@@ -0,0 +1,56 @@
+﻿namespace HeuristicLab.Clients.Access.Views {
+  partial class LightweightUserView {
+    /// <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.checkedListBox = new System.Windows.Forms.CheckedListBox();
+      this.SuspendLayout();
+      // 
+      // checkedListBox
+      // 
+      this.checkedListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.checkedListBox.CheckOnClick = true;
+      this.checkedListBox.FormattingEnabled = true;
+      this.checkedListBox.Location = new System.Drawing.Point(3, 3);
+      this.checkedListBox.Name = "checkedListBox";
+      this.checkedListBox.Size = new System.Drawing.Size(532, 229);
+      this.checkedListBox.TabIndex = 0;
+      // 
+      // LightweightUserView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.checkedListBox);
+      this.Name = "LightweightUserView";
+      this.Size = new System.Drawing.Size(538, 235);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.CheckedListBox checkedListBox;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/LightweightUserView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/LightweightUserView.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/LightweightUserView.cs	(revision 7368)
@@ -0,0 +1,56 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.Access.Views {
+
+  [View("LightweightUser View")]
+  [Content(typeof(ItemList<LightweightUser>), true)]
+  public partial class LightweightUserView : ContentView {
+    public new ItemList<LightweightUser> Content {
+      get { return (ItemList<LightweightUser>)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public List<Guid> SelectedUsers { get; set; }
+
+    public LightweightUserView() {
+      InitializeComponent();
+      SelectedUsers = new List<Guid>();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+
+      SelectedUsers.Clear();
+      if (Content == null) {
+        checkedListBox.Items.Clear();
+      } else {
+        Content.ForEach(x => checkedListBox.Items.Add(x));
+      }
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableLightweightUserView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableLightweightUserView.Designer.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableLightweightUserView.Designer.cs	(revision 7368)
@@ -0,0 +1,73 @@
+﻿namespace HeuristicLab.Clients.Access.Views {
+  partial class RefreshableLightweightUserView {
+    /// <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.refreshButton = new System.Windows.Forms.Button();
+      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.SuspendLayout();
+      // 
+      // refreshButton
+      // 
+      this.refreshButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
+      this.refreshButton.Location = new System.Drawing.Point(3, 3);
+      this.refreshButton.Name = "refreshButton";
+      this.refreshButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshButton.TabIndex = 1;
+      this.refreshButton.UseVisualStyleBackColor = true;
+      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
+      // 
+      // viewHost
+      // 
+      this.viewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.viewHost.Caption = "View";
+      this.viewHost.Content = null;
+      this.viewHost.Enabled = false;
+      this.viewHost.Location = new System.Drawing.Point(3, 33);
+      this.viewHost.Name = "viewHost";
+      this.viewHost.ReadOnly = false;
+      this.viewHost.Size = new System.Drawing.Size(500, 218);
+      this.viewHost.TabIndex = 2;
+      this.viewHost.ViewsLabelVisible = true;
+      this.viewHost.ViewType = null;
+      // 
+      // RefreshableView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.viewHost);
+      this.Controls.Add(this.refreshButton);
+      this.Name = "RefreshableView";
+      this.Size = new System.Drawing.Size(506, 254);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button refreshButton;
+    private MainForm.WindowsForms.ViewHost viewHost;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableLightweightUserView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableLightweightUserView.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableLightweightUserView.cs	(revision 7368)
@@ -0,0 +1,50 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Clients.Access.Views {
+  [View("RefreshableLightweightUser View")]
+  [Content(typeof(AccessClient), false)]
+  public partial class RefreshableLightweightUserView : RefreshableView {
+    public RefreshableLightweightUserView() {
+      InitializeComponent();
+    }
+
+    protected override void RefreshData() {
+      Content.RefreshAsync(new Action<Exception>((Exception ex) => ErrorHandling.ShowErrorDialog(this, "Refresh failed.", ex)));
+    }
+
+    protected override void Content_Refreshing(object sender, EventArgs e) {
+      base.Content_Refreshing(sender, e);
+      viewHost.Content = null;
+    }
+
+    protected override void Content_Refreshed(object sender, EventArgs e) {
+      base.Content_Refreshed(sender, e);
+
+      viewHost.Content = Content.Users;
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableView.Designer.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableView.Designer.cs	(revision 7368)
@@ -0,0 +1,73 @@
+﻿namespace HeuristicLab.Clients.Access.Views {
+  partial class RefreshableView {
+    /// <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.refreshButton = new System.Windows.Forms.Button();
+      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.SuspendLayout();
+      // 
+      // refreshButton
+      // 
+      this.refreshButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
+      this.refreshButton.Location = new System.Drawing.Point(3, 3);
+      this.refreshButton.Name = "refreshButton";
+      this.refreshButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshButton.TabIndex = 1;
+      this.refreshButton.UseVisualStyleBackColor = true;
+      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
+      // 
+      // viewHost
+      // 
+      this.viewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.viewHost.Caption = "View";
+      this.viewHost.Content = null;
+      this.viewHost.Enabled = false;
+      this.viewHost.Location = new System.Drawing.Point(3, 33);
+      this.viewHost.Name = "viewHost";
+      this.viewHost.ReadOnly = false;
+      this.viewHost.Size = new System.Drawing.Size(500, 218);
+      this.viewHost.TabIndex = 2;
+      this.viewHost.ViewsLabelVisible = true;
+      this.viewHost.ViewType = null;
+      // 
+      // RefreshableView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.viewHost);
+      this.Controls.Add(this.refreshButton);
+      this.Name = "RefreshableView";
+      this.Size = new System.Drawing.Size(506, 254);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button refreshButton;
+    private MainForm.WindowsForms.ViewHost viewHost;
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableView.cs	(revision 7368)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/Views/RefreshableView.cs	(revision 7368)
@@ -0,0 +1,90 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.Access.Views {
+  [View("Refreshable View")]
+  [Content(typeof(AccessClient), true)]
+  public partial class RefreshableView : AsynchronousContentView {
+    public new AccessClient Content {
+      get { return (AccessClient)base.Content; }
+      set { base.Content = value; }
+    }
+    public RefreshableView() {
+      InitializeComponent();
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.Refreshing -= new EventHandler(Content_Refreshing);
+      Content.Refreshed -= new EventHandler(Content_Refreshed);
+      base.DeregisterContentEvents();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.Refreshing += new EventHandler(Content_Refreshing);
+      Content.Refreshed += new EventHandler(Content_Refreshed);
+    }
+
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        //TODO: remove?
+      } else {
+
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      refreshButton.Enabled = Content != null;
+    }
+
+    protected virtual void Content_Refreshing(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_Refreshing), sender, e);
+      } else {
+        Cursor = Cursors.AppStarting;
+        refreshButton.Enabled = false;
+      }
+    }
+
+    protected virtual void Content_Refreshed(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_Refreshed), sender, e);
+      } else {
+        Cursor = Cursors.Default;
+        refreshButton.Enabled = true;
+      }
+    }
+
+    protected virtual void RefreshData() { }
+
+    protected void refreshButton_Click(object sender, System.EventArgs e) {
+      RefreshData();
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7367)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7368)
@@ -278,5 +278,4 @@
       DA.User accessUser = null;
 
-      //TODO: add user to userdb if there is only data available in the asp.net authentication db
       using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
         var query = from u in context.UserGroupBases.OfType<DA.User>()
@@ -285,4 +284,12 @@
         if (query.Count() == 1) {
           accessUser = query.First();
+        } else {
+          //if the user is not in the access db at it
+          DA.User user = new DA.User();
+          user.Id = userId;
+          user.FullName = "Not set";
+          context.UserGroupBases.InsertOnSubmit(user);
+          context.SubmitChanges();
+          accessUser = user;
         }
       }
@@ -316,5 +323,4 @@
       DA.User accessUser = null;
 
-      //TODO: add user to userdb if there is only data available in the asp.net authentication db
       using (DA.ASPNETAuthenticationDataContext context = new DA.ASPNETAuthenticationDataContext()) {
         var userQuery = from u in context.aspnet_Users
@@ -332,4 +338,12 @@
         if (query.Count() == 1) {
           accessUser = query.First();
+        } else {
+          //if the user is not in the access db at it
+          DA.User user = new DA.User();
+          user.Id = userId;
+          user.FullName = "Not set";
+          context.UserGroupBases.InsertOnSubmit(user);
+          context.SubmitChanges();
+          accessUser = user;
         }
       }
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/AccessItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/AccessItem.cs	(revision 7367)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/AccessItem.cs	(revision 7368)
@@ -24,5 +24,5 @@
 namespace HeuristicLab.Services.Access.DataTransfer {
   [DataContract]
-  public class AccessItem {
+  public abstract class AccessItem {
   }
 }
