Index: branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs	(revision 7375)
+++ branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs	(revision 7426)
@@ -14,11 +14,35 @@
   [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.UserGroup))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
+  [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 = "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.Role))]
   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientError))]
   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Resource))]
@@ -30,5 +54,8 @@
   [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))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroupBase))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
   public partial class AccessItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
 
@@ -50,14 +77,92 @@
   [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.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 = "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()]
@@ -73,4 +178,517 @@
       }
     }
+
+    [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 = "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");
+        }
+      }
+    }
   }
 
@@ -229,28 +847,4 @@
   [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" +
       "")]
@@ -293,602 +887,8 @@
   [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.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()]
@@ -948,8 +948,8 @@
   [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.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()]
@@ -1011,4 +1011,13 @@
   public interface IAccessService {
 
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLeightweightUsersAndGroups", ReplyAction = "http://tempuri.org/IAccessService/GetLeightweightUsersAndGroupsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetLeightweightUsersAndGroups(System.Collections.Generic.List<System.Guid> ids);
+
+    [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.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddRole", ReplyAction = "http://tempuri.org/IAccessService/AddRoleResponse")]
     HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role);
@@ -1107,4 +1116,7 @@
     System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers();
 
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLightweightUsers", ReplyAction = "http://tempuri.org/IAccessService/GetLightweightUsersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetLightweightUsers(System.Collections.Generic.List<System.Guid> ids);
+
     [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllUsers", ReplyAction = "http://tempuri.org/IAccessService/GetAllUsersResponse")]
     System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers();
@@ -1158,9 +1170,6 @@
     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.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllLeightweightUsersAndGroups", ReplyAction = "http://tempuri.org/IAccessService/GetAllLeightweightUsersAndGroupsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetAllLeightweightUsersAndGroups();
   }
 
@@ -1192,4 +1201,16 @@
     }
 
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetLeightweightUsersAndGroups(System.Collections.Generic.List<System.Guid> ids) {
+      return base.Channel.GetLeightweightUsersAndGroups(ids);
+    }
+
+    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();
+    }
+
     public HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role) {
       return base.Channel.AddRole(role);
@@ -1320,4 +1341,8 @@
     }
 
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetLightweightUsers(System.Collections.Generic.List<System.Guid> ids) {
+      return base.Channel.GetLightweightUsers(ids);
+    }
+
     public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers() {
       return base.Channel.GetAllUsers();
@@ -1388,10 +1413,6 @@
     }
 
-    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();
+    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetAllLeightweightUsersAndGroups() {
+      return base.Channel.GetAllLeightweightUsersAndGroups();
     }
   }
Index: branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/LightweightUser.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/LightweightUser.cs	(revision 7375)
+++ branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/LightweightUser.cs	(revision 7426)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Drawing;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -30,4 +31,8 @@
       FullName = original.FullName;
       UserName = original.UserName;
+    }
+
+    public static Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.User; }
     }
 
Index: branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroup.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroup.cs	(revision 7426)
+++ branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroup.cs	(revision 7426)
@@ -0,0 +1,47 @@
+﻿#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.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+namespace HeuristicLab.Clients.Access {
+  [Item("UserGroup", "A group.")]
+  public partial class UserGroup {
+    protected UserGroup(UserGroup original, Cloner cloner)
+      : base(original, cloner) {
+      this.Name = original.Name;
+    }
+
+    public static Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.UserAccounts; }
+    }
+
+    public UserGroup() { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new UserGroup(this, cloner);
+    }
+
+    public override string ToString() {
+      return Name;
+    }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroupBase.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroupBase.cs	(revision 7375)
+++ branches/ClientUserManagement/HeuristicLab.Clients.Access/3.3/ServiceClients/UserGroupBase.cs	(revision 7426)
@@ -36,4 +36,13 @@
       return new UserGroupBase(this, cloner);
     }
+
+    public override bool Equals(object obj) {
+      var o = obj as UserGroupBase;
+      if (o == null) {
+        return false;
+      } else {
+        return this.Id == o.Id;
+      }
+    }
   }
 }
