Index: /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.ClientUserManagement.sln	(revision 6799)
@@ -0,0 +1,31 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FAC56B1A-B544-430E-931B-68519E07E8AF}"
+	ProjectSection(SolutionItems) = preProject
+		PreBuildEvent.cmd = PreBuildEvent.cmd
+	EndProjectSection
+EndProject
+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.ClientManagement", "HeuristicLab.Services.ClientManagement\3.3\HeuristicLab.Services.ClientManagement.csproj", "{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	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}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5C6595CF-436E-4C45-9B6C-FC3948A6E117}.Release|Any CPU.Build.0 = 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}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.dbml
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.dbml	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.dbml	(revision 6799)
@@ -0,0 +1,41 @@
+﻿<?xml version="1.0" encoding="utf-8"?><Database Name="HeuristicLab.ClientManagement" Class="ClientManagementDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
+  <Connection Mode="AppSettings" ConnectionString="Data Source=.;Initial Catalog=HeuristicLab.ClientManagement;Integrated Security=True" SettingsObjectName="HeuristicLab.Services.ClientManagement.DataAccess.Properties.Settings" SettingsPropertyName="HeuristicLab_ClientManagementConnectionString" Provider="System.Data.SqlClient" />
+  <Table Name="dbo.Resource" Member="Resources">
+    <Type Name="Resource" InheritanceCode="Resource">
+      <Column Name="Id" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" DbType="NVarChar(MAX) NOT NULL" CanBeNull="false" />
+      <Column Name="Description" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+      <Column Name="Type" Type="System.String" DbType="NVarChar(MAX) NOT NULL" CanBeNull="false" IsDiscriminator="true" />
+      <Association Name="Resource_ResourceResourceGroup" Member="ResourceResourceGroups" ThisKey="Id" OtherKey="ResourceGroupId" Type="ResourceResourceGroup" />
+      <Association Name="Resource_ResourceResourceGroup1" Member="ResourceResourceGroups1" ThisKey="Id" OtherKey="ResourceId" Type="ResourceResourceGroup" />
+      <Association Name="Resource_ClientLog" Member="ClientLogs" ThisKey="Id" OtherKey="ResourceId" Type="ClientLog" />
+      <Type Name="Client" InheritanceCode="Client">
+        <Column Name="ProcessorType" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+        <Column Name="NumberOfCores" Type="System.Int32" DbType="int" CanBeNull="true" />
+        <Column Name="MemorySize" Type="System.Int32" DbType="int" CanBeNull="true" />
+        <Column Name="OperatingSystem" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+        <Column Name="IPAddress" Storage="_IPAdresss" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+        <Column Name="HeuristicLabVersion" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+        <Column Name="Country" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+      </Type>
+      <Type Name="Group" InheritanceCode="Group" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ResourceResourceGroup" Member="ResourceResourceGroups">
+    <Type Name="ResourceResourceGroup">
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ResourceGroupId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="Resource_ResourceResourceGroup" Member="Resource" ThisKey="ResourceGroupId" OtherKey="Id" Type="Resource" IsForeignKey="true" />
+      <Association Name="Resource_ResourceResourceGroup1" Member="Resource1" ThisKey="ResourceId" OtherKey="Id" Type="Resource" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="dbo.ClientLog" Member="ClientLogs">
+    <Type Name="ClientLog">
+      <Column Name="Timestamp" Type="System.DateTime" DbType="DateTime NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Message" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+      <Column Name="Exception" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
+      <Association Name="Resource_ClientLog" Member="Resource" ThisKey="ResourceId" OtherKey="Id" Type="Resource" IsForeignKey="true" />
+    </Type>
+  </Table>
+</Database>
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.dbml.layout
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.dbml.layout	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.dbml.layout	(revision 6799)
@@ -0,0 +1,69 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 11, 8.5" name="ClientManagement">
+  <DataContextMoniker Name="/ClientManagementDataContext" />
+  <nestedChildShapes>
+    <classShape Id="2f689cd2-d0f0-4be8-9fb8-0dce6303f3ac" absoluteBounds="4.375, 0.5, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/ClientManagementDataContext/Resource" />
+      <nestedChildShapes>
+        <elementListCompartment Id="95418045-5d3f-40e2-8e91-826349b9b0d5" absoluteBounds="4.3900000000000006, 0.96, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="9ae9b199-cfb6-4c70-a8d9-3eb72896d957" absoluteBounds="7.125, 0.5, 2, 1.1939925130208335">
+      <DataClassMoniker Name="/ClientManagementDataContext/ResourceResourceGroup" />
+      <nestedChildShapes>
+        <elementListCompartment Id="41c753c1-33ca-4ab4-9798-aac28efb805f" absoluteBounds="7.1400000000000006, 0.96, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(6.375 : 1.09699625651042); (7.125 : 1.09699625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/ClientManagementDataContext/Resource/Resource_ResourceResourceGroup" />
+      <nodes>
+        <classShapeMoniker Id="2f689cd2-d0f0-4be8-9fb8-0dce6303f3ac" />
+        <classShapeMoniker Id="9ae9b199-cfb6-4c70-a8d9-3eb72896d957" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(6.375 : 0.735998128255208); (7.125 : 0.735998128255208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/ClientManagementDataContext/Resource/Resource_ResourceResourceGroup1" />
+      <nodes>
+        <classShapeMoniker Id="2f689cd2-d0f0-4be8-9fb8-0dce6303f3ac" />
+        <classShapeMoniker Id="9ae9b199-cfb6-4c70-a8d9-3eb72896d957" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="643168ec-6e6c-43aa-a71d-50420e26ba6b" absoluteBounds="6, 2.875, 2, 0.8093896484375">
+      <DataClassMoniker Name="/ClientManagementDataContext/Group" />
+      <nestedChildShapes>
+        <elementListCompartment Id="c9942a3e-7f75-4d39-8b07-aa73193a1426" absoluteBounds="6, 2.875, 0.125, 0.2493896484375" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="93bcfe43-938e-49f8-90db-b5056196257b" absoluteBounds="2.875, 2.875, 2, 2.1554996744791666">
+      <DataClassMoniker Name="/ClientManagementDataContext/Client" />
+      <nestedChildShapes>
+        <elementListCompartment Id="f89c2c39-17cc-4b0e-b5e0-245107753b38" absoluteBounds="2.89, 3.335, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <inheritanceConnector edgePoints="[(5.375 : 2.07859537760417); (5.375 : 2.5); (3.875 : 2.5); (3.875 : 2.875)]" fixedFrom="NotFixed" fixedTo="NotFixed" TargetRelationshipDomainClassId="7a7fe09e-e9ef-4b01-9ff3-bde95e827b62">
+      <nodes>
+        <classShapeMoniker Id="2f689cd2-d0f0-4be8-9fb8-0dce6303f3ac" />
+        <classShapeMoniker Id="93bcfe43-938e-49f8-90db-b5056196257b" />
+      </nodes>
+    </inheritanceConnector>
+    <inheritanceConnector edgePoints="[(5.375 : 2.07859537760417); (5.375 : 2.5); (7 : 2.5); (7 : 2.875)]" fixedFrom="NotFixed" fixedTo="NotFixed" TargetRelationshipDomainClassId="7a7fe09e-e9ef-4b01-9ff3-bde95e827b62">
+      <nodes>
+        <classShapeMoniker Id="2f689cd2-d0f0-4be8-9fb8-0dce6303f3ac" />
+        <classShapeMoniker Id="643168ec-6e6c-43aa-a71d-50420e26ba6b" />
+      </nodes>
+    </inheritanceConnector>
+    <classShape Id="256b57f3-6f9a-420b-9a23-fa5fcc0119a5" absoluteBounds="1.375, 0.5, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/ClientManagementDataContext/ClientLog" />
+      <nestedChildShapes>
+        <elementListCompartment Id="1a91e2f0-9306-473c-afcb-453ff4f01350" absoluteBounds="1.3900000000000006, 0.96, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(4.375 : 1.28929768880208); (3.375 : 1.28929768880208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/ClientManagementDataContext/Resource/Resource_ClientLog" />
+      <nodes>
+        <classShapeMoniker Id="2f689cd2-d0f0-4be8-9fb8-0dce6303f3ac" />
+        <classShapeMoniker Id="256b57f3-6f9a-420b-9a23-fa5fcc0119a5" />
+      </nodes>
+    </associationConnector>
+  </nestedChildShapes>
+</ordesignerObjectsDiagram>
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.designer.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/ClientManagement.designer.cs	(revision 6799)
@@ -0,0 +1,861 @@
+﻿#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.235
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Services.ClientManagement.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.ClientManagement")]
+	public partial class ClientManagementDataContext : System.Data.Linq.DataContext
+	{
+		
+		private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
+		
+    #region Extensibility Method Definitions
+    partial void OnCreated();
+    partial void InsertResource(Resource instance);
+    partial void UpdateResource(Resource instance);
+    partial void DeleteResource(Resource instance);
+    partial void InsertResourceResourceGroup(ResourceResourceGroup instance);
+    partial void UpdateResourceResourceGroup(ResourceResourceGroup instance);
+    partial void DeleteResourceResourceGroup(ResourceResourceGroup instance);
+    partial void InsertClientLog(ClientLog instance);
+    partial void UpdateClientLog(ClientLog instance);
+    partial void DeleteClientLog(ClientLog instance);
+    #endregion
+		
+		public ClientManagementDataContext() : 
+				base(global::HeuristicLab.Services.ClientManagement.DataAccess.Properties.Settings.Default.HeuristicLab_ClientManagementConnectionString, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public ClientManagementDataContext(string connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public ClientManagementDataContext(System.Data.IDbConnection connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public ClientManagementDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public ClientManagementDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public System.Data.Linq.Table<Resource> Resources
+		{
+			get
+			{
+				return this.GetTable<Resource>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ResourceResourceGroup> ResourceResourceGroups
+		{
+			get
+			{
+				return this.GetTable<ResourceResourceGroup>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientLog> ClientLogs
+		{
+			get
+			{
+				return this.GetTable<ClientLog>();
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Resource")]
+	[global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code="Resource", Type=typeof(Resource))]
+	[global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code="Client", Type=typeof(Client))]
+	[global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code="Group", Type=typeof(Group))]
+	public partial class Resource : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Name;
+		
+		private string _Description;
+		
+		private string _Type;
+		
+		private EntitySet<ResourceResourceGroup> _ResourceResourceGroups;
+		
+		private EntitySet<ResourceResourceGroup> _ResourceResourceGroups1;
+		
+		private EntitySet<ClientLog> _ClientLogs;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnIdChanging(System.Guid value);
+    partial void OnIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    partial void OnDescriptionChanging(string value);
+    partial void OnDescriptionChanged();
+    partial void OnTypeChanging(string value);
+    partial void OnTypeChanged();
+    #endregion
+		
+		public Resource()
+		{
+			this._ResourceResourceGroups = new EntitySet<ResourceResourceGroup>(new Action<ResourceResourceGroup>(this.attach_ResourceResourceGroups), new Action<ResourceResourceGroup>(this.detach_ResourceResourceGroups));
+			this._ResourceResourceGroups1 = new EntitySet<ResourceResourceGroup>(new Action<ResourceResourceGroup>(this.attach_ResourceResourceGroups1), new Action<ResourceResourceGroup>(this.detach_ResourceResourceGroups1));
+			this._ClientLogs = new EntitySet<ClientLog>(new Action<ClientLog>(this.attach_ClientLogs), new Action<ClientLog>(this.detach_ClientLogs));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid Id
+		{
+			get
+			{
+				return this._Id;
+			}
+			set
+			{
+				if ((this._Id != value))
+				{
+					this.OnIdChanging(value);
+					this.SendPropertyChanging();
+					this._Id = value;
+					this.SendPropertyChanged("Id");
+					this.OnIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false)]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NVarChar(MAX)")]
+		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.ColumnAttribute(Storage="_Type", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false, IsDiscriminator=true)]
+		public string Type
+		{
+			get
+			{
+				return this._Type;
+			}
+			set
+			{
+				if ((this._Type != value))
+				{
+					this.OnTypeChanging(value);
+					this.SendPropertyChanging();
+					this._Type = value;
+					this.SendPropertyChanged("Type");
+					this.OnTypeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ResourceResourceGroup", Storage="_ResourceResourceGroups", ThisKey="Id", OtherKey="ResourceGroupId")]
+		public EntitySet<ResourceResourceGroup> ResourceResourceGroups
+		{
+			get
+			{
+				return this._ResourceResourceGroups;
+			}
+			set
+			{
+				this._ResourceResourceGroups.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ResourceResourceGroup1", Storage="_ResourceResourceGroups1", ThisKey="Id", OtherKey="ResourceId")]
+		public EntitySet<ResourceResourceGroup> ResourceResourceGroups1
+		{
+			get
+			{
+				return this._ResourceResourceGroups1;
+			}
+			set
+			{
+				this._ResourceResourceGroups1.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ClientLog", Storage="_ClientLogs", ThisKey="Id", OtherKey="ResourceId")]
+		public EntitySet<ClientLog> ClientLogs
+		{
+			get
+			{
+				return this._ClientLogs;
+			}
+			set
+			{
+				this._ClientLogs.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_ResourceResourceGroups(ResourceResourceGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ResourceResourceGroups(ResourceResourceGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_ResourceResourceGroups1(ResourceResourceGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource1 = this;
+		}
+		
+		private void detach_ResourceResourceGroups1(ResourceResourceGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource1 = null;
+		}
+		
+		private void attach_ClientLogs(ClientLog entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ClientLogs(ClientLog entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+	}
+	
+	public partial class Client : Resource
+	{
+		
+		private string _ProcessorType;
+		
+		private System.Nullable<int> _NumberOfCores;
+		
+		private System.Nullable<int> _MemorySize;
+		
+		private string _OperatingSystem;
+		
+		private string _IPAdresss;
+		
+		private string _HeuristicLabVersion;
+		
+		private string _Country;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnProcessorTypeChanging(string value);
+    partial void OnProcessorTypeChanged();
+    partial void OnNumberOfCoresChanging(System.Nullable<int> value);
+    partial void OnNumberOfCoresChanged();
+    partial void OnMemorySizeChanging(System.Nullable<int> value);
+    partial void OnMemorySizeChanged();
+    partial void OnOperatingSystemChanging(string value);
+    partial void OnOperatingSystemChanged();
+    partial void OnIPAddressChanging(string value);
+    partial void OnIPAddressChanged();
+    partial void OnHeuristicLabVersionChanging(string value);
+    partial void OnHeuristicLabVersionChanged();
+    partial void OnCountryChanging(string value);
+    partial void OnCountryChanged();
+    #endregion
+		
+		public Client()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProcessorType", DbType="NVarChar(MAX)")]
+		public string ProcessorType
+		{
+			get
+			{
+				return this._ProcessorType;
+			}
+			set
+			{
+				if ((this._ProcessorType != value))
+				{
+					this.OnProcessorTypeChanging(value);
+					this.SendPropertyChanging();
+					this._ProcessorType = value;
+					this.SendPropertyChanged("ProcessorType");
+					this.OnProcessorTypeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumberOfCores", DbType="int")]
+		public System.Nullable<int> NumberOfCores
+		{
+			get
+			{
+				return this._NumberOfCores;
+			}
+			set
+			{
+				if ((this._NumberOfCores != value))
+				{
+					this.OnNumberOfCoresChanging(value);
+					this.SendPropertyChanging();
+					this._NumberOfCores = value;
+					this.SendPropertyChanged("NumberOfCores");
+					this.OnNumberOfCoresChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MemorySize", DbType="int")]
+		public System.Nullable<int> MemorySize
+		{
+			get
+			{
+				return this._MemorySize;
+			}
+			set
+			{
+				if ((this._MemorySize != value))
+				{
+					this.OnMemorySizeChanging(value);
+					this.SendPropertyChanging();
+					this._MemorySize = value;
+					this.SendPropertyChanged("MemorySize");
+					this.OnMemorySizeChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OperatingSystem", DbType="NVarChar(MAX)")]
+		public string OperatingSystem
+		{
+			get
+			{
+				return this._OperatingSystem;
+			}
+			set
+			{
+				if ((this._OperatingSystem != value))
+				{
+					this.OnOperatingSystemChanging(value);
+					this.SendPropertyChanging();
+					this._OperatingSystem = value;
+					this.SendPropertyChanged("OperatingSystem");
+					this.OnOperatingSystemChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IPAdresss", DbType="NVarChar(MAX)")]
+		public string IPAddress
+		{
+			get
+			{
+				return this._IPAdresss;
+			}
+			set
+			{
+				if ((this._IPAdresss != value))
+				{
+					this.OnIPAddressChanging(value);
+					this.SendPropertyChanging();
+					this._IPAdresss = value;
+					this.SendPropertyChanged("IPAddress");
+					this.OnIPAddressChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HeuristicLabVersion", DbType="NVarChar(MAX)")]
+		public string HeuristicLabVersion
+		{
+			get
+			{
+				return this._HeuristicLabVersion;
+			}
+			set
+			{
+				if ((this._HeuristicLabVersion != value))
+				{
+					this.OnHeuristicLabVersionChanging(value);
+					this.SendPropertyChanging();
+					this._HeuristicLabVersion = value;
+					this.SendPropertyChanged("HeuristicLabVersion");
+					this.OnHeuristicLabVersionChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Country", DbType="NVarChar(MAX)")]
+		public string Country
+		{
+			get
+			{
+				return this._Country;
+			}
+			set
+			{
+				if ((this._Country != value))
+				{
+					this.OnCountryChanging(value);
+					this.SendPropertyChanging();
+					this._Country = value;
+					this.SendPropertyChanged("Country");
+					this.OnCountryChanged();
+				}
+			}
+		}
+	}
+	
+	public partial class Group : Resource
+	{
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    #endregion
+		
+		public Group()
+		{
+			OnCreated();
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ResourceResourceGroup")]
+	public partial class ResourceResourceGroup : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ResourceId;
+		
+		private System.Guid _ResourceGroupId;
+		
+		private EntityRef<Resource> _Resource;
+		
+		private EntityRef<Resource> _Resource1;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnResourceGroupIdChanging(System.Guid value);
+    partial void OnResourceGroupIdChanged();
+    #endregion
+		
+		public ResourceResourceGroup()
+		{
+			this._Resource = default(EntityRef<Resource>);
+			this._Resource1 = default(EntityRef<Resource>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource1.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceGroupId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ResourceGroupId
+		{
+			get
+			{
+				return this._ResourceGroupId;
+			}
+			set
+			{
+				if ((this._ResourceGroupId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceGroupIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceGroupId = value;
+					this.SendPropertyChanged("ResourceGroupId");
+					this.OnResourceGroupIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ResourceResourceGroup", Storage="_Resource", ThisKey="ResourceGroupId", OtherKey="Id", IsForeignKey=true)]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.ResourceResourceGroups.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ResourceResourceGroups.Add(this);
+						this._ResourceGroupId = value.Id;
+					}
+					else
+					{
+						this._ResourceGroupId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ResourceResourceGroup1", Storage="_Resource1", ThisKey="ResourceId", OtherKey="Id", IsForeignKey=true)]
+		public Resource Resource1
+		{
+			get
+			{
+				return this._Resource1.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource1.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource1.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource1.Entity = null;
+						previousValue.ResourceResourceGroups1.Remove(this);
+					}
+					this._Resource1.Entity = value;
+					if ((value != null))
+					{
+						value.ResourceResourceGroups1.Add(this);
+						this._ResourceId = value.Id;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource1");
+				}
+			}
+		}
+		
+		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.ClientLog")]
+	public partial class ClientLog : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.DateTime _Timestamp;
+		
+		private System.Guid _ResourceId;
+		
+		private string _Message;
+		
+		private string _Exception;
+		
+		private EntityRef<Resource> _Resource;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnTimestampChanging(System.DateTime value);
+    partial void OnTimestampChanged();
+    partial void OnResourceIdChanging(System.Guid value);
+    partial void OnResourceIdChanged();
+    partial void OnMessageChanging(string value);
+    partial void OnMessageChanged();
+    partial void OnExceptionChanging(string value);
+    partial void OnExceptionChanged();
+    #endregion
+		
+		public ClientLog()
+		{
+			this._Resource = default(EntityRef<Resource>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Timestamp", DbType="DateTime NOT NULL", IsPrimaryKey=true)]
+		public System.DateTime Timestamp
+		{
+			get
+			{
+				return this._Timestamp;
+			}
+			set
+			{
+				if ((this._Timestamp != value))
+				{
+					this.OnTimestampChanging(value);
+					this.SendPropertyChanging();
+					this._Timestamp = value;
+					this.SendPropertyChanged("Timestamp");
+					this.OnTimestampChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid ResourceId
+		{
+			get
+			{
+				return this._ResourceId;
+			}
+			set
+			{
+				if ((this._ResourceId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnResourceIdChanging(value);
+					this.SendPropertyChanging();
+					this._ResourceId = value;
+					this.SendPropertyChanged("ResourceId");
+					this.OnResourceIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Message", DbType="NVarChar(MAX)")]
+		public string Message
+		{
+			get
+			{
+				return this._Message;
+			}
+			set
+			{
+				if ((this._Message != value))
+				{
+					this.OnMessageChanging(value);
+					this.SendPropertyChanging();
+					this._Message = value;
+					this.SendPropertyChanged("Message");
+					this.OnMessageChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Exception", DbType="NVarChar(MAX)")]
+		public string Exception
+		{
+			get
+			{
+				return this._Exception;
+			}
+			set
+			{
+				if ((this._Exception != value))
+				{
+					this.OnExceptionChanging(value);
+					this.SendPropertyChanging();
+					this._Exception = value;
+					this.SendPropertyChanged("Exception");
+					this.OnExceptionChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ClientLog", Storage="_Resource", ThisKey="ResourceId", OtherKey="Id", IsForeignKey=true)]
+		public Resource Resource
+		{
+			get
+			{
+				return this._Resource.Entity;
+			}
+			set
+			{
+				Resource previousValue = this._Resource.Entity;
+				if (((previousValue != value) 
+							|| (this._Resource.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Resource.Entity = null;
+						previousValue.ClientLogs.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ClientLogs.Add(this);
+						this._ResourceId = value.Id;
+					}
+					else
+					{
+						this._ResourceId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		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));
+			}
+		}
+	}
+}
+#pragma warning restore 1591
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/HeuristicLab.Services.ClientManagement.DataAccess.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/HeuristicLab.Services.ClientManagement.DataAccess.csproj	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/HeuristicLab.Services.ClientManagement.DataAccess.csproj	(revision 6799)
@@ -0,0 +1,104 @@
+﻿<?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>{5C6595CF-436E-4C45-9B6C-FC3948A6E117}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Services.ClientManagement.DataAccess</RootNamespace>
+    <AssemblyName>HeuristicLab.Services.ClientManagement.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="ClientManagement.designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>ClientManagement.dbml</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="ClientManagement.dbml">
+      <Generator>MSLinqToSQLGenerator</Generator>
+      <LastGenOutput>ClientManagement.designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ClientManagement.dbml.layout">
+      <DependentUpon>ClientManagement.dbml</DependentUpon>
+    </None>
+  </ItemGroup>
+  <ItemGroup />
+  <ItemGroup>
+    <Content Include="SQL Scripts\Create ClientManagement.sql" />
+    <Content Include="SQL Scripts\Initialize ClientManagement.sql" />
+  </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.ClientManagement.DataAccess/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/Properties/AssemblyInfo.frame	(revision 6799)
@@ -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.ClientManagement.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.ClientManagement.DataAccess/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/Properties/Settings.Designer.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/Properties/Settings.Designer.cs	(revision 6799)
@@ -0,0 +1,37 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.235
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Services.ClientManagement.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.ClientManagement;Integrated Security=T" +
+            "rue")]
+        public string HeuristicLab_ClientManagementConnectionString {
+            get {
+                return ((string)(this["HeuristicLab_ClientManagementConnectionString"]));
+            }
+        }
+    }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/Properties/Settings.settings
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/Properties/Settings.settings	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/Properties/Settings.settings	(revision 6799)
@@ -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.ClientManagement.DataAccess.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="HeuristicLab_ClientManagementConnectionString" 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.ClientManagement;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.ClientManagement;Integrated Security=True</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/SQL Scripts/Create ClientManagement.sql
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/SQL Scripts/Create ClientManagement.sql	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/SQL Scripts/Create ClientManagement.sql	(revision 6799)
@@ -0,0 +1,104 @@
+USE [master]
+GO
+
+/****** Object:  Database [HeuristicLab.ClientManagement]    Script Date: 09/19/2011 13:21:28 ******/
+CREATE DATABASE [HeuristicLab.ClientManagement] ON  PRIMARY 
+( NAME = N'HeuristicLab.ClientManagement', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\HeuristicLab.ClientManagement.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
+ LOG ON 
+( NAME = N'HeuristicLab.ClientManagement_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\HeuristicLab.ClientManagement_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET COMPATIBILITY_LEVEL = 100
+GO
+
+IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
+begin
+EXEC [HeuristicLab.ClientManagement].[dbo].[sp_fulltext_database] @action = 'enable'
+end
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET ANSI_NULL_DEFAULT OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET ANSI_NULLS OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET ANSI_PADDING OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET ANSI_WARNINGS OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET ARITHABORT OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET AUTO_CLOSE OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET AUTO_CREATE_STATISTICS ON 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET AUTO_SHRINK OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET AUTO_UPDATE_STATISTICS ON 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET CURSOR_CLOSE_ON_COMMIT OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET CURSOR_DEFAULT  GLOBAL 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET CONCAT_NULL_YIELDS_NULL OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET NUMERIC_ROUNDABORT OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET QUOTED_IDENTIFIER OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET RECURSIVE_TRIGGERS OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET  DISABLE_BROKER 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET DATE_CORRELATION_OPTIMIZATION OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET TRUSTWORTHY OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET ALLOW_SNAPSHOT_ISOLATION OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET PARAMETERIZATION SIMPLE 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET READ_COMMITTED_SNAPSHOT OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET HONOR_BROKER_PRIORITY OFF 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET  READ_WRITE 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET RECOVERY FULL 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET  MULTI_USER 
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET PAGE_VERIFY CHECKSUM  
+GO
+
+ALTER DATABASE [HeuristicLab.ClientManagement] SET DB_CHAINING OFF 
+GO
+
+
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/SQL Scripts/Initialize ClientManagement.sql
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/SQL Scripts/Initialize ClientManagement.sql	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/SQL Scripts/Initialize ClientManagement.sql	(revision 6799)
@@ -0,0 +1,96 @@
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[Resource]    Script Date: 09/19/2011 13:24:05 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[Resource](
+	[Id] [uniqueidentifier] NOT NULL,
+	[Name] [nvarchar](max) NOT NULL,
+	[Description] [nvarchar](max) NULL,
+	[Type] [nvarchar](max) NOT NULL,
+	[ProcessorType] [nvarchar](max) NULL,
+	[NumberOfCores] [int](max) NULL,
+	[IPAddress] [nvarchar](max) NULL,
+	[MemorySize] [int](max) NULL,
+	[OperatingSystem] [nvarchar](max) NULL,
+	[Country] [nvarchar](max) NULL,
+	[HeuristicLabVersion] [nvarchar](max) NULL,
+ CONSTRAINT [PK_Resource] PRIMARY KEY CLUSTERED 
+(
+	[Id] ASC
+)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
+) ON [PRIMARY]
+
+GO
+
+/****** Object:  Table [dbo].[ResourceResourceGroup]    Script Date: 09/19/2011 13:24:08 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[ResourceResourceGroup](
+	[ResourceId] [uniqueidentifier] NOT NULL,
+	[ResourceGroupId] [uniqueidentifier] NOT NULL,
+ CONSTRAINT [PK_ResourceResourceGroup_Id] PRIMARY KEY CLUSTERED 
+(
+	[ResourceId] ASC,
+	[ResourceGroupId] ASC
+)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
+) ON [PRIMARY]
+
+GO
+
+ALTER TABLE [dbo].[ResourceResourceGroup]  WITH CHECK ADD  CONSTRAINT [FK_ResourceResourceGroup_ResourceGroupId] FOREIGN KEY([ResourceGroupId])
+REFERENCES [dbo].[Resource] ([Id])
+GO
+
+ALTER TABLE [dbo].[ResourceResourceGroup] CHECK CONSTRAINT [FK_ResourceResourceGroup_ResourceGroupId]
+GO
+
+ALTER TABLE [dbo].[ResourceResourceGroup]  WITH CHECK ADD  CONSTRAINT [FK_ResourceResourceGroup_ResourceId] FOREIGN KEY([ResourceId])
+REFERENCES [dbo].[Resource] ([Id])
+GO
+
+ALTER TABLE [dbo].[ResourceResourceGroup] CHECK CONSTRAINT [FK_ResourceResourceGroup_ResourceId]
+GO
+
+/****** Object:  Table [dbo].[ClientLog]    Script Date: 09/19/2011 13:24:11 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[ClientLog](
+	[Timestamp] [datetime] NOT NULL,
+	[ResourceId] [uniqueidentifier] NOT NULL,
+	[Message] [nvarchar](max) NULL,
+	[Exception] [nvarchar](max) NULL,
+ CONSTRAINT [PK_ClientLog] PRIMARY KEY CLUSTERED 
+(
+	[Timestamp] ASC,
+	[ResourceId] ASC
+)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
+) ON [PRIMARY]
+
+GO
+
+ALTER TABLE [dbo].[ClientLog]  WITH CHECK ADD  CONSTRAINT [FK_ClientLog_Resource] FOREIGN KEY([ResourceId])
+REFERENCES [dbo].[Resource] ([Id])
+GO
+
+ALTER TABLE [dbo].[ClientLog] CHECK CONSTRAINT [FK_ClientLog_Resource]
+GO
+
+
+
+
+
+
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/app.config
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/app.config	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement.DataAccess/3.3/app.config	(revision 6799)
@@ -0,0 +1,10 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <configSections>
+    </configSections>
+    <connectionStrings>
+        <add name="HeuristicLab.Services.ClientManagement.DataAccess.Properties.Settings.HeuristicLab_ClientManagementConnectionString"
+            connectionString="Data Source=.;Initial Catalog=HeuristicLab.ClientManagement;Integrated Security=True"
+            providerName="System.Data.SqlClient" />
+    </connectionStrings>
+</configuration>
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/ClientManagementService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/ClientManagementService.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/ClientManagementService.cs	(revision 6799)
@@ -0,0 +1,108 @@
+﻿#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.ClientManagement {
+  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
+  public class ClientManagementService : IClientManagementService {
+
+    #region IClientManagementService Members
+
+    public DataTransfer.Client GetClient(System.Guid id) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.Client> GetClients() {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.Client> GetClientsOfGroup(System.Guid id) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Guid AddClient(DataTransfer.Client dto) {
+      throw new System.NotImplementedException();
+    }
+
+    public void UpdateClient(DataTransfer.Client dto) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteClient(DataTransfer.Client dto) {
+      throw new System.NotImplementedException();
+    }
+
+    public DataTransfer.Group GetGroup(System.Guid id) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.Group> GetGroups() {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.Group> GetGroupsOf(System.Guid clientId) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Guid AddGroup(DataTransfer.Group dto) {
+      throw new System.NotImplementedException();
+    }
+
+    public void UpdateGroup(DataTransfer.Group dto) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteGroup(DataTransfer.Group dto) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.Resource> GetResources() {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.Resource> GetMembers(System.Guid groupId) {
+      throw new System.NotImplementedException();
+    }
+
+    public DataTransfer.ClientLog GetLastClientLog(System.Guid clientId) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.ClientLog> GetClientLogs(System.Guid clientId) {
+      throw new System.NotImplementedException();
+    }
+
+    public System.Collections.Generic.IEnumerable<DataTransfer.ClientLog> GetClientLogsSince(System.DateTime startDate) {
+      throw new System.NotImplementedException();
+    }
+
+    public void AddClientLogEntry(DataTransfer.ClientLog log) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteClientLogEntry(System.DateTime timeStamp, System.Guid resourceId) {
+      throw new System.NotImplementedException();
+    }
+
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/Convert.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/Convert.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/Convert.cs	(revision 6799)
@@ -0,0 +1,122 @@
+﻿#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 DA = HeuristicLab.Services.ClientManagement.DataAccess;
+using DT = HeuristicLab.Services.ClientManagement.DataTransfer;
+
+namespace HeuristicLab.Services.ClientManagement {
+  public static class Convert {
+
+    #region Resource
+    public static DT.Resource ToDto(DA.Resource source) {
+      return new DT.Resource() {
+        Id = source.Id,
+        Description = source.Description,
+        Name = source.Name,
+        Type = source.Type
+      };
+    }
+
+    public static DA.Resource ToEntity(DT.Resource source) {
+      return new DA.Resource() {
+        Id = source.Id,
+        Description = source.Description,
+        Name = source.Name,
+        Type = source.Type
+      };
+    }
+    #endregion
+
+    #region Group
+    public static DT.Group ToDto(DA.Group source) {
+      return new DT.Group() {
+        Id = source.Id,
+        Description = source.Description,
+        Name = source.Name,
+        Type = source.Type
+      };
+    }
+
+    public static DA.Group ToEntity(DT.Group source) {
+      return new DA.Group() {
+        Id = source.Id,
+        Description = source.Description,
+        Name = source.Name,
+        Type = source.Type
+      };
+    }
+    #endregion
+
+    #region Client
+    public static DT.Client ToDto(DA.Client source) {
+      return new DT.Client() {
+        Id = source.Id,
+        Description = source.Description,
+        Name = source.Name,
+        Type = source.Type,
+        Country = source.Country,
+        HeuristicLabVersion = source.HeuristicLabVersion,
+        IPAddress = source.IPAddress,
+        MemorySize = source.MemorySize,
+        NumberOfCores = source.NumberOfCores,
+        OperatingSystem = source.OperatingSystem,
+        ProcessorType = source.ProcessorType
+      };
+    }
+
+    public static DA.Client ToEntity(DT.Client source) {
+      return new DA.Client() {
+        Id = source.Id,
+        Description = source.Description,
+        Name = source.Name,
+        Type = source.Type,
+        Country = source.Country,
+        HeuristicLabVersion = source.HeuristicLabVersion,
+        IPAddress = source.IPAddress,
+        MemorySize = source.MemorySize,
+        NumberOfCores = source.NumberOfCores,
+        OperatingSystem = source.OperatingSystem,
+        ProcessorType = source.ProcessorType
+      };
+    }
+    #endregion
+
+    #region ClientLog
+    public static DT.ClientLog ToDto(DA.ClientLog source) {
+      return new DT.ClientLog() {
+        Timestamp = source.Timestamp,
+        ResourceId = source.ResourceId,
+        Exception = source.Exception,
+        Message = source.Message
+      };
+    }
+
+    public static DA.ClientLog ToEntity(DT.ClientLog source) {
+      return new DA.ClientLog() {
+        Timestamp = source.Timestamp,
+        ResourceId = source.ResourceId,
+        Exception = source.Exception,
+        Message = source.Message
+      };
+    }
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Client.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Client.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Client.cs	(revision 6799)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Runtime.Serialization;
+namespace HeuristicLab.Services.ClientManagement.DataTransfer {
+  [DataContract]
+  public class Client : Resource {
+    [DataMember]
+    public string ProcessorType { get; set; }
+    [DataMember]
+    public int? NumberOfCores { get; set; }
+    [DataMember]
+    public int? MemorySize { get; set; }
+    [DataMember]
+    public string OperatingSystem { get; set; }
+    [DataMember]
+    public string IPAddress { get; set; }
+    [DataMember]
+    public string HeuristicLabVersion { get; set; }
+    [DataMember]
+    public string Country { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientLog.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientLog.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/ClientLog.cs	(revision 6799)
@@ -0,0 +1,36 @@
+﻿#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.ClientManagement.DataTransfer {
+  [DataContract]
+  public class ClientLog {
+    [DataMember]
+    public DateTime Timestamp { get; set; }
+    [DataMember]
+    public Guid ResourceId { get; set; }
+    [DataMember]
+    public string Message { get; set; }
+    [DataMember]
+    public string Exception { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Group.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Group.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Group.cs	(revision 6799)
@@ -0,0 +1,27 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Runtime.Serialization;
+namespace HeuristicLab.Services.ClientManagement.DataTransfer {
+  [DataContract]
+  public class Group : Resource {
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Resource.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Resource.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/DataTransfer/Resource.cs	(revision 6799)
@@ -0,0 +1,36 @@
+﻿#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.ClientManagement.DataTransfer {
+  [DataContract]
+  public class Resource {
+    [DataMember]
+    public Guid Id { get; set; }
+    [DataMember]
+    public string Name { get; set; }
+    [DataMember]
+    public string Description { get; set; }
+    [DataMember]
+    public string Type { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/HeuristicLab.Services.ClientManagement.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/HeuristicLab.Services.ClientManagement.csproj	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/HeuristicLab.Services.ClientManagement.csproj	(revision 6799)
@@ -0,0 +1,85 @@
+﻿<?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>{63D4C87A-030B-4578-8E9E-DAE6F3E39C90}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Services.ClientManagement</RootNamespace>
+    <AssemblyName>HeuristicLab.Services.ClientManagement</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="Convert.cs" />
+    <Compile Include="ClientManagementService.cs" />
+    <Compile Include="DataTransfer\Client.cs" />
+    <Compile Include="DataTransfer\ClientLog.cs" />
+    <Compile Include="DataTransfer\Group.cs" />
+    <Compile Include="DataTransfer\Resource.cs" />
+    <Compile Include="IClientManagementService.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Services.ClientManagement.DataAccess\3.3\HeuristicLab.Services.ClientManagement.DataAccess.csproj">
+      <Project>{5C6595CF-436E-4C45-9B6C-FC3948A6E117}</Project>
+      <Name>HeuristicLab.Services.ClientManagement.DataAccess</Name>
+    </ProjectReference>
+  </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.ClientManagement/3.3/IClientManagementService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/IClientManagementService.cs	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/IClientManagementService.cs	(revision 6799)
@@ -0,0 +1,78 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Net.Security;
+using System.ServiceModel;
+using HeuristicLab.Services.ClientManagement.DataTransfer;
+
+namespace HeuristicLab.Services.ClientManagement {
+  [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
+  public interface IClientManagementService {
+
+    #region Client
+    Client GetClient(Guid id);
+
+    IEnumerable<Client> GetClients();
+
+    IEnumerable<Client> GetClientsOfGroup(Guid id);
+
+    Guid AddClient(Client dto);
+
+    void UpdateClient(Client dto);
+
+    void DeleteClient(Client dto);
+    #endregion
+
+    #region Group
+    Group GetGroup(Guid id);
+
+    IEnumerable<Group> GetGroups();
+
+    IEnumerable<Group> GetGroupsOf(Guid clientId);
+
+    Guid AddGroup(Group dto);
+
+    void UpdateGroup(Group dto);
+
+    void DeleteGroup(Group dto);
+    #endregion
+
+    #region Resource
+    IEnumerable<Resource> GetResources();
+
+    IEnumerable<Resource> GetMembers(Guid groupId);
+    #endregion
+
+    #region ClientLog
+    ClientLog GetLastClientLog(Guid clientId);
+
+    IEnumerable<ClientLog> GetClientLogs(Guid clientId);
+
+    IEnumerable<ClientLog> GetClientLogsSince(DateTime startDate);
+
+    void AddClientLogEntry(ClientLog log);
+
+    void DeleteClientLogEntry(DateTime timeStamp, Guid resourceId);
+    #endregion
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/Properties/AssemblyInfo.frame	(revision 6799)
+++ /branches/ClientUserManagement/HeuristicLab.Services.ClientManagement/3.3/Properties/AssemblyInfo.frame	(revision 6799)
@@ -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.ClientManagement")]
+[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/PreBuildEvent.cmd
===================================================================
--- /branches/ClientUserManagement/PreBuildEvent.cmd	(revision 6799)
+++ /branches/ClientUserManagement/PreBuildEvent.cmd	(revision 6799)
@@ -0,0 +1,1 @@
+SubWCRev "%ProjectDir%\" "%ProjectDir%\Properties\AssemblyInfo.frame" "%ProjectDir%\Properties\AssemblyInfo.cs"
