Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 6825)
@@ -24,136 +24,6 @@
 namespace HeuristicLab.Services.Access {
   [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
-  public class AccessService : IAccessService {
-    #region IAccessService Members
+  public class AccessService {
 
-    public bool ClientExists(System.Guid id) {
-      throw new System.NotImplementedException();
-    }
-
-    public DataTransfer.Client GetClient(System.Guid id) {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.Client> GetClients() {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Guid AddClient(DataTransfer.Client client) {
-      throw new System.NotImplementedException();
-    }
-
-    public void UpdateClient(DataTransfer.Client client) {
-      throw new System.NotImplementedException();
-    }
-
-    public void DeleteClient(DataTransfer.Client client) {
-      throw new System.NotImplementedException();
-    }
-
-    public DataTransfer.ClientLog GetLastClientLog(System.Guid clientId) {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.ClientLog> GetClientLogs(System.Guid clientId) {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.ClientLog> GetClientLogsSince(System.DateTime startDate) {
-      throw new System.NotImplementedException();
-    }
-
-    public void AddClientLogEntry(DataTransfer.ClientLog log) {
-      throw new System.NotImplementedException();
-    }
-
-    public void DeleteClientLogEntry(DataTransfer.ClientLog log) {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.ClientGroup> GetClientGroups() {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Guid AddClientGroup(DataTransfer.ClientGroup group) {
-      throw new System.NotImplementedException();
-    }
-
-    public void UpdateClientGroup(DataTransfer.ClientGroup group) {
-      throw new System.NotImplementedException();
-    }
-
-    public void DeleteClientGroup(DataTransfer.ClientGroup group) {
-      throw new System.NotImplementedException();
-    }
-
-    public void Login() {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.User> GetUsers() {
-      throw new System.NotImplementedException();
-    }
-
-    public DataTransfer.User AddUser(DataTransfer.User user) {
-      throw new System.NotImplementedException();
-    }
-
-    public void DeleteUser(DataTransfer.User user) {
-      throw new System.NotImplementedException();
-    }
-
-    public void UpdateUser(DataTransfer.User user) {
-      throw new System.NotImplementedException();
-    }
-
-    public void AddUserToRole(DataTransfer.Role role, DataTransfer.User user) {
-      throw new System.NotImplementedException();
-    }
-
-    public void RemoveUserFromRole(DataTransfer.Role role, DataTransfer.User user) {
-      throw new System.NotImplementedException();
-    }
-
-    public void ResetPassword(DataTransfer.User user, string password) {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.Role> GetRoles() {
-      throw new System.NotImplementedException();
-    }
-
-    public DataTransfer.Role AddRole(DataTransfer.Role role) {
-      throw new System.NotImplementedException();
-    }
-
-    public void UpdateRole(DataTransfer.Role role) {
-      throw new System.NotImplementedException();
-    }
-
-    public void DeleteRole(DataTransfer.Role role) {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.Role> GetUserRoles(DataTransfer.User user) {
-      throw new System.NotImplementedException();
-    }
-
-    public System.Collections.Generic.IEnumerable<DataTransfer.UserGroup> GetUserGroups() {
-      throw new System.NotImplementedException();
-    }
-
-    public DataTransfer.UserGroup AddUserGroup(DataTransfer.UserGroup group) {
-      throw new System.NotImplementedException();
-    }
-
-    public void UpdateUserGroup(DataTransfer.UserGroup group) {
-      throw new System.NotImplementedException();
-    }
-
-    public void DeleteUserGroup(DataTransfer.UserGroup group) {
-      throw new System.NotImplementedException();
-    }
-
-    #endregion
   }
 }
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs	(revision 6825)
@@ -20,6 +20,9 @@
 #endregion
 
+using System;
+using System.Linq;
 using DA = HeuristicLab.Services.Access.DataAccess;
 using DT = HeuristicLab.Services.Access.DataTransfer;
+
 
 namespace HeuristicLab.Services.ClientManagement {
@@ -31,6 +34,5 @@
         Id = source.Id,
         Description = source.Description,
-        Name = source.Name,
-        Type = source.Type
+        Name = source.Name
       };
     }
@@ -40,26 +42,113 @@
         Id = source.Id,
         Description = source.Description,
-        Name = source.Name,
-        Type = source.Type
-      };
-    }
-    #endregion
-
-    #region Group
-    public static DT.ClientGroup ToDto(DA.Group source) {
+        Name = source.Name
+      };
+    }
+    #endregion
+
+    #region ClientGroup
+    public static DT.ClientGroup ToDto(DA.ClientGroup source) {
       return new DT.ClientGroup() {
         Id = source.Id,
         Description = source.Description,
-        Name = source.Name,
-        Type = source.Type
-      };
-    }
-
-    public static DA.Group ToEntity(DT.ClientGroup source) {
-      return new DA.Group() {
-        Id = source.Id,
-        Description = source.Description,
-        Name = source.Name,
-        Type = source.Type
+        Name = source.Name
+      };
+    }
+
+    public static DA.ClientGroup ToEntity(DT.ClientGroup source) {
+      return new DA.ClientGroup() {
+        Id = source.Id,
+        Description = source.Description,
+        Name = source.Name,
+
+      };
+    }
+    #endregion
+
+    #region Country
+    public static DT.Country ToDto(DA.Country source) {
+      return new DT.Country() {
+        Id = source.Id,
+        Name = source.Name
+      };
+    }
+
+    public static DA.Country ToEntity(DT.Country source) {
+      return new DA.Country() {
+        Id = source.Id,
+        Name = source.Name,
+
+      };
+    }
+    #endregion
+
+    #region OperatingSystem
+    public static DT.OperatingSystem ToDto(DA.OperatingSystem source) {
+      return new DT.OperatingSystem() {
+        Id = source.Id,
+        Name = source.Name
+      };
+    }
+
+    public static DA.OperatingSystem ToEntity(DT.OperatingSystem source) {
+      return new DA.OperatingSystem() {
+        Id = source.Id,
+        Name = source.Name,
+
+      };
+    }
+    #endregion
+
+    #region ClientType
+    public static DT.ClientType ToDto(DA.ClientType source) {
+      return new DT.ClientType() {
+        Id = source.Id,
+        Name = source.Name
+      };
+    }
+
+    public static DA.ClientType ToEntity(DT.ClientType source) {
+      return new DA.ClientType() {
+        Id = source.Id,
+        Name = source.Name,
+
+      };
+    }
+    #endregion
+
+    #region ClientConfiguration
+    public static DT.ClientConfiguration ToDto(DA.ClientConfiguration source) {
+      return new DT.ClientConfiguration() {
+        Id = source.Id,
+        Hash = source.Hash,
+        Description = source.Description
+      };
+    }
+
+    public static DA.ClientConfiguration ToEntity(DT.ClientConfiguration source) {
+      return new DA.ClientConfiguration() {
+        Id = source.Id,
+        Hash = source.Hash,
+        Description = source.Description
+      };
+    }
+    #endregion
+
+    #region Plugin
+    public static DT.Plugin ToDto(DA.Plugin source) {
+      return new DT.Plugin() {
+        Id = source.Id,
+        Name = source.Name,
+        StrongName = source.StrongName,
+        Version = source.Version
+      };
+    }
+
+    public static DA.Plugin ToEntity(DT.Plugin source) {
+      return new DA.Plugin() {
+        Id = source.Id,
+        Name = source.Name,
+        StrongName = source.StrongName,
+        Version = source.Version
       };
     }
@@ -72,13 +161,13 @@
         Description = source.Description,
         Name = source.Name,
-        Type = source.Type,
-        Country = source.Country,
+        ClientConfiguration = ToDto(source.ClientConfiguration),
         HeuristicLabVersion = source.HeuristicLabVersion,
-        IPAddress = source.IPAddress,
-        MemorySize = source.MemorySize,
-        NumberOfCores = source.NumberOfCores,
-        OperatingSystem = source.OperatingSystem,
+        Country = ToDto(source.Country),
+        OperatingSystem = ToDto(source.OperatingSystem),
+        MemorySize = source.MemorySize.GetValueOrDefault(),
+        Timestamp = source.Timestamp.GetValueOrDefault(),
+        NumberOfCores = source.NumberOfCores.GetValueOrDefault(),
         ProcessorType = source.ProcessorType,
-        ClientType = source.ClientType
+        ClientType = ToDto(source.ClientType)
       };
     }
@@ -89,13 +178,13 @@
         Description = source.Description,
         Name = source.Name,
-        Type = source.Type,
-        Country = source.Country,
+        ClientConfiguration = ToEntity(source.ClientConfiguration),
         HeuristicLabVersion = source.HeuristicLabVersion,
-        IPAddress = source.IPAddress,
+        Country = ToEntity(source.Country),
+        OperatingSystem = ToEntity(source.OperatingSystem),
         MemorySize = source.MemorySize,
+        Timestamp = source.Timestamp,
         NumberOfCores = source.NumberOfCores,
-        OperatingSystem = source.OperatingSystem,
         ProcessorType = source.ProcessorType,
-        ClientType = source.ClientType
+        ClientType = ToEntity(source.ClientType)
       };
     }
@@ -107,5 +196,4 @@
         Timestamp = source.Timestamp,
         ResourceId = source.ResourceId,
-        Exception = source.Exception,
         Message = source.Message
       };
@@ -116,7 +204,99 @@
         Timestamp = source.Timestamp,
         ResourceId = source.ResourceId,
+        Message = source.Message
+      };
+    }
+    #endregion
+
+    #region ClientError
+    public static DT.ClientError ToDto(DA.ClientError source) {
+      return new DT.ClientError() {
+        Id = source.Id,
+        Timestamp = source.Timestamp,
         Exception = source.Exception,
-        Message = source.Message
-      };
+        UserComment = source.UserComment,
+        ConfigDump = source.ConfigDump,
+        ClientId = source.ClientId.GetValueOrDefault(),
+        UserId = source.UserId.GetValueOrDefault()
+      };
+    }
+
+    public static DA.ClientError ToEntity(DT.ClientError source) {
+      return new DA.ClientError() {
+        Id = source.Id,
+        Timestamp = source.Timestamp,
+        Exception = source.Exception,
+        UserComment = source.UserComment,
+        ConfigDump = source.ConfigDump,
+        ClientId = source.ClientId,
+        UserId = source.UserId
+      };
+    }
+    #endregion
+
+    #region UserGroup
+    public static DT.UserGroup ToDto(DA.UserGroup source) {
+      return new DT.UserGroup() {
+        Id = source.Id,
+        Name = source.Name
+      };
+    }
+
+    public static DA.UserGroup ToEntity(DT.UserGroup source) {
+      return new DA.UserGroup() {
+        Id = source.Id,
+        Name = source.Name
+      };
+    }
+    #endregion
+
+    #region User
+    public static DT.User ToDto(DA.User source, DA.aspnet_User aspUserSource, DA.aspnet_Membership aspMembershipSource) {
+      return new DT.User() {
+        Id = source.Id,
+        FullName = source.FullName,
+        Comment = aspMembershipSource.Comment,
+        CreationDate = aspMembershipSource.CreateDate,
+        Email = aspMembershipSource.Email,
+        IsApproved = aspMembershipSource.IsApproved,
+        LastActivityDate = aspUserSource.LastActivityDate,
+        LastLoginDate = aspMembershipSource.LastLoginDate,
+        LastPasswordChangedDate = aspMembershipSource.LastPasswordChangedDate,
+        UserName = aspUserSource.UserName
+      };
+    }
+
+    public static void ToEntity(DT.User source, out DA.User accessUser, out DA.aspnet_User aspUser, out DA.aspnet_Membership aspMembership, out bool userExistsInASP) {
+      userExistsInASP = false;
+      accessUser = new DA.User();
+      aspUser = new DA.aspnet_User();
+      aspMembership = new DA.aspnet_Membership();
+
+      if (source.Id != Guid.Empty) {
+        using (DA.ASPNETAuthenticationDataContext context = new DA.ASPNETAuthenticationDataContext()) {
+          var userCol = context.aspnet_Users.Where(s => s.UserId == source.Id);
+          var membershipCol = context.aspnet_Memberships.Where(s => s.UserId == source.Id);
+          if (userCol.Count() > 0 && membershipCol.Count() > 0) {
+            aspUser = userCol.First();
+            aspMembership = membershipCol.First();
+            userExistsInASP = true;
+          }
+        }
+      }
+
+      accessUser.Id = source.Id;
+      accessUser.FullName = source.FullName;
+
+      aspUser.UserId = source.Id;
+      aspUser.LastActivityDate = source.LastActivityDate;
+      aspUser.UserName = source.UserName;
+
+      aspMembership.UserId = source.Id;
+      aspMembership.Comment = source.Comment;
+      aspMembership.CreateDate = source.CreationDate;
+      aspMembership.Email = source.Email;
+      aspMembership.IsApproved = source.IsApproved;
+      aspMembership.LastLoginDate = source.LastLoginDate;
+      aspMembership.LastPasswordChangedDate = source.LastPasswordChangedDate;
     }
     #endregion
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Client.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Client.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Client.cs	(revision 6825)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Runtime.Serialization;
 
