Index: /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln	(revision 6809)
+++ /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln	(revision 6810)
@@ -9,26 +9,72 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.ClientManagement.DataAccess", "HeuristicLab.Services.ClientManagement.DataAccess\3.3\HeuristicLab.Services.ClientManagement.DataAccess.csproj", "{5C6595CF-436E-4C45-9B6C-FC3948A6E117}"
 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
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.UserManagement.DataAccess", "HeuristicLab.Services.UserManagement.DataAccess\3.3\HeuristicLab.Services.UserManagement.DataAccess.csproj", "{AB586CCE-F953-458F-9061-8E4B83FC90D6}"
+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}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Clients.UserManagement", "HeuristicLab.Clients.UserManagement\3.3\HeuristicLab.Clients.UserManagement.csproj", "{494F87F4-0F25-4D33-A382-10CDB2174D48}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|x86 = Debug|x86
 		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Release|x86.ActiveCfg = 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}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Debug|x86.ActiveCfg = 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
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7FAF6FD7-F5C4-42AA-BA32-E89B563BDF60}.Release|x86.ActiveCfg = Release|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{AB586CCE-F953-458F-9061-8E4B83FC90D6}.Release|x86.ActiveCfg = Release|Any CPU
 		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{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
+		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Release|x86.ActiveCfg = Release|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Release|Any CPU.Build.0 = Release|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{494F87F4-0F25-4D33-A382-10CDB2174D48}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/HeuristicLab.Clients.UserManagement.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/HeuristicLab.Clients.UserManagement.csproj	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/HeuristicLab.Clients.UserManagement.csproj	(revision 6810)
@@ -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>{494F87F4-0F25-4D33-A382-10CDB2174D48}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Clients.UserManagement</RootNamespace>
+    <AssemblyName>HeuristicLab.Clients.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="Properties\AssemblyInfo.cs" />
+    <Compile Include="ServiceClients\UserManagementClient.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="ServiceClients\GenerateServiceClients.cmd" />
+  </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.Clients.UserManagement/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/Properties/AssemblyInfo.frame	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/Properties/AssemblyInfo.frame	(revision 6810)
@@ -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.Clients.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$")]
Index: /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/ServiceClients/GenerateServiceClients.cmd
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/ServiceClients/GenerateServiceClients.cmd	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/ServiceClients/GenerateServiceClients.cmd	(revision 6810)
@@ -0,0 +1,30 @@
+echo off
+
+echo.
+echo *******************************************************************************************
+echo Generating HiveService client
+echo.
+
+svcutil.exe ^
+  http://localhost/UserManagementService?wsdl ^
+  /out:UserManagementClient ^
+  /namespace:*,HeuristicLab.Clients.UserManagement ^
+  /collectionType:System.Collections.Generic.List`1 ^
+  /targetClientVersion:Version35 ^
+  /serializable ^
+  /enableDataBinding ^
+  /config:..\app.config 
+
+echo.
+echo ---------------------------------------------------------------------------------------
+echo !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!!
+echo.
+echo Following modifications have to be done manually in generated data contracts:
+echo  * Remove method "protected void RaisePropertyChanged(string propertyName)" in HiveItem
+echo.
+echo !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!! ATTENTION !!!
+echo ---------------------------------------------------------------------------------------
+echo.
+echo Generation of HiveService client finished.
+echo *******************************************************************************************
+
Index: /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/ServiceClients/UserManagementClient.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/ServiceClients/UserManagementClient.cs	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/ServiceClients/UserManagementClient.cs	(revision 6810)
@@ -0,0 +1,568 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.237
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Clients.UserManagement {
+
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "UserManagementItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.UserManagement.Data" +
+      "Transfer")]
+  [System.SerializableAttribute()]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.UserManagement.User))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.UserManagement.Role))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.UserManagement.Application))]
+  public partial class UserManagementItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    [System.NonSerializedAttribute()]
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "User", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.UserManagement.Data" +
+      "Transfer")]
+  [System.SerializableAttribute()]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.UserManagement.Application))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.UserManagement.UserManagementItem))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.User>))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.UserManagement.Role))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Role>))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Application>))]
+  public partial class User : HeuristicLab.Clients.UserManagement.UserManagementItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private HeuristicLab.Clients.UserManagement.Application AppField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string CommentField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime CreationDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string EmailField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private bool IsApprovedField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private bool IsLockedOutField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private bool IsOnlineField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime LastActivityDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime LastLockoutDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime LastLoginDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.DateTime LastPasswordChangedDateField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string PasswordQuestionField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string ProviderNameField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private object ProviderUserKeyField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string UserNameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.UserManagement.Application App {
+      get {
+        return this.AppField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AppField, value) != true)) {
+          this.AppField = value;
+          this.RaisePropertyChanged("App");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Comment {
+      get {
+        return this.CommentField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.CommentField, value) != true)) {
+          this.CommentField = value;
+          this.RaisePropertyChanged("Comment");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime CreationDate {
+      get {
+        return this.CreationDateField;
+      }
+      set {
+        if ((this.CreationDateField.Equals(value) != true)) {
+          this.CreationDateField = value;
+          this.RaisePropertyChanged("CreationDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Email {
+      get {
+        return this.EmailField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.EmailField, value) != true)) {
+          this.EmailField = value;
+          this.RaisePropertyChanged("Email");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool IsApproved {
+      get {
+        return this.IsApprovedField;
+      }
+      set {
+        if ((this.IsApprovedField.Equals(value) != true)) {
+          this.IsApprovedField = value;
+          this.RaisePropertyChanged("IsApproved");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool IsLockedOut {
+      get {
+        return this.IsLockedOutField;
+      }
+      set {
+        if ((this.IsLockedOutField.Equals(value) != true)) {
+          this.IsLockedOutField = value;
+          this.RaisePropertyChanged("IsLockedOut");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool IsOnline {
+      get {
+        return this.IsOnlineField;
+      }
+      set {
+        if ((this.IsOnlineField.Equals(value) != true)) {
+          this.IsOnlineField = value;
+          this.RaisePropertyChanged("IsOnline");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime LastActivityDate {
+      get {
+        return this.LastActivityDateField;
+      }
+      set {
+        if ((this.LastActivityDateField.Equals(value) != true)) {
+          this.LastActivityDateField = value;
+          this.RaisePropertyChanged("LastActivityDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime LastLockoutDate {
+      get {
+        return this.LastLockoutDateField;
+      }
+      set {
+        if ((this.LastLockoutDateField.Equals(value) != true)) {
+          this.LastLockoutDateField = value;
+          this.RaisePropertyChanged("LastLockoutDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime LastLoginDate {
+      get {
+        return this.LastLoginDateField;
+      }
+      set {
+        if ((this.LastLoginDateField.Equals(value) != true)) {
+          this.LastLoginDateField = value;
+          this.RaisePropertyChanged("LastLoginDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime LastPasswordChangedDate {
+      get {
+        return this.LastPasswordChangedDateField;
+      }
+      set {
+        if ((this.LastPasswordChangedDateField.Equals(value) != true)) {
+          this.LastPasswordChangedDateField = value;
+          this.RaisePropertyChanged("LastPasswordChangedDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string PasswordQuestion {
+      get {
+        return this.PasswordQuestionField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.PasswordQuestionField, value) != true)) {
+          this.PasswordQuestionField = value;
+          this.RaisePropertyChanged("PasswordQuestion");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string ProviderName {
+      get {
+        return this.ProviderNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ProviderNameField, value) != true)) {
+          this.ProviderNameField = value;
+          this.RaisePropertyChanged("ProviderName");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public object ProviderUserKey {
+      get {
+        return this.ProviderUserKeyField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ProviderUserKeyField, value) != true)) {
+          this.ProviderUserKeyField = value;
+          this.RaisePropertyChanged("ProviderUserKey");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string UserName {
+      get {
+        return this.UserNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.UserNameField, value) != true)) {
+          this.UserNameField = value;
+          this.RaisePropertyChanged("UserName");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Role", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.UserManagement.Data" +
+      "Transfer")]
+  [System.SerializableAttribute()]
+  public partial class Role : HeuristicLab.Clients.UserManagement.UserManagementItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private HeuristicLab.Clients.UserManagement.Application AppField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private string RoleNameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.UserManagement.Application App {
+      get {
+        return this.AppField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AppField, value) != true)) {
+          this.AppField = value;
+          this.RaisePropertyChanged("App");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string RoleName {
+      get {
+        return this.RoleNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.RoleNameField, value) != true)) {
+          this.RoleNameField = value;
+          this.RaisePropertyChanged("RoleName");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Application", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.UserManagement.Data" +
+      "Transfer")]
+  [System.SerializableAttribute()]
+  public partial class Application : HeuristicLab.Clients.UserManagement.UserManagementItem {
+
+    [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.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "HeuristicLab.Clients.UserManagement.IUserManagementService")]
+  public interface IUserManagementService {
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/GetUsers", ReplyAction = "http://tempuri.org/IUserManagementService/GetUsersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.User> GetUsers(HeuristicLab.Clients.UserManagement.Application application);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/AddUser", ReplyAction = "http://tempuri.org/IUserManagementService/AddUserResponse")]
+    HeuristicLab.Clients.UserManagement.User AddUser(HeuristicLab.Clients.UserManagement.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/DeleteUser", ReplyAction = "http://tempuri.org/IUserManagementService/DeleteUserResponse")]
+    void DeleteUser(HeuristicLab.Clients.UserManagement.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/UpdateUser", ReplyAction = "http://tempuri.org/IUserManagementService/UpdateUserResponse")]
+    void UpdateUser(HeuristicLab.Clients.UserManagement.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/AddUserToRole", ReplyAction = "http://tempuri.org/IUserManagementService/AddUserToRoleResponse")]
+    void AddUserToRole(HeuristicLab.Clients.UserManagement.Role role, HeuristicLab.Clients.UserManagement.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/RemoveUserFromRole", ReplyAction = "http://tempuri.org/IUserManagementService/RemoveUserFromRoleResponse")]
+    void RemoveUserFromRole(HeuristicLab.Clients.UserManagement.Role role, HeuristicLab.Clients.UserManagement.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/IsUserInRole", ReplyAction = "http://tempuri.org/IUserManagementService/IsUserInRoleResponse")]
+    bool IsUserInRole(HeuristicLab.Clients.UserManagement.User user, HeuristicLab.Clients.UserManagement.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/ResetPassword", ReplyAction = "http://tempuri.org/IUserManagementService/ResetPasswordResponse")]
+    HeuristicLab.Clients.UserManagement.User ResetPassword(string applicationName, string userName, string password);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/GetRoles", ReplyAction = "http://tempuri.org/IUserManagementService/GetRolesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Role> GetRoles(HeuristicLab.Clients.UserManagement.Application application);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/AddRole", ReplyAction = "http://tempuri.org/IUserManagementService/AddRoleResponse")]
+    HeuristicLab.Clients.UserManagement.Role AddRole(HeuristicLab.Clients.UserManagement.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/UpdateRole", ReplyAction = "http://tempuri.org/IUserManagementService/UpdateRoleResponse")]
+    void UpdateRole(HeuristicLab.Clients.UserManagement.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/DeleteRole", ReplyAction = "http://tempuri.org/IUserManagementService/DeleteRoleResponse")]
+    void DeleteRole(HeuristicLab.Clients.UserManagement.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/GetUserRoles", ReplyAction = "http://tempuri.org/IUserManagementService/GetUserRolesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Role> GetUserRoles(HeuristicLab.Clients.UserManagement.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/GetApplications", ReplyAction = "http://tempuri.org/IUserManagementService/GetApplicationsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Application> GetApplications();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/GetApplicationUsers", ReplyAction = "http://tempuri.org/IUserManagementService/GetApplicationUsersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.User> GetApplicationUsers(HeuristicLab.Clients.UserManagement.Application application);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/AddApplication", ReplyAction = "http://tempuri.org/IUserManagementService/AddApplicationResponse")]
+    HeuristicLab.Clients.UserManagement.Application AddApplication(HeuristicLab.Clients.UserManagement.Application application);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/UpdateApplication", ReplyAction = "http://tempuri.org/IUserManagementService/UpdateApplicationResponse")]
+    void UpdateApplication(HeuristicLab.Clients.UserManagement.Application application);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/DeleteApplication", ReplyAction = "http://tempuri.org/IUserManagementService/DeleteApplicationResponse")]
+    void DeleteApplication(HeuristicLab.Clients.UserManagement.Application application);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/CheckUserExists", ReplyAction = "http://tempuri.org/IUserManagementService/CheckUserExistsResponse")]
+    bool CheckUserExists(string application, string userName, string password);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IUserManagementService/GetUser", ReplyAction = "http://tempuri.org/IUserManagementService/GetUserResponse")]
+    bool GetUser(string application, string userName, string password);
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public interface IUserManagementServiceChannel : HeuristicLab.Clients.UserManagement.IUserManagementService, System.ServiceModel.IClientChannel {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public partial class UserManagementServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.UserManagement.IUserManagementService>, HeuristicLab.Clients.UserManagement.IUserManagementService {
+
+    public UserManagementServiceClient() {
+    }
+
+    public UserManagementServiceClient(string endpointConfigurationName) :
+      base(endpointConfigurationName) {
+    }
+
+    public UserManagementServiceClient(string endpointConfigurationName, string remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public UserManagementServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public UserManagementServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(binding, remoteAddress) {
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.User> GetUsers(HeuristicLab.Clients.UserManagement.Application application) {
+      return base.Channel.GetUsers(application);
+    }
+
+    public HeuristicLab.Clients.UserManagement.User AddUser(HeuristicLab.Clients.UserManagement.User user) {
+      return base.Channel.AddUser(user);
+    }
+
+    public void DeleteUser(HeuristicLab.Clients.UserManagement.User user) {
+      base.Channel.DeleteUser(user);
+    }
+
+    public void UpdateUser(HeuristicLab.Clients.UserManagement.User user) {
+      base.Channel.UpdateUser(user);
+    }
+
+    public void AddUserToRole(HeuristicLab.Clients.UserManagement.Role role, HeuristicLab.Clients.UserManagement.User user) {
+      base.Channel.AddUserToRole(role, user);
+    }
+
+    public void RemoveUserFromRole(HeuristicLab.Clients.UserManagement.Role role, HeuristicLab.Clients.UserManagement.User user) {
+      base.Channel.RemoveUserFromRole(role, user);
+    }
+
+    public bool IsUserInRole(HeuristicLab.Clients.UserManagement.User user, HeuristicLab.Clients.UserManagement.Role role) {
+      return base.Channel.IsUserInRole(user, role);
+    }
+
+    public HeuristicLab.Clients.UserManagement.User ResetPassword(string applicationName, string userName, string password) {
+      return base.Channel.ResetPassword(applicationName, userName, password);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Role> GetRoles(HeuristicLab.Clients.UserManagement.Application application) {
+      return base.Channel.GetRoles(application);
+    }
+
+    public HeuristicLab.Clients.UserManagement.Role AddRole(HeuristicLab.Clients.UserManagement.Role role) {
+      return base.Channel.AddRole(role);
+    }
+
+    public void UpdateRole(HeuristicLab.Clients.UserManagement.Role role) {
+      base.Channel.UpdateRole(role);
+    }
+
+    public void DeleteRole(HeuristicLab.Clients.UserManagement.Role role) {
+      base.Channel.DeleteRole(role);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Role> GetUserRoles(HeuristicLab.Clients.UserManagement.User user) {
+      return base.Channel.GetUserRoles(user);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.Application> GetApplications() {
+      return base.Channel.GetApplications();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.UserManagement.User> GetApplicationUsers(HeuristicLab.Clients.UserManagement.Application application) {
+      return base.Channel.GetApplicationUsers(application);
+    }
+
+    public HeuristicLab.Clients.UserManagement.Application AddApplication(HeuristicLab.Clients.UserManagement.Application application) {
+      return base.Channel.AddApplication(application);
+    }
+
+    public void UpdateApplication(HeuristicLab.Clients.UserManagement.Application application) {
+      base.Channel.UpdateApplication(application);
+    }
+
+    public void DeleteApplication(HeuristicLab.Clients.UserManagement.Application application) {
+      base.Channel.DeleteApplication(application);
+    }
+
+    public bool CheckUserExists(string application, string userName, string password) {
+      return base.Channel.CheckUserExists(application, userName, password);
+    }
+
+    public bool GetUser(string application, string userName, string password) {
+      return base.Channel.GetUser(application, userName, password);
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/app.config
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/app.config	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.UserManagement/3.3/app.config	(revision 6810)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+    <system.serviceModel>
+        <bindings>
+            <wsHttpBinding>
+                <binding name="WSHttpBinding_IUserManagementService" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
+                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
+                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
+                    allowCookies="false">
+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
+                        enabled="false" />
+                    <security mode="Message">
+                        <transport clientCredentialType="Windows" proxyCredentialType="None"
+                            realm="" />
+                        <message clientCredentialType="UserName" negotiateServiceCredential="true"
+                            algorithmSuite="Default" />
+                    </security>
+                </binding>
+            </wsHttpBinding>
+        </bindings>
+        <client>
+            <endpoint address="http://localhost/UserManagementService" binding="wsHttpBinding"
+                bindingConfiguration="WSHttpBinding_IUserManagementService"
+                contract="HeuristicLab.Clients.UserManagement.IUserManagementService"
+                name="WSHttpBinding_IUserManagementService">
+                <identity>
+                    <certificate encodedValue="AwAAAAEAAAAUAAAAQkazTmWcZqFuuREaov8jmDtOu4UgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhAVedIj+0w6jEdhZErAeemyMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTExMDkwNjA4NDUzOVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCiKeSwXFm0qxkuMFao9NHftClUYvX0jpiyKFthUnutfhB2FF3Ie8a8U15M+GBYSZOV5vXlEn3D30HsV/x6L9/UU1fiJndJd5lWI2/4mP2jra0qP0b8xyitHfRhePIfpDkufZqIOvOmT/DoFqMTK3joexzuEmAw5Ugil6fbOxELlwIDAQABo0kwRzBFBgNVHQEEPjA8gBCJmAWIXCTyTFXdjdnseED4oRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghAVedIj+0w6jEdhZErAeemyMAkGBSsOAwIdBQADgYEACW9nLJnu1+OJg93AAKfWqkiETHcXUcULrPjMWJQsy5fkHY1qExKBGeUJHK0REvqQs3KRY3GqikMjlAnDmb/e9P1h+PynsRv7y2zAGCnKW4nryWVncWf1xJL9xvKNuH2aR4+Wdq9oo2m793+RXtA7YTSsr/OiiIdkQcjUGQtkaYo=" />
+                </identity>
+            </endpoint>
+        </client>
+    </system.serviceModel>
+</configuration>
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/HeuristicLab.Services.UserManagement.DataAccess.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/HeuristicLab.Services.UserManagement.DataAccess.csproj	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/HeuristicLab.Services.UserManagement.DataAccess.csproj	(revision 6810)
@@ -0,0 +1,97 @@
+﻿<?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>{AB586CCE-F953-458F-9061-8E4B83FC90D6}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Services.UserManagement.DataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.Services.UserManagement.DataAccess</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.Data.Linq" />
+    <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="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+    <Compile Include="UserManagement.designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>UserManagement.dbml</DependentUpon>
+    </Compile>
+    <None Include="app.config" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <None Include="UserManagement.dbml">
+      <Generator>MSLinqToSQLGenerator</Generator>
+      <LastGenOutput>UserManagement.designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="UserManagement.dbml.layout">
+      <DependentUpon>UserManagement.dbml</DependentUpon>
+    </None>
+  </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.DataAccess/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 6810)
@@ -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.DataAccess")]
+[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$")]
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/Settings.Designer.cs	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/Settings.Designer.cs	(revision 6810)
@@ -0,0 +1,37 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.237
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Services.UserManagement.DataAccess.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
+        [global::System.Configuration.DefaultSettingValueAttribute("Data Source=.;Initial Catalog=HeuristicLab.Authentication;Integrated Security=Tru" +
+            "e")]
+        public string HeuristicLab_AuthenticationConnectionString {
+            get {
+                return ((string)(this["HeuristicLab_AuthenticationConnectionString"]));
+            }
+        }
+    }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/Settings.settings
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/Settings.settings	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/Properties/Settings.settings	(revision 6810)
@@ -0,0 +1,14 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="HeuristicLab.Services.UserManagement.DataAccess.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="HeuristicLab_AuthenticationConnectionString" Type="(Connection string)" Scope="Application">
+      <DesignTimeValue Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
+&lt;SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
+  &lt;ConnectionString&gt;Data Source=.;Initial Catalog=HeuristicLab.Authentication;Integrated Security=True&lt;/ConnectionString&gt;
+  &lt;ProviderName&gt;System.Data.SqlClient&lt;/ProviderName&gt;
+&lt;/SerializableConnectionString&gt;</DesignTimeValue>
+      <Value Profile="(Default)">Data Source=.;Initial Catalog=HeuristicLab.Authentication;Integrated Security=True</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.dbml
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.dbml	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.dbml	(revision 6810)
@@ -0,0 +1,74 @@
+﻿<?xml version="1.0" encoding="utf-8"?><Database Name="HeuristicLab.Authentication" Class="UserManagementDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
+  <Connection Mode="AppSettings" ConnectionString="Data Source=f005pc;Initial Catalog=HeuristicLab.Authentication;Integrated Security=True" SettingsObjectName="HeuristicLab.Services.UserManagement.DataAccess.Properties.Settings" SettingsPropertyName="HeuristicLab_AuthenticationConnectionString" Provider="System.Data.SqlClient" />
+  <Table Name="dbo.aspnet_Applications" Member="aspnet_Applications">
+    <Type Name="aspnet_Application">
+      <Column Name="ApplicationName" Type="System.String" DbType="NVarChar(256) NOT NULL" CanBeNull="false" />
+      <Column Name="LoweredApplicationName" Type="System.String" DbType="NVarChar(256) NOT NULL" CanBeNull="false" />
+      <Column Name="ApplicationId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="NVarChar(256)" CanBeNull="true" />
+      <Association Name="aspnet_Application_aspnet_Membership" Member="aspnet_Memberships" ThisKey="ApplicationId" OtherKey="ApplicationId" Type="aspnet_Membership" />
+      <Association Name="aspnet_Application_aspnet_Role" Member="aspnet_Roles" ThisKey="ApplicationId" OtherKey="ApplicationId" Type="aspnet_Role" />
+      <Association Name="aspnet_Application_aspnet_User" Member="aspnet_Users" ThisKey="ApplicationId" OtherKey="ApplicationId" Type="aspnet_User" />
+    </Type>
+  </Table>
+  <Table Name="dbo.aspnet_Membership" Member="aspnet_Memberships">
+    <Type Name="aspnet_Membership">
+      <Column Name="ApplicationId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Password" Type="System.String" DbType="NVarChar(128) NOT NULL" CanBeNull="false" />
+      <Column Name="PasswordFormat" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="PasswordSalt" Type="System.String" DbType="NVarChar(128) NOT NULL" CanBeNull="false" />
+      <Column Name="MobilePIN" Type="System.String" DbType="NVarChar(16)" CanBeNull="true" />
+      <Column Name="Email" Type="System.String" DbType="NVarChar(256)" CanBeNull="true" />
+      <Column Name="LoweredEmail" Type="System.String" DbType="NVarChar(256)" CanBeNull="true" />
+      <Column Name="PasswordQuestion" Type="System.String" DbType="NVarChar(256)" CanBeNull="true" />
+      <Column Name="PasswordAnswer" Type="System.String" DbType="NVarChar(128)" CanBeNull="true" />
+      <Column Name="IsApproved" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
+      <Column Name="IsLockedOut" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
+      <Column Name="CreateDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="LastLoginDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="LastPasswordChangedDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="LastLockoutDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="FailedPasswordAttemptCount" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="FailedPasswordAttemptWindowStart" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="FailedPasswordAnswerAttemptCount" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
+      <Column Name="FailedPasswordAnswerAttemptWindowStart" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Column Name="Comment" Type="System.String" DbType="NText" CanBeNull="true" UpdateCheck="Never" />
+      <Association Name="aspnet_Application_aspnet_Membership" Member="aspnet_Application" ThisKey="ApplicationId" OtherKey="ApplicationId" Type="aspnet_Application" IsForeignKey="true" />
+      <Association Name="aspnet_User_aspnet_Membership" Member="aspnet_User" ThisKey="UserId" OtherKey="UserId" Type="aspnet_User" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.aspnet_Roles" Member="aspnet_Roles">
+    <Type Name="aspnet_Role">
+      <Column Name="ApplicationId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="RoleId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="RoleName" Type="System.String" DbType="NVarChar(256) NOT NULL" CanBeNull="false" />
+      <Column Name="LoweredRoleName" Type="System.String" DbType="NVarChar(256) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="NVarChar(256)" CanBeNull="true" />
+      <Association Name="aspnet_Role_aspnet_UsersInRole" Member="aspnet_UsersInRoles" ThisKey="RoleId" OtherKey="RoleId" Type="aspnet_UsersInRole" />
+      <Association Name="aspnet_Application_aspnet_Role" Member="aspnet_Application" ThisKey="ApplicationId" OtherKey="ApplicationId" Type="aspnet_Application" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.aspnet_UsersInRoles" Member="aspnet_UsersInRoles">
+    <Type Name="aspnet_UsersInRole">
+      <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="RoleId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="aspnet_Role_aspnet_UsersInRole" Member="aspnet_Role" ThisKey="RoleId" OtherKey="RoleId" Type="aspnet_Role" IsForeignKey="true" />
+      <Association Name="aspnet_User_aspnet_UsersInRole" Member="aspnet_User" ThisKey="UserId" OtherKey="UserId" Type="aspnet_User" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.aspnet_Users" Member="aspnet_Users">
+    <Type Name="aspnet_User">
+      <Column Name="ApplicationId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />
+      <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="UserName" Type="System.String" DbType="NVarChar(256) NOT NULL" CanBeNull="false" />
+      <Column Name="LoweredUserName" Type="System.String" DbType="NVarChar(256) NOT NULL" CanBeNull="false" />
+      <Column Name="MobileAlias" Type="System.String" DbType="NVarChar(16)" CanBeNull="true" />
+      <Column Name="IsAnonymous" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
+      <Column Name="LastActivityDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
+      <Association Name="aspnet_User_aspnet_Membership" Member="aspnet_Membership" ThisKey="UserId" OtherKey="UserId" Type="aspnet_Membership" Cardinality="One" />
+      <Association Name="aspnet_User_aspnet_UsersInRole" Member="aspnet_UsersInRoles" ThisKey="UserId" OtherKey="UserId" Type="aspnet_UsersInRole" />
+      <Association Name="aspnet_Application_aspnet_User" Member="aspnet_Application" ThisKey="ApplicationId" OtherKey="ApplicationId" Type="aspnet_Application" IsForeignKey="true" />
+    </Type>
+  </Table>
+</Database>
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.dbml.layout
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.dbml.layout	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.dbml.layout	(revision 6810)
@@ -0,0 +1,78 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 11, 8.5" name="UserManagement">
+  <DataContextMoniker Name="/UserManagementDataContext" />
+  <nestedChildShapes>
+    <classShape Id="bfae4898-c14d-4e2a-b390-59a7329f88fc" absoluteBounds="0.5, 0.5, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/UserManagementDataContext/aspnet_Application" />
+      <nestedChildShapes>
+        <elementListCompartment Id="66438679-9d23-4f10-96a5-38fea3bc2254" absoluteBounds="0.51500000000000012, 0.96, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="dce51ff4-29ce-4e3a-83ea-54f2b2133c39" absoluteBounds="6.625, 0.5, 2, 4.8477197265625">
+      <DataClassMoniker Name="/UserManagementDataContext/aspnet_Membership" />
+      <nestedChildShapes>
+        <elementListCompartment Id="c41f1dfb-2b00-4e69-83d8-954077e4041d" absoluteBounds="6.6400000000000006, 0.96, 1.9700000000000002, 4.2877197265625" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(2.5 : 1.04509951660156); (6.625 : 1.04509951660156)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/UserManagementDataContext/aspnet_Application/aspnet_Application_aspnet_Membership" />
+      <nodes>
+        <classShapeMoniker Id="bfae4898-c14d-4e2a-b390-59a7329f88fc" />
+        <classShapeMoniker Id="dce51ff4-29ce-4e3a-83ea-54f2b2133c39" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="cb8a41cf-1351-439a-b65c-4437180e49da" absoluteBounds="0.5, 2.5, 2, 1.7708968098958331">
+      <DataClassMoniker Name="/UserManagementDataContext/aspnet_Role" />
+      <nestedChildShapes>
+        <elementListCompartment Id="73f24880-cefd-4c1b-a902-b47e159f2be9" absoluteBounds="0.51500000000000012, 2.96, 1.9700000000000002, 1.2108968098958333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(1.5 : 2.07859537760417); (1.5 : 2.5)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/UserManagementDataContext/aspnet_Application/aspnet_Application_aspnet_Role" />
+      <nodes>
+        <classShapeMoniker Id="bfae4898-c14d-4e2a-b390-59a7329f88fc" />
+        <classShapeMoniker Id="cb8a41cf-1351-439a-b65c-4437180e49da" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="014ea058-70d5-4a65-9239-8bc3bff72ba2" absoluteBounds="2.25, 5.125, 2, 1.1939925130208333">
+      <DataClassMoniker Name="/UserManagementDataContext/aspnet_UsersInRole" />
+      <nestedChildShapes>
+        <elementListCompartment Id="2c3f6ef1-9b30-4e95-b26c-7d56e3f35263" absoluteBounds="2.2649999999999997, 5.585, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(1.3749995 : 4.27089680989583); (1.3749995 : 5.72199625651042); (2.25 : 5.72199625651042)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/UserManagementDataContext/aspnet_Role/aspnet_Role_aspnet_UsersInRole" />
+      <nodes>
+        <classShapeMoniker Id="cb8a41cf-1351-439a-b65c-4437180e49da" />
+        <classShapeMoniker Id="014ea058-70d5-4a65-9239-8bc3bff72ba2" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="64fd2372-ad93-4552-8a0d-0aeb933ac7ba" absoluteBounds="3.75, 2.5, 2, 2.1554996744791666">
+      <DataClassMoniker Name="/UserManagementDataContext/aspnet_User" />
+      <nestedChildShapes>
+        <elementListCompartment Id="9491033f-9589-4746-b0fb-3b1a2f95de3b" absoluteBounds="3.7649999999999997, 2.96, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(5.75 : 3.57774983723958); (6.625 : 3.57774983723958)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/UserManagementDataContext/aspnet_User/aspnet_User_aspnet_Membership" />
+      <nodes>
+        <classShapeMoniker Id="64fd2372-ad93-4552-8a0d-0aeb933ac7ba" />
+        <classShapeMoniker Id="dce51ff4-29ce-4e3a-83ea-54f2b2133c39" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(4 : 4.65549967447917); (4 : 5.125)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/UserManagementDataContext/aspnet_User/aspnet_User_aspnet_UsersInRole" />
+      <nodes>
+        <classShapeMoniker Id="64fd2372-ad93-4552-8a0d-0aeb933ac7ba" />
+        <classShapeMoniker Id="014ea058-70d5-4a65-9239-8bc3bff72ba2" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.5 : 1.71519903320312); (4.75 : 1.71519903320312); (4.75 : 2.5)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/UserManagementDataContext/aspnet_Application/aspnet_Application_aspnet_User" />
+      <nodes>
+        <classShapeMoniker Id="bfae4898-c14d-4e2a-b390-59a7329f88fc" />
+        <classShapeMoniker Id="64fd2372-ad93-4552-8a0d-0aeb933ac7ba" />
+      </nodes>
+    </associationConnector>
+  </nestedChildShapes>
+</ordesignerObjectsDiagram>
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.designer.cs	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/UserManagement.designer.cs	(revision 6810)
@@ -0,0 +1,1665 @@
+﻿#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.237
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Services.UserManagement.DataAccess
+{
+	using System.Data.Linq;
+	using System.Data.Linq.Mapping;
+	using System.Data;
+	using System.Collections.Generic;
+	using System.Reflection;
+	using System.Linq;
+	using System.Linq.Expressions;
+	using System.ComponentModel;
+	using System;
+	
+	
+	[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="HeuristicLab.Authentication")]
+	public partial class UserManagementDataContext : System.Data.Linq.DataContext
+	{
+		
+		private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
+		
+    #region Extensibility Method Definitions
+    partial void OnCreated();
+    partial void Insertaspnet_Application(aspnet_Application instance);
+    partial void Updateaspnet_Application(aspnet_Application instance);
+    partial void Deleteaspnet_Application(aspnet_Application instance);
+    partial void Insertaspnet_Membership(aspnet_Membership instance);
+    partial void Updateaspnet_Membership(aspnet_Membership instance);
+    partial void Deleteaspnet_Membership(aspnet_Membership instance);
+    partial void Insertaspnet_Role(aspnet_Role instance);
+    partial void Updateaspnet_Role(aspnet_Role instance);
+    partial void Deleteaspnet_Role(aspnet_Role instance);
+    partial void Insertaspnet_UsersInRole(aspnet_UsersInRole instance);
+    partial void Updateaspnet_UsersInRole(aspnet_UsersInRole instance);
+    partial void Deleteaspnet_UsersInRole(aspnet_UsersInRole instance);
+    partial void Insertaspnet_User(aspnet_User instance);
+    partial void Updateaspnet_User(aspnet_User instance);
+    partial void Deleteaspnet_User(aspnet_User instance);
+    #endregion
+		
+		public UserManagementDataContext() : 
+				base(global::HeuristicLab.Services.UserManagement.DataAccess.Properties.Settings.Default.HeuristicLab_AuthenticationConnectionString, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public UserManagementDataContext(string connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public UserManagementDataContext(System.Data.IDbConnection connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public UserManagementDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public UserManagementDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public System.Data.Linq.Table<aspnet_Application> aspnet_Applications
+		{
+			get
+			{
+				return this.GetTable<aspnet_Application>();
+			}
+		}
+		
+		public System.Data.Linq.Table<aspnet_Membership> aspnet_Memberships
+		{
+			get
+			{
+				return this.GetTable<aspnet_Membership>();
+			}
+		}
+		
+		public System.Data.Linq.Table<aspnet_Role> aspnet_Roles
+		{
+			get
+			{
+				return this.GetTable<aspnet_Role>();
+			}
+		}
+		
+		public System.Data.Linq.Table<aspnet_UsersInRole> aspnet_UsersInRoles
+		{
+			get
+			{
+				return this.GetTable<aspnet_UsersInRole>();
+			}
+		}
+		
+		public System.Data.Linq.Table<aspnet_User> aspnet_Users
+		{
+			get
+			{
+				return this.GetTable<aspnet_User>();
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.aspnet_Applications")]
+	public partial class aspnet_Application : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private string _ApplicationName;
+		
+		private string _LoweredApplicationName;
+		
+		private System.Guid _ApplicationId;
+		
+		private string _Description;
+		
+		private EntitySet<aspnet_Membership> _aspnet_Memberships;
+		
+		private EntitySet<aspnet_Role> _aspnet_Roles;
+		
+		private EntitySet<aspnet_User> _aspnet_Users;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnApplicationNameChanging(string value);
+    partial void OnApplicationNameChanged();
+    partial void OnLoweredApplicationNameChanging(string value);
+    partial void OnLoweredApplicationNameChanged();
+    partial void OnApplicationIdChanging(System.Guid value);
+    partial void OnApplicationIdChanged();
+    partial void OnDescriptionChanging(string value);
+    partial void OnDescriptionChanged();
+    #endregion
+		
+		public aspnet_Application()
+		{
+			this._aspnet_Memberships = new EntitySet<aspnet_Membership>(new Action<aspnet_Membership>(this.attach_aspnet_Memberships), new Action<aspnet_Membership>(this.detach_aspnet_Memberships));
+			this._aspnet_Roles = new EntitySet<aspnet_Role>(new Action<aspnet_Role>(this.attach_aspnet_Roles), new Action<aspnet_Role>(this.detach_aspnet_Roles));
+			this._aspnet_Users = new EntitySet<aspnet_User>(new Action<aspnet_User>(this.attach_aspnet_Users), new Action<aspnet_User>(this.detach_aspnet_Users));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ApplicationName", DbType="NVarChar(256) NOT NULL", CanBeNull=false)]
+		public string ApplicationName
+		{
+			get
+			{
+				return this._ApplicationName;
+			}
+			set
+			{
+				if ((this._ApplicationName != value))
+				{
+					this.OnApplicationNameChanging(value);
+					this.SendPropertyChanging();
+					this._ApplicationName = value;
+					this.SendPropertyChanged("ApplicationName");
+					this.OnApplicationNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LoweredApplicationName", DbType="NVarChar(256) NOT NULL", CanBeNull=false)]
+		public string LoweredApplicationName
+		{
+			get
+			{
+				return this._LoweredApplicationName;
+			}
+			set
+			{
+				if ((this._LoweredApplicationName != value))
+				{
+					this.OnLoweredApplicationNameChanging(value);
+					this.SendPropertyChanging();
+					this._LoweredApplicationName = value;
+					this.SendPropertyChanged("LoweredApplicationName");
+					this.OnLoweredApplicationNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ApplicationId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ApplicationId
+		{
+			get
+			{
+				return this._ApplicationId;
+			}
+			set
+			{
+				if ((this._ApplicationId != value))
+				{
+					this.OnApplicationIdChanging(value);
+					this.SendPropertyChanging();
+					this._ApplicationId = value;
+					this.SendPropertyChanged("ApplicationId");
+					this.OnApplicationIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NVarChar(256)")]
+		public string Description
+		{
+			get
+			{
+				return this._Description;
+			}
+			set
+			{
+				if ((this._Description != value))
+				{
+					this.OnDescriptionChanging(value);
+					this.SendPropertyChanging();
+					this._Description = value;
+					this.SendPropertyChanged("Description");
+					this.OnDescriptionChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Application_aspnet_Membership", Storage="_aspnet_Memberships", ThisKey="ApplicationId", OtherKey="ApplicationId")]
+		public EntitySet<aspnet_Membership> aspnet_Memberships
+		{
+			get
+			{
+				return this._aspnet_Memberships;
+			}
+			set
+			{
+				this._aspnet_Memberships.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Application_aspnet_Role", Storage="_aspnet_Roles", ThisKey="ApplicationId", OtherKey="ApplicationId")]
+		public EntitySet<aspnet_Role> aspnet_Roles
+		{
+			get
+			{
+				return this._aspnet_Roles;
+			}
+			set
+			{
+				this._aspnet_Roles.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Application_aspnet_User", Storage="_aspnet_Users", ThisKey="ApplicationId", OtherKey="ApplicationId")]
+		public EntitySet<aspnet_User> aspnet_Users
+		{
+			get
+			{
+				return this._aspnet_Users;
+			}
+			set
+			{
+				this._aspnet_Users.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_aspnet_Memberships(aspnet_Membership entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Application = this;
+		}
+		
+		private void detach_aspnet_Memberships(aspnet_Membership entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Application = null;
+		}
+		
+		private void attach_aspnet_Roles(aspnet_Role entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Application = this;
+		}
+		
+		private void detach_aspnet_Roles(aspnet_Role entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Application = null;
+		}
+		
+		private void attach_aspnet_Users(aspnet_User entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Application = this;
+		}
+		
+		private void detach_aspnet_Users(aspnet_User entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Application = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.aspnet_Membership")]
+	public partial class aspnet_Membership : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ApplicationId;
+		
+		private System.Guid _UserId;
+		
+		private string _Password;
+		
+		private int _PasswordFormat;
+		
+		private string _PasswordSalt;
+		
+		private string _MobilePIN;
+		
+		private string _Email;
+		
+		private string _LoweredEmail;
+		
+		private string _PasswordQuestion;
+		
+		private string _PasswordAnswer;
+		
+		private bool _IsApproved;
+		
+		private bool _IsLockedOut;
+		
+		private System.DateTime _CreateDate;
+		
+		private System.DateTime _LastLoginDate;
+		
+		private System.DateTime _LastPasswordChangedDate;
+		
+		private System.DateTime _LastLockoutDate;
+		
+		private int _FailedPasswordAttemptCount;
+		
+		private System.DateTime _FailedPasswordAttemptWindowStart;
+		
+		private int _FailedPasswordAnswerAttemptCount;
+		
+		private System.DateTime _FailedPasswordAnswerAttemptWindowStart;
+		
+		private string _Comment;
+		
+		private EntityRef<aspnet_Application> _aspnet_Application;
+		
+		private EntityRef<aspnet_User> _aspnet_User;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnApplicationIdChanging(System.Guid value);
+    partial void OnApplicationIdChanged();
+    partial void OnUserIdChanging(System.Guid value);
+    partial void OnUserIdChanged();
+    partial void OnPasswordChanging(string value);
+    partial void OnPasswordChanged();
+    partial void OnPasswordFormatChanging(int value);
+    partial void OnPasswordFormatChanged();
+    partial void OnPasswordSaltChanging(string value);
+    partial void OnPasswordSaltChanged();
+    partial void OnMobilePINChanging(string value);
+    partial void OnMobilePINChanged();
+    partial void OnEmailChanging(string value);
+    partial void OnEmailChanged();
+    partial void OnLoweredEmailChanging(string value);
+    partial void OnLoweredEmailChanged();
+    partial void OnPasswordQuestionChanging(string value);
+    partial void OnPasswordQuestionChanged();
+    partial void OnPasswordAnswerChanging(string value);
+    partial void OnPasswordAnswerChanged();
+    partial void OnIsApprovedChanging(bool value);
+    partial void OnIsApprovedChanged();
+    partial void OnIsLockedOutChanging(bool value);
+    partial void OnIsLockedOutChanged();
+    partial void OnCreateDateChanging(System.DateTime value);
+    partial void OnCreateDateChanged();
+    partial void OnLastLoginDateChanging(System.DateTime value);
+    partial void OnLastLoginDateChanged();
+    partial void OnLastPasswordChangedDateChanging(System.DateTime value);
+    partial void OnLastPasswordChangedDateChanged();
+    partial void OnLastLockoutDateChanging(System.DateTime value);
+    partial void OnLastLockoutDateChanged();
+    partial void OnFailedPasswordAttemptCountChanging(int value);
+    partial void OnFailedPasswordAttemptCountChanged();
+    partial void OnFailedPasswordAttemptWindowStartChanging(System.DateTime value);
+    partial void OnFailedPasswordAttemptWindowStartChanged();
+    partial void OnFailedPasswordAnswerAttemptCountChanging(int value);
+    partial void OnFailedPasswordAnswerAttemptCountChanged();
+    partial void OnFailedPasswordAnswerAttemptWindowStartChanging(System.DateTime value);
+    partial void OnFailedPasswordAnswerAttemptWindowStartChanged();
+    partial void OnCommentChanging(string value);
+    partial void OnCommentChanged();
+    #endregion
+		
+		public aspnet_Membership()
+		{
+			this._aspnet_Application = default(EntityRef<aspnet_Application>);
+			this._aspnet_User = default(EntityRef<aspnet_User>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ApplicationId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ApplicationId
+		{
+			get
+			{
+				return this._ApplicationId;
+			}
+			set
+			{
+				if ((this._ApplicationId != value))
+				{
+					if (this._aspnet_Application.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnApplicationIdChanging(value);
+					this.SendPropertyChanging();
+					this._ApplicationId = value;
+					this.SendPropertyChanged("ApplicationId");
+					this.OnApplicationIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					if (this._aspnet_User.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Password", DbType="NVarChar(128) NOT NULL", CanBeNull=false)]
+		public string Password
+		{
+			get
+			{
+				return this._Password;
+			}
+			set
+			{
+				if ((this._Password != value))
+				{
+					this.OnPasswordChanging(value);
+					this.SendPropertyChanging();
+					this._Password = value;
+					this.SendPropertyChanged("Password");
+					this.OnPasswordChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PasswordFormat", DbType="Int NOT NULL")]
+		public int PasswordFormat
+		{
+			get
+			{
+				return this._PasswordFormat;
+			}
+			set
+			{
+				if ((this._PasswordFormat != value))
+				{
+					this.OnPasswordFormatChanging(value);
+					this.SendPropertyChanging();
+					this._PasswordFormat = value;
+					this.SendPropertyChanged("PasswordFormat");
+					this.OnPasswordFormatChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PasswordSalt", DbType="NVarChar(128) NOT NULL", CanBeNull=false)]
+		public string PasswordSalt
+		{
+			get
+			{
+				return this._PasswordSalt;
+			}
+			set
+			{
+				if ((this._PasswordSalt != value))
+				{
+					this.OnPasswordSaltChanging(value);
+					this.SendPropertyChanging();
+					this._PasswordSalt = value;
+					this.SendPropertyChanged("PasswordSalt");
+					this.OnPasswordSaltChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MobilePIN", DbType="NVarChar(16)")]
+		public string MobilePIN
+		{
+			get
+			{
+				return this._MobilePIN;
+			}
+			set
+			{
+				if ((this._MobilePIN != value))
+				{
+					this.OnMobilePINChanging(value);
+					this.SendPropertyChanging();
+					this._MobilePIN = value;
+					this.SendPropertyChanged("MobilePIN");
+					this.OnMobilePINChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Email", DbType="NVarChar(256)")]
+		public string Email
+		{
+			get
+			{
+				return this._Email;
+			}
+			set
+			{
+				if ((this._Email != value))
+				{
+					this.OnEmailChanging(value);
+					this.SendPropertyChanging();
+					this._Email = value;
+					this.SendPropertyChanged("Email");
+					this.OnEmailChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LoweredEmail", DbType="NVarChar(256)")]
+		public string LoweredEmail
+		{
+			get
+			{
+				return this._LoweredEmail;
+			}
+			set
+			{
+				if ((this._LoweredEmail != value))
+				{
+					this.OnLoweredEmailChanging(value);
+					this.SendPropertyChanging();
+					this._LoweredEmail = value;
+					this.SendPropertyChanged("LoweredEmail");
+					this.OnLoweredEmailChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PasswordQuestion", DbType="NVarChar(256)")]
+		public string PasswordQuestion
+		{
+			get
+			{
+				return this._PasswordQuestion;
+			}
+			set
+			{
+				if ((this._PasswordQuestion != value))
+				{
+					this.OnPasswordQuestionChanging(value);
+					this.SendPropertyChanging();
+					this._PasswordQuestion = value;
+					this.SendPropertyChanged("PasswordQuestion");
+					this.OnPasswordQuestionChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PasswordAnswer", DbType="NVarChar(128)")]
+		public string PasswordAnswer
+		{
+			get
+			{
+				return this._PasswordAnswer;
+			}
+			set
+			{
+				if ((this._PasswordAnswer != value))
+				{
+					this.OnPasswordAnswerChanging(value);
+					this.SendPropertyChanging();
+					this._PasswordAnswer = value;
+					this.SendPropertyChanged("PasswordAnswer");
+					this.OnPasswordAnswerChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsApproved", DbType="Bit NOT NULL")]
+		public bool IsApproved
+		{
+			get
+			{
+				return this._IsApproved;
+			}
+			set
+			{
+				if ((this._IsApproved != value))
+				{
+					this.OnIsApprovedChanging(value);
+					this.SendPropertyChanging();
+					this._IsApproved = value;
+					this.SendPropertyChanged("IsApproved");
+					this.OnIsApprovedChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsLockedOut", DbType="Bit NOT NULL")]
+		public bool IsLockedOut
+		{
+			get
+			{
+				return this._IsLockedOut;
+			}
+			set
+			{
+				if ((this._IsLockedOut != value))
+				{
+					this.OnIsLockedOutChanging(value);
+					this.SendPropertyChanging();
+					this._IsLockedOut = value;
+					this.SendPropertyChanged("IsLockedOut");
+					this.OnIsLockedOutChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreateDate", DbType="DateTime NOT NULL")]
+		public System.DateTime CreateDate
+		{
+			get
+			{
+				return this._CreateDate;
+			}
+			set
+			{
+				if ((this._CreateDate != value))
+				{
+					this.OnCreateDateChanging(value);
+					this.SendPropertyChanging();
+					this._CreateDate = value;
+					this.SendPropertyChanged("CreateDate");
+					this.OnCreateDateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastLoginDate", DbType="DateTime NOT NULL")]
+		public System.DateTime LastLoginDate
+		{
+			get
+			{
+				return this._LastLoginDate;
+			}
+			set
+			{
+				if ((this._LastLoginDate != value))
+				{
+					this.OnLastLoginDateChanging(value);
+					this.SendPropertyChanging();
+					this._LastLoginDate = value;
+					this.SendPropertyChanged("LastLoginDate");
+					this.OnLastLoginDateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastPasswordChangedDate", DbType="DateTime NOT NULL")]
+		public System.DateTime LastPasswordChangedDate
+		{
+			get
+			{
+				return this._LastPasswordChangedDate;
+			}
+			set
+			{
+				if ((this._LastPasswordChangedDate != value))
+				{
+					this.OnLastPasswordChangedDateChanging(value);
+					this.SendPropertyChanging();
+					this._LastPasswordChangedDate = value;
+					this.SendPropertyChanged("LastPasswordChangedDate");
+					this.OnLastPasswordChangedDateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastLockoutDate", DbType="DateTime NOT NULL")]
+		public System.DateTime LastLockoutDate
+		{
+			get
+			{
+				return this._LastLockoutDate;
+			}
+			set
+			{
+				if ((this._LastLockoutDate != value))
+				{
+					this.OnLastLockoutDateChanging(value);
+					this.SendPropertyChanging();
+					this._LastLockoutDate = value;
+					this.SendPropertyChanged("LastLockoutDate");
+					this.OnLastLockoutDateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FailedPasswordAttemptCount", DbType="Int NOT NULL")]
+		public int FailedPasswordAttemptCount
+		{
+			get
+			{
+				return this._FailedPasswordAttemptCount;
+			}
+			set
+			{
+				if ((this._FailedPasswordAttemptCount != value))
+				{
+					this.OnFailedPasswordAttemptCountChanging(value);
+					this.SendPropertyChanging();
+					this._FailedPasswordAttemptCount = value;
+					this.SendPropertyChanged("FailedPasswordAttemptCount");
+					this.OnFailedPasswordAttemptCountChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FailedPasswordAttemptWindowStart", DbType="DateTime NOT NULL")]
+		public System.DateTime FailedPasswordAttemptWindowStart
+		{
+			get
+			{
+				return this._FailedPasswordAttemptWindowStart;
+			}
+			set
+			{
+				if ((this._FailedPasswordAttemptWindowStart != value))
+				{
+					this.OnFailedPasswordAttemptWindowStartChanging(value);
+					this.SendPropertyChanging();
+					this._FailedPasswordAttemptWindowStart = value;
+					this.SendPropertyChanged("FailedPasswordAttemptWindowStart");
+					this.OnFailedPasswordAttemptWindowStartChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FailedPasswordAnswerAttemptCount", DbType="Int NOT NULL")]
+		public int FailedPasswordAnswerAttemptCount
+		{
+			get
+			{
+				return this._FailedPasswordAnswerAttemptCount;
+			}
+			set
+			{
+				if ((this._FailedPasswordAnswerAttemptCount != value))
+				{
+					this.OnFailedPasswordAnswerAttemptCountChanging(value);
+					this.SendPropertyChanging();
+					this._FailedPasswordAnswerAttemptCount = value;
+					this.SendPropertyChanged("FailedPasswordAnswerAttemptCount");
+					this.OnFailedPasswordAnswerAttemptCountChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FailedPasswordAnswerAttemptWindowStart", DbType="DateTime NOT NULL")]
+		public System.DateTime FailedPasswordAnswerAttemptWindowStart
+		{
+			get
+			{
+				return this._FailedPasswordAnswerAttemptWindowStart;
+			}
+			set
+			{
+				if ((this._FailedPasswordAnswerAttemptWindowStart != value))
+				{
+					this.OnFailedPasswordAnswerAttemptWindowStartChanging(value);
+					this.SendPropertyChanging();
+					this._FailedPasswordAnswerAttemptWindowStart = value;
+					this.SendPropertyChanged("FailedPasswordAnswerAttemptWindowStart");
+					this.OnFailedPasswordAnswerAttemptWindowStartChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Comment", DbType="NText", UpdateCheck=UpdateCheck.Never)]
+		public string Comment
+		{
+			get
+			{
+				return this._Comment;
+			}
+			set
+			{
+				if ((this._Comment != value))
+				{
+					this.OnCommentChanging(value);
+					this.SendPropertyChanging();
+					this._Comment = value;
+					this.SendPropertyChanged("Comment");
+					this.OnCommentChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Application_aspnet_Membership", Storage="_aspnet_Application", ThisKey="ApplicationId", OtherKey="ApplicationId", IsForeignKey=true)]
+		public aspnet_Application aspnet_Application
+		{
+			get
+			{
+				return this._aspnet_Application.Entity;
+			}
+			set
+			{
+				aspnet_Application previousValue = this._aspnet_Application.Entity;
+				if (((previousValue != value) 
+							|| (this._aspnet_Application.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._aspnet_Application.Entity = null;
+						previousValue.aspnet_Memberships.Remove(this);
+					}
+					this._aspnet_Application.Entity = value;
+					if ((value != null))
+					{
+						value.aspnet_Memberships.Add(this);
+						this._ApplicationId = value.ApplicationId;
+					}
+					else
+					{
+						this._ApplicationId = default(System.Guid);
+					}
+					this.SendPropertyChanged("aspnet_Application");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_User_aspnet_Membership", Storage="_aspnet_User", ThisKey="UserId", OtherKey="UserId", IsForeignKey=true)]
+		public aspnet_User aspnet_User
+		{
+			get
+			{
+				return this._aspnet_User.Entity;
+			}
+			set
+			{
+				aspnet_User previousValue = this._aspnet_User.Entity;
+				if (((previousValue != value) 
+							|| (this._aspnet_User.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._aspnet_User.Entity = null;
+						previousValue.aspnet_Membership = null;
+					}
+					this._aspnet_User.Entity = value;
+					if ((value != null))
+					{
+						value.aspnet_Membership = this;
+						this._UserId = value.UserId;
+					}
+					else
+					{
+						this._UserId = default(System.Guid);
+					}
+					this.SendPropertyChanged("aspnet_User");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.aspnet_Roles")]
+	public partial class aspnet_Role : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ApplicationId;
+		
+		private System.Guid _RoleId;
+		
+		private string _RoleName;
+		
+		private string _LoweredRoleName;
+		
+		private string _Description;
+		
+		private EntitySet<aspnet_UsersInRole> _aspnet_UsersInRoles;
+		
+		private EntityRef<aspnet_Application> _aspnet_Application;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnApplicationIdChanging(System.Guid value);
+    partial void OnApplicationIdChanged();
+    partial void OnRoleIdChanging(System.Guid value);
+    partial void OnRoleIdChanged();
+    partial void OnRoleNameChanging(string value);
+    partial void OnRoleNameChanged();
+    partial void OnLoweredRoleNameChanging(string value);
+    partial void OnLoweredRoleNameChanged();
+    partial void OnDescriptionChanging(string value);
+    partial void OnDescriptionChanged();
+    #endregion
+		
+		public aspnet_Role()
+		{
+			this._aspnet_UsersInRoles = new EntitySet<aspnet_UsersInRole>(new Action<aspnet_UsersInRole>(this.attach_aspnet_UsersInRoles), new Action<aspnet_UsersInRole>(this.detach_aspnet_UsersInRoles));
+			this._aspnet_Application = default(EntityRef<aspnet_Application>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ApplicationId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ApplicationId
+		{
+			get
+			{
+				return this._ApplicationId;
+			}
+			set
+			{
+				if ((this._ApplicationId != value))
+				{
+					if (this._aspnet_Application.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnApplicationIdChanging(value);
+					this.SendPropertyChanging();
+					this._ApplicationId = value;
+					this.SendPropertyChanged("ApplicationId");
+					this.OnApplicationIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RoleId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid RoleId
+		{
+			get
+			{
+				return this._RoleId;
+			}
+			set
+			{
+				if ((this._RoleId != value))
+				{
+					this.OnRoleIdChanging(value);
+					this.SendPropertyChanging();
+					this._RoleId = value;
+					this.SendPropertyChanged("RoleId");
+					this.OnRoleIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RoleName", DbType="NVarChar(256) NOT NULL", CanBeNull=false)]
+		public string RoleName
+		{
+			get
+			{
+				return this._RoleName;
+			}
+			set
+			{
+				if ((this._RoleName != value))
+				{
+					this.OnRoleNameChanging(value);
+					this.SendPropertyChanging();
+					this._RoleName = value;
+					this.SendPropertyChanged("RoleName");
+					this.OnRoleNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LoweredRoleName", DbType="NVarChar(256) NOT NULL", CanBeNull=false)]
+		public string LoweredRoleName
+		{
+			get
+			{
+				return this._LoweredRoleName;
+			}
+			set
+			{
+				if ((this._LoweredRoleName != value))
+				{
+					this.OnLoweredRoleNameChanging(value);
+					this.SendPropertyChanging();
+					this._LoweredRoleName = value;
+					this.SendPropertyChanged("LoweredRoleName");
+					this.OnLoweredRoleNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NVarChar(256)")]
+		public string Description
+		{
+			get
+			{
+				return this._Description;
+			}
+			set
+			{
+				if ((this._Description != value))
+				{
+					this.OnDescriptionChanging(value);
+					this.SendPropertyChanging();
+					this._Description = value;
+					this.SendPropertyChanged("Description");
+					this.OnDescriptionChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Role_aspnet_UsersInRole", Storage="_aspnet_UsersInRoles", ThisKey="RoleId", OtherKey="RoleId")]
+		public EntitySet<aspnet_UsersInRole> aspnet_UsersInRoles
+		{
+			get
+			{
+				return this._aspnet_UsersInRoles;
+			}
+			set
+			{
+				this._aspnet_UsersInRoles.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Application_aspnet_Role", Storage="_aspnet_Application", ThisKey="ApplicationId", OtherKey="ApplicationId", IsForeignKey=true)]
+		public aspnet_Application aspnet_Application
+		{
+			get
+			{
+				return this._aspnet_Application.Entity;
+			}
+			set
+			{
+				aspnet_Application previousValue = this._aspnet_Application.Entity;
+				if (((previousValue != value) 
+							|| (this._aspnet_Application.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._aspnet_Application.Entity = null;
+						previousValue.aspnet_Roles.Remove(this);
+					}
+					this._aspnet_Application.Entity = value;
+					if ((value != null))
+					{
+						value.aspnet_Roles.Add(this);
+						this._ApplicationId = value.ApplicationId;
+					}
+					else
+					{
+						this._ApplicationId = default(System.Guid);
+					}
+					this.SendPropertyChanged("aspnet_Application");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_aspnet_UsersInRoles(aspnet_UsersInRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Role = this;
+		}
+		
+		private void detach_aspnet_UsersInRoles(aspnet_UsersInRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_Role = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.aspnet_UsersInRoles")]
+	public partial class aspnet_UsersInRole : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _UserId;
+		
+		private System.Guid _RoleId;
+		
+		private EntityRef<aspnet_Role> _aspnet_Role;
+		
+		private EntityRef<aspnet_User> _aspnet_User;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnUserIdChanging(System.Guid value);
+    partial void OnUserIdChanged();
+    partial void OnRoleIdChanging(System.Guid value);
+    partial void OnRoleIdChanged();
+    #endregion
+		
+		public aspnet_UsersInRole()
+		{
+			this._aspnet_Role = default(EntityRef<aspnet_Role>);
+			this._aspnet_User = default(EntityRef<aspnet_User>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					if (this._aspnet_User.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RoleId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid RoleId
+		{
+			get
+			{
+				return this._RoleId;
+			}
+			set
+			{
+				if ((this._RoleId != value))
+				{
+					if (this._aspnet_Role.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnRoleIdChanging(value);
+					this.SendPropertyChanging();
+					this._RoleId = value;
+					this.SendPropertyChanged("RoleId");
+					this.OnRoleIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Role_aspnet_UsersInRole", Storage="_aspnet_Role", ThisKey="RoleId", OtherKey="RoleId", IsForeignKey=true)]
+		public aspnet_Role aspnet_Role
+		{
+			get
+			{
+				return this._aspnet_Role.Entity;
+			}
+			set
+			{
+				aspnet_Role previousValue = this._aspnet_Role.Entity;
+				if (((previousValue != value) 
+							|| (this._aspnet_Role.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._aspnet_Role.Entity = null;
+						previousValue.aspnet_UsersInRoles.Remove(this);
+					}
+					this._aspnet_Role.Entity = value;
+					if ((value != null))
+					{
+						value.aspnet_UsersInRoles.Add(this);
+						this._RoleId = value.RoleId;
+					}
+					else
+					{
+						this._RoleId = default(System.Guid);
+					}
+					this.SendPropertyChanged("aspnet_Role");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_User_aspnet_UsersInRole", Storage="_aspnet_User", ThisKey="UserId", OtherKey="UserId", IsForeignKey=true)]
+		public aspnet_User aspnet_User
+		{
+			get
+			{
+				return this._aspnet_User.Entity;
+			}
+			set
+			{
+				aspnet_User previousValue = this._aspnet_User.Entity;
+				if (((previousValue != value) 
+							|| (this._aspnet_User.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._aspnet_User.Entity = null;
+						previousValue.aspnet_UsersInRoles.Remove(this);
+					}
+					this._aspnet_User.Entity = value;
+					if ((value != null))
+					{
+						value.aspnet_UsersInRoles.Add(this);
+						this._UserId = value.UserId;
+					}
+					else
+					{
+						this._UserId = default(System.Guid);
+					}
+					this.SendPropertyChanged("aspnet_User");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.aspnet_Users")]
+	public partial class aspnet_User : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ApplicationId;
+		
+		private System.Guid _UserId;
+		
+		private string _UserName;
+		
+		private string _LoweredUserName;
+		
+		private string _MobileAlias;
+		
+		private bool _IsAnonymous;
+		
+		private System.DateTime _LastActivityDate;
+		
+		private EntityRef<aspnet_Membership> _aspnet_Membership;
+		
+		private EntitySet<aspnet_UsersInRole> _aspnet_UsersInRoles;
+		
+		private EntityRef<aspnet_Application> _aspnet_Application;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnApplicationIdChanging(System.Guid value);
+    partial void OnApplicationIdChanged();
+    partial void OnUserIdChanging(System.Guid value);
+    partial void OnUserIdChanged();
+    partial void OnUserNameChanging(string value);
+    partial void OnUserNameChanged();
+    partial void OnLoweredUserNameChanging(string value);
+    partial void OnLoweredUserNameChanged();
+    partial void OnMobileAliasChanging(string value);
+    partial void OnMobileAliasChanged();
+    partial void OnIsAnonymousChanging(bool value);
+    partial void OnIsAnonymousChanged();
+    partial void OnLastActivityDateChanging(System.DateTime value);
+    partial void OnLastActivityDateChanged();
+    #endregion
+		
+		public aspnet_User()
+		{
+			this._aspnet_Membership = default(EntityRef<aspnet_Membership>);
+			this._aspnet_UsersInRoles = new EntitySet<aspnet_UsersInRole>(new Action<aspnet_UsersInRole>(this.attach_aspnet_UsersInRoles), new Action<aspnet_UsersInRole>(this.detach_aspnet_UsersInRoles));
+			this._aspnet_Application = default(EntityRef<aspnet_Application>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ApplicationId", DbType="UniqueIdentifier NOT NULL")]
+		public System.Guid ApplicationId
+		{
+			get
+			{
+				return this._ApplicationId;
+			}
+			set
+			{
+				if ((this._ApplicationId != value))
+				{
+					if (this._aspnet_Application.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnApplicationIdChanging(value);
+					this.SendPropertyChanging();
+					this._ApplicationId = value;
+					this.SendPropertyChanged("ApplicationId");
+					this.OnApplicationIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					this.OnUserIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserId = value;
+					this.SendPropertyChanged("UserId");
+					this.OnUserIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserName", DbType="NVarChar(256) NOT NULL", CanBeNull=false)]
+		public string UserName
+		{
+			get
+			{
+				return this._UserName;
+			}
+			set
+			{
+				if ((this._UserName != value))
+				{
+					this.OnUserNameChanging(value);
+					this.SendPropertyChanging();
+					this._UserName = value;
+					this.SendPropertyChanged("UserName");
+					this.OnUserNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LoweredUserName", DbType="NVarChar(256) NOT NULL", CanBeNull=false)]
+		public string LoweredUserName
+		{
+			get
+			{
+				return this._LoweredUserName;
+			}
+			set
+			{
+				if ((this._LoweredUserName != value))
+				{
+					this.OnLoweredUserNameChanging(value);
+					this.SendPropertyChanging();
+					this._LoweredUserName = value;
+					this.SendPropertyChanged("LoweredUserName");
+					this.OnLoweredUserNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MobileAlias", DbType="NVarChar(16)")]
+		public string MobileAlias
+		{
+			get
+			{
+				return this._MobileAlias;
+			}
+			set
+			{
+				if ((this._MobileAlias != value))
+				{
+					this.OnMobileAliasChanging(value);
+					this.SendPropertyChanging();
+					this._MobileAlias = value;
+					this.SendPropertyChanged("MobileAlias");
+					this.OnMobileAliasChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsAnonymous", DbType="Bit NOT NULL")]
+		public bool IsAnonymous
+		{
+			get
+			{
+				return this._IsAnonymous;
+			}
+			set
+			{
+				if ((this._IsAnonymous != value))
+				{
+					this.OnIsAnonymousChanging(value);
+					this.SendPropertyChanging();
+					this._IsAnonymous = value;
+					this.SendPropertyChanged("IsAnonymous");
+					this.OnIsAnonymousChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastActivityDate", DbType="DateTime NOT NULL")]
+		public System.DateTime LastActivityDate
+		{
+			get
+			{
+				return this._LastActivityDate;
+			}
+			set
+			{
+				if ((this._LastActivityDate != value))
+				{
+					this.OnLastActivityDateChanging(value);
+					this.SendPropertyChanging();
+					this._LastActivityDate = value;
+					this.SendPropertyChanged("LastActivityDate");
+					this.OnLastActivityDateChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_User_aspnet_Membership", Storage="_aspnet_Membership", ThisKey="UserId", OtherKey="UserId", IsUnique=true, IsForeignKey=false)]
+		public aspnet_Membership aspnet_Membership
+		{
+			get
+			{
+				return this._aspnet_Membership.Entity;
+			}
+			set
+			{
+				aspnet_Membership previousValue = this._aspnet_Membership.Entity;
+				if (((previousValue != value) 
+							|| (this._aspnet_Membership.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._aspnet_Membership.Entity = null;
+						previousValue.aspnet_User = null;
+					}
+					this._aspnet_Membership.Entity = value;
+					if ((value != null))
+					{
+						value.aspnet_User = this;
+					}
+					this.SendPropertyChanged("aspnet_Membership");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_User_aspnet_UsersInRole", Storage="_aspnet_UsersInRoles", ThisKey="UserId", OtherKey="UserId")]
+		public EntitySet<aspnet_UsersInRole> aspnet_UsersInRoles
+		{
+			get
+			{
+				return this._aspnet_UsersInRoles;
+			}
+			set
+			{
+				this._aspnet_UsersInRoles.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="aspnet_Application_aspnet_User", Storage="_aspnet_Application", ThisKey="ApplicationId", OtherKey="ApplicationId", IsForeignKey=true)]
+		public aspnet_Application aspnet_Application
+		{
+			get
+			{
+				return this._aspnet_Application.Entity;
+			}
+			set
+			{
+				aspnet_Application previousValue = this._aspnet_Application.Entity;
+				if (((previousValue != value) 
+							|| (this._aspnet_Application.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._aspnet_Application.Entity = null;
+						previousValue.aspnet_Users.Remove(this);
+					}
+					this._aspnet_Application.Entity = value;
+					if ((value != null))
+					{
+						value.aspnet_Users.Add(this);
+						this._ApplicationId = value.ApplicationId;
+					}
+					else
+					{
+						this._ApplicationId = default(System.Guid);
+					}
+					this.SendPropertyChanged("aspnet_Application");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_aspnet_UsersInRoles(aspnet_UsersInRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_User = this;
+		}
+		
+		private void detach_aspnet_UsersInRoles(aspnet_UsersInRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.aspnet_User = null;
+		}
+	}
+}
+#pragma warning restore 1591
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/app.config
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/app.config	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement.DataAccess/3.3/app.config	(revision 6810)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <configSections>
+    </configSections>
+    <connectionStrings>
+        <add name="HeuristicLab.Services.UserManagement.DataAccess.Properties.Settings.HeuristicLab_AuthenticationConnectionString"
+            connectionString="Data Source=.;Initial Catalog=HeuristicLab.Authentication;Integrated Security=True"
+            providerName="System.Data.SqlClient" />
+    </connectionStrings>
+</configuration>
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/Convert.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/Convert.cs	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/Convert.cs	(revision 6810)
@@ -0,0 +1,84 @@
+﻿#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 AN = System.Web.Security;
+using DA = HeuristicLab.Services.UserManagement.DataAccess;
+using DT = HeuristicLab.Services.UserManagement.DataTransfer;
+
+namespace HeuristicLab.Services.UserManagement {
+  public static class Convert {
+
+    #region Application
+    public static DT.Application ToDto(DA.aspnet_Application source) {
+      return new DT.Application() {
+        Id = source.ApplicationId,
+        Description = source.Description,
+        Name = source.ApplicationName
+      };
+    }
+
+    public static DA.aspnet_Application ToEntity(DT.Application source) {
+      return new DA.aspnet_Application() {
+        ApplicationId = source.Id,
+        ApplicationName = source.Name,
+        Description = source.Description
+      };
+    }
+    #endregion
+
+    #region User
+    public static DT.User ToDto(AN.MembershipUser source) {
+      return new DT.User() {
+        Comment = source.Comment,
+        LastActivityDate = source.LastActivityDate,
+        CreationDate = source.CreationDate,
+        Email = source.Email,
+        IsApproved = source.IsApproved,
+        IsLockedOut = source.IsLockedOut,
+        IsOnline = source.IsOnline,
+        LastLockoutDate = source.LastLockoutDate,
+        LastLoginDate = source.LastLockoutDate,
+        LastPasswordChangedDate = source.LastPasswordChangedDate,
+        PasswordQuestion = source.PasswordQuestion,
+        ProviderName = source.ProviderName,
+        ProviderUserKey = source.ProviderUserKey,
+        UserName = source.UserName
+      };
+    }
+
+    public static AN.MembershipUser ToEntity(DT.User source) {
+      return new AN.MembershipUser(source.ProviderName, source.UserName, source.ProviderUserKey, source.Email, source.PasswordQuestion, source.Comment, source.IsApproved, source.IsLockedOut, source.CreationDate, source.LastLoginDate, source.LastActivityDate, source.LastPasswordChangedDate, source.LastLockoutDate);
+    }
+    #endregion
+
+    #region Role
+    public static DT.Role ToDto(string source) {
+      return new DT.Role() {
+        RoleName = source
+      };
+    }
+
+    public static string ToEntity(DT.Role source) {
+      return source.RoleName;
+    }
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Application.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Application.cs	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Application.cs	(revision 6810)
@@ -0,0 +1,38 @@
+﻿#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 Application : 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/DataTransfer/Membership.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Membership.cs	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Membership.cs	(revision 6810)
@@ -0,0 +1,88 @@
+﻿#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 Membership : UserManagementItem {
+    [DataMember]
+    public Guid ApplicationId { get; set; }
+
+    [DataMember]
+    public Guid UserId { get; set; }
+
+    [DataMember]
+    public string Password { get; set; }
+
+    [DataMember]
+    public int PasswordFormat { get; set; }
+
+    [DataMember]
+    public string PasswordSalt { get; set; }
+
+    [DataMember]
+    public string Email { get; set; }
+
+    [DataMember]
+    public string LoweredEmail { get; set; }
+
+    [DataMember]
+    public string PasswordQuestion { get; set; }
+
+    [DataMember]
+    public string PasswordAnswer { 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 LastPasswordChangedDate { get; set; }
+
+    [DataMember]
+    public DateTime LastLockoutDate { get; set; }
+
+    [DataMember]
+    public int FailedPasswordAttemptCount { get; set; }
+
+    [DataMember]
+    public DateTime FailedPasswordAttemptWindowStart { get; set; }
+
+    [DataMember]
+    public int FailedPasswordAnswerAttemptCount { get; set; }
+
+    [DataMember]
+    public DateTime FailedPasswordAnswerAttemptWindowStart { get; set; }
+
+    [DataMember]
+    public string Comment { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Role.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Role.cs	(revision 6809)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/Role.cs	(revision 6810)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Runtime.Serialization;
 
@@ -27,6 +26,10 @@
   [DataContract]
   public class Role : UserManagementItem {
+
     [DataMember]
-    public Guid ApplicationId { get; set; }
+    public string RoleName { get; set; }
+
+    [DataMember]
+    public Application App { get; set; }
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/User.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/User.cs	(revision 6809)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/User.cs	(revision 6810)
@@ -27,8 +27,20 @@
   public class User : UserManagementItem {
     [DataMember]
-    public Guid ApplicationId { get; set; }
+    public string Comment { get; set; }
 
     [DataMember]
     public string Email { get; set; }
+
+    [DataMember]
+    public DateTime CreationDate { get; set; }
+
+    [DataMember]
+    public DateTime LastLoginDate { get; set; }
+
+    [DataMember]
+    public DateTime LastPasswordChangedDate { get; set; }
+
+    [DataMember]
+    public DateTime LastLockoutDate { get; set; }
 
     [DataMember]
@@ -39,17 +51,23 @@
 
     [DataMember]
-    public DateTime CreateDate { get; set; }
-
-    [DataMember]
-    public DateTime LastLoginDate { get; set; }
-
-    [DataMember]
-    public DateTime LastPasswordChangeDate { get; set; }
-
-    [DataMember]
-    public DateTime LastLockoutDate { get; set; }
+    public bool IsOnline { get; set; }
 
     [DataMember]
     public DateTime LastActivityDate { get; set; }
+
+    [DataMember]
+    public string PasswordQuestion { get; set; }
+
+    [DataMember]
+    public string ProviderName { get; set; }
+
+    [DataMember]
+    public object ProviderUserKey { get; set; }
+
+    [DataMember]
+    public string UserName { get; set; }
+
+    [DataMember]
+    public Application App { get; set; }
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/UserManagementItem.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/UserManagementItem.cs	(revision 6809)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/DataTransfer/UserManagementItem.cs	(revision 6810)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Runtime.Serialization;
 
@@ -26,12 +25,7 @@
   [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 6809)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/HeuristicLab.Services.UserManagement.csproj	(revision 6810)
@@ -11,4 +11,5 @@
     <RootNamespace>HeuristicLab.Services.UserManagement</RootNamespace>
     <AssemblyName>HeuristicLab.Services.UserManagement</AssemblyName>
+    <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
@@ -42,4 +43,6 @@
     <Reference Include="System.Runtime.Serialization" />
     <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Web" />
+    <Reference Include="System.Web.ApplicationServices" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -49,4 +52,8 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Convert.cs" />
+    <Compile Include="DataTransfer\Application.cs" />
+    <Compile Include="DataTransfer\Membership.cs" />
+    <Compile Include="UserManagementService.cs" />
     <Compile Include="DataTransfer\Role.cs" />
     <Compile Include="DataTransfer\User.cs" />
@@ -54,9 +61,24 @@
     <Compile Include="IUserManagementService.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="app.config" />
     <None Include="HeuristicLab.snk" />
     <None Include="Properties\AssemblyInfo.frame" />
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Services.UserManagement.DataAccess\3.3\HeuristicLab.Services.UserManagement.DataAccess.csproj">
+      <Project>{AB586CCE-F953-458F-9061-8E4B83FC90D6}</Project>
+      <Name>HeuristicLab.Services.UserManagement.DataAccess</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
+        <WcfProjectProperties>
+          <AutoStart>False</AutoStart>
+        </WcfProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
   <PropertyGroup>
     <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/IUserManagementService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/IUserManagementService.cs	(revision 6809)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/IUserManagementService.cs	(revision 6810)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Collections.Generic;
 using System.Net.Security;
@@ -29,19 +28,14 @@
   [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
   public interface IUserManagementService {
+
     #region User
     [OperationContract]
-    User GetUser(Guid id);
+    IEnumerable<User> GetUsers(Application application);
 
     [OperationContract]
-    IEnumerable<User> GetUsers();
+    User AddUser(User user);
 
     [OperationContract]
-    IEnumerable<User> GetUsersForApplication(Guid applicationId);
-
-    [OperationContract]
-    Guid AddUser(User user);
-
-    [OperationContract]
-    void DeleteUser(Guid id);
+    void DeleteUser(User user);
 
     [OperationContract]
@@ -49,14 +43,11 @@
 
     [OperationContract]
-    void SetRoleForUser(Guid roleId, Guid userId);
+    void AddUserToRole(Role role, User user);
 
     [OperationContract]
-    IEnumerable<User> GetUsersWithRole(Guid roleId);
+    void RemoveUserFromRole(Role role, User user);
 
     [OperationContract]
-    void RemoveRoleFromUser(Guid roleId, Guid userId);
-
-    [OperationContract]
-    bool HasUserRole(Guid userId, Guid roleId);
+    bool IsUserInRole(User user, Role role);
 
     [OperationContract]
@@ -66,14 +57,8 @@
     #region Role
     [OperationContract]
-    Role GetRole(Guid id);
+    IEnumerable<Role> GetRoles(Application application);
 
     [OperationContract]
-    IEnumerable<Role> GetRoles();
-
-    [OperationContract]
-    IEnumerable<Role> GetRolesForApplication(Guid applicationId);
-
-    [OperationContract]
-    Guid AddRole(Role role);
+    Role AddRole(Role role);
 
     [OperationContract]
@@ -81,8 +66,33 @@
 
     [OperationContract]
-    void DeleteRole(Guid id);
+    void DeleteRole(Role role);
 
     [OperationContract]
-    IEnumerable<Role> GetUserRoles(Guid userId);
+    IEnumerable<Role> GetUserRoles(User user);
+    #endregion
+
+    #region Application
+    [OperationContract]
+    IEnumerable<Application> GetApplications();
+
+    [OperationContract]
+    IEnumerable<User> GetApplicationUsers(Application application);
+
+    [OperationContract]
+    Application AddApplication(Application application);
+
+    [OperationContract]
+    void UpdateApplication(Application application);
+
+    [OperationContract]
+    void DeleteApplication(Application application);
+    #endregion
+
+    #region Client specific methods
+    [OperationContract]
+    bool CheckUserExists(string application, string userName, string password);
+
+    [OperationContract]
+    bool GetUser(string application, string userName, string password);
     #endregion
   }
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/UserManagementService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/UserManagementService.cs	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/UserManagementService.cs	(revision 6810)
@@ -0,0 +1,112 @@
+﻿#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.ServiceModel;
+
+namespace HeuristicLab.Services.UserManagement {
+  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
+  public class UserManagementService : IUserManagementService {
+
+    #region IUserManagementService Members
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.User> GetUsers(DataTransfer.Application application) {
+      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 bool IsUserInRole(DataTransfer.User user, DataTransfer.Role role) {
+      throw new System.NotImplementedException();
+    }
+
+    public DataTransfer.User ResetPassword(string applicationName, string userName, string password) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.Role> GetRoles(DataTransfer.Application application) {
+      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.Application> GetApplications() {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.User> GetApplicationUsers(DataTransfer.Application application) {
+      throw new System.NotImplementedException();
+    }
+
+    public DataTransfer.Application AddApplication(DataTransfer.Application application) {
+      throw new System.NotImplementedException();
+    }
+
+    public void UpdateApplication(DataTransfer.Application application) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteApplication(DataTransfer.Application application) {
+      throw new System.NotImplementedException();
+    }
+
+    public bool CheckUserExists(string application, string userName, string password) {
+      throw new System.NotImplementedException();
+    }
+
+    public bool GetUser(string application, string userName, string password) {
+      throw new System.NotImplementedException();
+    }
+
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/app.config
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/app.config	(revision 6810)
+++ /branches/ClientUserManagement/HeuristicLab.Services.UserManagement/3.3/app.config	(revision 6810)
@@ -0,0 +1,89 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <connectionStrings>
+    <add name="HeuristicLab.Authentication"  
+         connectionString="Data Source=.;Initial Catalog=HeuristicLab.Authentication;Integrated Security=True" 
+         providerName="System.Data.SqlClient"/>
+  </connectionStrings>
+  <system.web>
+    <membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="20">
+      <providers>
+        <clear />
+        <add name="AspNetSqlMemberShipProvider"
+          type="System.Web.Security.SqlMembershipProvider"
+          connectionStringName="HeuristicLab.Authentication"
+          enablePasswordRetrieval="false"
+          enablePasswordReset="true"
+          requiresQuestionAndAnswer="false"
+          passwordFormat="Hashed"
+          applicationName="HeuristicLab.Authentication" />
+      </providers>
+    </membership>
+    <authentication mode="Windows" />
+    <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
+      <providers>
+        <clear />
+        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
+             connectionStringName="HeuristicLab.Authentication" applicationName="HeuristicLab.Authentication" />
+      </providers>
+    </roleManager>
+  </system.web>
+
+  <!-- When deploying the service library project, the content of the config file must be added to the host's 
+  app.config file. System.Configuration does not support config files for libraries. -->
+  <system.serviceModel>
+    <bindings>
+      <wsHttpBinding>
+        <binding name="DefaultWsHttpBinding" maxBufferPoolSize="10000000" maxReceivedMessageSize="200000000">
+          <readerQuotas maxDepth="1000" maxStringContentLength="16000" maxArrayLength="200000000" maxBytesPerRead="200000000" maxNameTableCharCount="16000" />
+          <security mode="Message">
+            <message clientCredentialType="UserName" />
+          </security>
+        </binding>
+      </wsHttpBinding>
+      <mexHttpBinding>
+        <binding name="DefaultMexHttpBinding" />
+      </mexHttpBinding>
+    </bindings>
+
+    <diagnostics performanceCounters="Default">
+      <!--<messageLogging logMalformedMessages="false" logMessagesAtTransportLevel="false" />-->
+    </diagnostics>
+
+    <behaviors>
+      <endpointBehaviors>
+        <behavior name="DefaultEndpointBehavior">
+          <dataContractSerializer maxItemsInObjectGraph="1000000" />
+        </behavior>
+      </endpointBehaviors>
+
+      <serviceBehaviors>
+        <behavior name="DefaultServiceBehavior">
+          <serviceMetadata httpGetEnabled="true" />
+          <serviceDebug includeExceptionDetailInFaults="true" />
+          <serviceCredentials>
+            <serviceCertificate findValue="localhost" storeLocation="LocalMachine"
+                                storeName="My" x509FindType="FindBySubjectName" />
+            <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
+                                    membershipProviderName="AspNetSqlMembershipProvider" />
+          </serviceCredentials>
+          <serviceAuthorization principalPermissionMode="UseAspNetRoles"
+                                roleProviderName="AspNetSqlRoleProvider" />
+        </behavior>
+      </serviceBehaviors>
+    </behaviors>
+
+    <services>
+      <service name="HeuristicLab.Services.UserManagement.UserManagementService" behaviorConfiguration="DefaultServiceBehavior">
+        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding" contract="IMetadataExchange" />
+        <endpoint behaviorConfiguration="DefaultEndpointBehavior" binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding"
+                  contract="HeuristicLab.Services.UserManagement.IUserManagementService" />
+        <host>
+          <baseAddresses>
+            <add baseAddress="http://localhost/UserManagementService" />
+          </baseAddresses>
+        </host>
+      </service>
+    </services>
+  </system.serviceModel>
+</configuration>
