Index: /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln	(revision 6800)
@@ -10,4 +10,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.ClientManagement", "HeuristicLab.Services.ClientManagement\3.3\HeuristicLab.Services.ClientManagement.csproj", "{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.UserManagement", "HeuristicLab.Services.UserManagement\3.3\HeuristicLab.Services.UserManagement.csproj", "{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}"
 EndProject
 Global
@@ -25,4 +27,8 @@
 		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientLog.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientLog.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientLog.cs	(revision 6800)
@@ -24,5 +24,5 @@
 namespace HeuristicLab.Services.ClientManagement.DataTransfer {
   [DataContract]
-  public class ClientLog {
+  public class ClientLog : ClientManagementItem {
     [DataMember]
     public DateTime Timestamp { get; set; }
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientManagementItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientManagementItem.cs	(revision 6800)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientManagementItem.cs	(revision 6800)
@@ -0,0 +1,28 @@
+﻿#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.ClientManagement.DataTransfer {
+  [DataContract]
+  public class ClientManagementItem {
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Resource.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Resource.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Resource.cs	(revision 6800)
@@ -22,7 +22,8 @@
 using System;
 using System.Runtime.Serialization;
+
 namespace HeuristicLab.Services.ClientManagement.DataTransfer {
   [DataContract]
-  public class Resource {
+  public class Resource : ClientManagementItem {
     [DataMember]
     public Guid Id { get; set; }
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/HeuristicLab.Services.ClientManagement.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/HeuristicLab.Services.ClientManagement.csproj	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/HeuristicLab.Services.ClientManagement.csproj	(revision 6800)
@@ -53,4 +53,5 @@
     <Compile Include="DataTransfer\Client.cs" />
     <Compile Include="DataTransfer\ClientLog.cs" />
+    <Compile Include="DataTransfer\ClientManagementItem.cs" />
     <Compile Include="DataTransfer\Group.cs" />
     <Compile Include="DataTransfer\Resource.cs" />
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/IClientManagementService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/IClientManagementService.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/IClientManagementService.cs	(revision 6800)
@@ -31,46 +31,65 @@
 
     #region Client
+    [OperationContract]
     Client GetClient(Guid id);
 
+    [OperationContract]
     IEnumerable<Client> GetClients();
 
+    [OperationContract]
     IEnumerable<Client> GetClientsOfGroup(Guid id);
 
+    [OperationContract]
     Guid AddClient(Client dto);
 
+    [OperationContract]
     void UpdateClient(Client dto);
 
+    [OperationContract]
     void DeleteClient(Client dto);
     #endregion
 
     #region Group
+    [OperationContract]
     Group GetGroup(Guid id);
 
+    [OperationContract]
     IEnumerable<Group> GetGroups();
 
+    [OperationContract]
     IEnumerable<Group> GetGroupsOf(Guid clientId);
 
+    [OperationContract]
     Guid AddGroup(Group dto);
 
+    [OperationContract]
     void UpdateGroup(Group dto);
 
+    [OperationContract]
     void DeleteGroup(Group dto);
     #endregion
 
     #region Resource
+    [OperationContract]
     IEnumerable<Resource> GetResources();
 
+    [OperationContract]
     IEnumerable<Resource> GetMembers(Guid groupId);
     #endregion
 
     #region ClientLog
+    [OperationContract]
     ClientLog GetLastClientLog(Guid clientId);
 
+    [OperationContract]
     IEnumerable<ClientLog> GetClientLogs(Guid clientId);
 
+    [OperationContract]
     IEnumerable<ClientLog> GetClientLogsSince(DateTime startDate);
 
+    [OperationContract]
     void AddClientLogEntry(ClientLog log);
 
+    [OperationContract]
     void DeleteClientLogEntry(DateTime timeStamp, Guid resourceId);
     #endregion
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Role.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Role.cs	(revision 6800)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Role.cs	(revision 6800)
@@ -0,0 +1,32 @@
+﻿#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.UserManagement.DataTransfer {
+
+  [DataContract]
+  public class Role : UserManagementItem {
+    [DataMember]
+    public Guid ApplicationId { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/User.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/User.cs	(revision 6800)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/User.cs	(revision 6800)
@@ -0,0 +1,55 @@
+﻿#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.UserManagement.DataTransfer {
+  [DataContract]
+  public class User : UserManagementItem {
+    [DataMember]
+    public Guid ApplicationId { get; set; }
+
+    [DataMember]
+    public string Email { get; set; }
+
+    [DataMember]
+    public bool IsApproved { get; set; }
+
+    [DataMember]
+    public bool IsLockedOut { get; set; }
+
+    [DataMember]
+    public DateTime CreateDate { get; set; }
+
+    [DataMember]
+    public DateTime LastLoginDate { get; set; }
+
+    [DataMember]
+    public DateTime LastPasswordChangeDate { get; set; }
+
+    [DataMember]
+    public DateTime LastLockoutDate { get; set; }
+
+    [DataMember]
+    public DateTime LastActivityDate { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/UserManagementItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/UserManagementItem.cs	(revision 6800)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/UserManagementItem.cs	(revision 6800)
@@ -0,0 +1,37 @@
+﻿#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.UserManagement.DataTransfer {
+  [DataContract]
+  public class UserManagementItem {
+    [DataMember]
+    public Guid Id { get; set; }
+
+    [DataMember]
+    public string Name { get; set; }
+
+    [DataMember]
+    public string Description { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/HeuristicLab.Services.UserManagement.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/HeuristicLab.Services.UserManagement.csproj	(revision 6800)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/HeuristicLab.Services.UserManagement.csproj	(revision 6800)
@@ -0,0 +1,75 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Services.UserManagement</RootNamespace>
+    <AssemblyName>HeuristicLab.Services.UserManagement</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DataTransfer\Role.cs" />
+    <Compile Include="DataTransfer\User.cs" />
+    <Compile Include="DataTransfer\UserManagementItem.cs" />
+    <Compile Include="IUserManagementService.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/IUserManagementService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/IUserManagementService.cs	(revision 6800)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/IUserManagementService.cs	(revision 6800)
@@ -0,0 +1,89 @@
+﻿#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.Collections.Generic;
+using System.Net.Security;
+using System.ServiceModel;
+using HeuristicLab.Services.UserManagement.DataTransfer;
+
+namespace HeuristicLab.Services.UserManagement {
+  [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
+  public interface IUserManagementService {
+    #region User
+    [OperationContract]
+    User GetUser(Guid id);
+
+    [OperationContract]
+    IEnumerable<User> GetUsers();
+
+    [OperationContract]
+    IEnumerable<User> GetUsersForApplication(Guid applicationId);
+
+    [OperationContract]
+    Guid AddUser(User user);
+
+    [OperationContract]
+    void DeleteUser(Guid id);
+
+    [OperationContract]
+    void UpdateUser(User user);
+
+    [OperationContract]
+    void SetRoleForUser(Guid roleId, Guid userId);
+
+    [OperationContract]
+    IEnumerable<User> GetUsersWithRole(Guid roleId);
+
+    [OperationContract]
+    void RemoveRoleFromUser(Guid roleId, Guid userId);
+
+    [OperationContract]
+    bool HasUserRole(Guid userId, Guid roleId);
+
+    [OperationContract]
+    User ResetPassword(string applicationName, string userName, string password);
+    #endregion
+
+    #region Role
+    [OperationContract]
+    Role GetRole(Guid id);
+
+    [OperationContract]
+    IEnumerable<Role> GetRoles();
+
+    [OperationContract]
+    IEnumerable<Role> GetRolesForApplication(Guid applicationId);
+
+    [OperationContract]
+    Guid AddRole(Role role);
+
+    [OperationContract]
+    void UpdateRole(Role role);
+
+    [OperationContract]
+    void DeleteRole(Guid id);
+
+    [OperationContract]
+    IEnumerable<Role> GetUserRoles(Guid userId);
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/Properties/AssemblyInfo.frame	(revision 6800)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/Properties/AssemblyInfo.frame	(revision 6800)
@@ -0,0 +1,57 @@
+﻿#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.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Services.UserManagement")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2011 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7032d7ba-4799-4708-803d-9f6cb3feed35")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.5.0")]
+[assembly: AssemblyFileVersion("3.3.5.$WCREV$")]