@@ -26,19 +27,21 @@
   public class Client : Resource {
     [DataMember]
-    public string ProcessorType { get; set; }
+    public ClientConfiguration ClientConfiguration { get; set; }
     [DataMember]
-    public int? NumberOfCores { get; set; }
-    [DataMember]
-    public int? MemorySize { get; set; }
-    [DataMember]
-    public string OperatingSystem { get; set; }
-    [DataMember]
-    public string IPAddress { get; set; }
+    public ClientType ClientType { get; set; }
     [DataMember]
     public string HeuristicLabVersion { get; set; }
     [DataMember]
-    public string Country { get; set; }
+    public Country Country { get; set; }
     [DataMember]
-    public string ClientType { get; set; }
+    public HeuristicLab.Services.Access.DataTransfer.OperatingSystem OperatingSystem { get; set; }
+    [DataMember]
+    public int MemorySize { get; set; }
+    [DataMember]
+    public DateTime Timestamp { get; set; }
+    [DataMember]
+    public int NumberOfCores { get; set; }
+    [DataMember]
+    public string ProcessorType { get; set; }
   }
 }
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientConfiguration.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientConfiguration.cs	(revision 6825)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientConfiguration.cs	(revision 6825)
@@ -0,0 +1,35 @@
+﻿using System;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class ClientConfiguration : AccessItem {
+    [DataMember]
+    public Guid Id { get; set; }
+    [DataMember]
+    public string Hash { get; set; }
+    [DataMember]
+    public string Description { get; set; }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientError.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientError.cs	(revision 6825)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientError.cs	(revision 6825)
@@ -0,0 +1,43 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class ClientError : AccessItem {
+    [DataMember]
+    public Guid Id { get; set; }
+    [DataMember]
+    public DateTime Timestamp { get; set; }
+    [DataMember]
+    public string Exception { get; set; }
+    [DataMember]
+    public string UserComment { get; set; }
+    [DataMember]
+    public string ConfigDump { get; set; }
+    [DataMember]
+    public Guid ClientId { get; set; }
+    [DataMember]
+    public Guid UserId { get; set; }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientLog.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientLog.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientLog.cs	(revision 6825)
@@ -31,6 +31,4 @@
     [DataMember]
     public string Message { get; set; }
-    [DataMember]
-    public string Exception { get; set; }
   }
 }
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientType.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientType.cs	(revision 6825)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientType.cs	(revision 6825)
@@ -0,0 +1,33 @@
+﻿using System;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class ClientType : AccessItem {
+    [DataMember]
+    public Guid Id { get; set; }
+    [DataMember]
+    public string Name { get; set; }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Country.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Country.cs	(revision 6825)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Country.cs	(revision 6825)
@@ -0,0 +1,33 @@
+﻿using System;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class Country : AccessItem {
+    [DataMember]
+    public Guid Id { get; set; }
+    [DataMember]
+    public string Name { get; set; }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/OperatingSystem.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/OperatingSystem.cs	(revision 6825)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/OperatingSystem.cs	(revision 6825)
@@ -0,0 +1,33 @@
+﻿using System;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class OperatingSystem : AccessItem {
+    [DataMember]
+    public Guid Id { get; set; }
+    [DataMember]
+    public string Name { get; set; }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Plugin.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Plugin.cs	(revision 6825)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Plugin.cs	(revision 6825)
@@ -0,0 +1,37 @@
+﻿using System;
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class Plugin : AccessItem {
+    [DataMember]
+    public Guid Id { get; set; }
+    [DataMember]
+    public string Name { get; set; }
+    [DataMember]
+    public string StrongName { get; set; }
+    [DataMember]
+    public string Version { get; set; }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Resource.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Resource.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Resource.cs	(revision 6825)
@@ -21,5 +21,4 @@
 
 using System;
-using System.Collections.Generic;
 using System.Runtime.Serialization;
 
@@ -33,8 +32,4 @@
     [DataMember]
     public string Description { get; set; }
-    [DataMember]
-    public string Type { get; set; }
-    [DataMember]
-    public IEnumerable<ClientGroup> ParentGroups { get; set; }
   }
 }
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/User.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/User.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/User.cs	(revision 6825)
@@ -26,5 +26,5 @@
 namespace HeuristicLab.Services.Access.DataTransfer {
   [DataContract]
-  public class User : AccessItem {
+  public class User : UserGroupBase {
     [DataMember]
     public string UserName { get; set; }
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroup.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroup.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroup.cs	(revision 6825)
@@ -20,14 +20,11 @@
 #endregion
 
-using System;
 using System.Runtime.Serialization;
 
 namespace HeuristicLab.Services.Access.DataTransfer {
   [DataContract]
-  public class UserGroup : AccessItem {
+  public class UserGroup : UserGroupBase {
     [DataMember]
     public string Name { get; set; }
-    [DataMember]
-    public Guid ParentUserGroup { get; set; }
   }
 }
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupBase.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupBase.cs	(revision 6825)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupBase.cs	(revision 6825)
@@ -0,0 +1,31 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class UserGroupBase : AccessItem {
+    [DataMember]
+    public Guid Id { get; set; }
+  }
+}
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/HeuristicLab.Services.Access-3.3.csproj
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/HeuristicLab.Services.Access-3.3.csproj	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/HeuristicLab.Services.Access-3.3.csproj	(revision 6825)
@@ -45,4 +45,5 @@
     <Reference Include="System.Core" />
     <Reference Include="System.Data" />
+    <Reference Include="System.Data.Linq" />
     <Reference Include="System.Runtime.Serialization" />
     <Reference Include="System.ServiceModel" />
@@ -53,11 +54,18 @@
     <Compile Include="Convert.cs" />
     <Compile Include="DataTransfer\Client.cs" />
+    <Compile Include="DataTransfer\ClientConfiguration.cs" />
+    <Compile Include="DataTransfer\ClientError.cs" />
     <Compile Include="DataTransfer\ClientLog.cs" />
     <Compile Include="DataTransfer\AccessItem.cs" />
     <Compile Include="DataTransfer\ClientGroup.cs" />
+    <Compile Include="DataTransfer\ClientType.cs" />
+    <Compile Include="DataTransfer\Country.cs" />
+    <Compile Include="DataTransfer\OperatingSystem.cs" />
+    <Compile Include="DataTransfer\Plugin.cs" />
     <Compile Include="DataTransfer\Resource.cs" />
     <Compile Include="DataTransfer\Role.cs" />
     <Compile Include="DataTransfer\User.cs" />
     <Compile Include="DataTransfer\UserGroup.cs" />
+    <Compile Include="DataTransfer\UserGroupBase.cs" />
     <Compile Include="IAccessService.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/IAccessService.cs
===================================================================
--- branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/IAccessService.cs	(revision 6821)
+++ branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/IAccessService.cs	(revision 6825)
@@ -72,4 +72,7 @@
 
     [OperationContract]
+    IEnumerable<ClientGroup> GetParentGroups(Guid id);
+
+    [OperationContract]
     Guid AddClientGroup(ClientGroup group);
 
