Index: /branches/ClientUserManagement/HeuristicLab.GeoIP/1.12/GeoIP License.txt
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.GeoIP/1.12/GeoIP License.txt	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.GeoIP/1.12/GeoIP License.txt	(revision 6840)
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/App.config
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/App.config	(revision 6840)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/App.config	(revision 6840)
@@ -0,0 +1,11 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <connectionStrings>
+    <add name="HeuristicLab.Services.Directoy.DataAccess.Properties.Settings.HeuristicLab_AuthenticationConnectionString"
+        connectionString="Data Source=.;Initial Catalog=HeuristicLab.Authentication;Integrated Security=True"
+        providerName="System.Data.SqlClient" />
+    <add name="HeuristicLab.Services.Access.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.Access-3.3.Tests/HeuristicLab.Services.Access-3.3.Tests.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/HeuristicLab.Services.Access-3.3.Tests.csproj	(revision 6840)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/HeuristicLab.Services.Access-3.3.Tests.csproj	(revision 6840)
@@ -0,0 +1,74 @@
+﻿<?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>
+    </ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{70C5A73A-148C-45A2-938F-F8F6DAA80A02}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Services.Access.Tests</RootNamespace>
+    <AssemblyName>HeuristicLab.Services.Access-3.3.Tests</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+  </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>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq" />
+    <Reference Include="System.ServiceModel" />
+  </ItemGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="UnitTest.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Services.Access.DataAccess\3.3\HeuristicLab.Services.Access.DataAccess-3.3.csproj">
+      <Project>{0F652437-998A-4EAB-8BF1-444B5FE8CE97}</Project>
+      <Name>HeuristicLab.Services.Access.DataAccess-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Services.Access\3.3\HeuristicLab.Services.Access-3.3.csproj">
+      <Project>{9FAC0B23-2730-452A-9BA0-D7CA1746C541}</Project>
+      <Name>HeuristicLab.Services.Access-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- 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.Access-3.3.Tests/Properties/AssemblyInfo.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/Properties/AssemblyInfo.cs	(revision 6840)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/Properties/AssemblyInfo.cs	(revision 6840)
@@ -0,0 +1,35 @@
+﻿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.Access.DataAccess-3.3.Tests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("HeuristicLab.Services.Access.DataAccess-3.3.Tests")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
+[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("034f8119-0165-46e9-909a-42171fc9c8e8")]
+
+// 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.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/UnitTest.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/UnitTest.cs	(revision 6840)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access-3.3.Tests/UnitTest.cs	(revision 6840)
@@ -0,0 +1,76 @@
+﻿#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 Microsoft.VisualStudio.TestTools.UnitTesting;
+using DA = HeuristicLab.Services.Access.DataAccess;
+using DT = HeuristicLab.Services.Access.DataTransfer;
+
+namespace HeuristicLab.Services.Access.Tests {
+  [TestClass]
+  public class UnitTest {
+
+    [TestMethod]
+    public void ClearDB() {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        context.ExecuteCommand("DELETE FROM dbo.ResourceResourceGroup");
+        context.ExecuteCommand("DELETE FROM dbo.Resource");
+        context.ExecuteCommand("DELETE FROM dbo.ClientConfiguration");
+        context.ExecuteCommand("DELETE FROM dbo.ClientError");
+        context.ExecuteCommand("DELETE FROM dbo.ClientLog");
+        context.ExecuteCommand("DELETE FROM dbo.ClientType");
+        context.ExecuteCommand("DELETE FROM dbo.Country");
+        context.ExecuteCommand("DELETE FROM dbo.OperatingSystem");
+        context.ExecuteCommand("DELETE FROM dbo.ResourcePlugin");
+        context.ExecuteCommand("DELETE FROM dbo.Plugin");
+        context.ExecuteCommand("DELETE FROM dbo.UserGroupUserGroup");
+        context.ExecuteCommand("DELETE FROM dbo.UserGroup");
+      }
+    }
+
+    [TestMethod]
+    public void AddClientTest() {
+      ClearDB();
+      AccessService service = new AccessService();
+      DT.ClientConfiguration config = new DT.ClientConfiguration() { Description = "fatConfig", Hash = "xyz" };
+      DT.Country country = new DT.Country() { Name = "Austria" };
+      DT.ClientType clientType = new DT.ClientType() { Name = "Client" };
+      DT.OperatingSystem os = new DT.OperatingSystem() { Name = "Windows 7" };
+
+      DT.Client client = new DT.Client() {
+        ClientConfiguration = config,
+        ClientType = clientType,
+        Country = country,
+        Description = "testClient",
+        HeuristicLabVersion = "3.3.6",
+        MemorySize = 512,
+        NumberOfCores = 4,
+        Name = "testClient",
+        OperatingSystem = os,
+        ProcessorType = "Intel i7",
+        Timestamp = DateTime.Now
+      };
+
+      Guid id = service.AddClient(client);
+      Assert.IsTrue(service.ClientExists(id));
+    }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.dbml
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.dbml	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.dbml	(revision 6840)
@@ -13,17 +13,17 @@
       <Association Name="Resource_ResourcePlugin" Member="ResourcePlugins" ThisKey="Id" OtherKey="ResourceId" Type="ResourcePlugin" />
       <Type Name="Client" InheritanceCode="Client" IsInheritanceDefault="true">
-        <Column Name="ClientConfiguration" Member="ClientConfigurationId" Storage="_ClientConfiguration" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
-        <Column Name="ClientType" Member="ClientTypeId" Storage="_ClientType" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
         <Column Name="HeuristicLabVersion" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="false" />
-        <Column Name="Country" Member="CountryId" Storage="_Country" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
-        <Column Name="OperatingSystem" Member="OperatingSystemId" Storage="_OperatingSystem" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
         <Column Name="MemorySize" Type="System.Int32" DbType="Int" CanBeNull="true" />
         <Column Name="Timestamp" Type="System.DateTime" DbType="DateTime" CanBeNull="true" />
         <Column Name="NumberOfCores" Type="System.Int32" DbType="Int" CanBeNull="true" />
         <Column Name="ProcessorType" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
-        <Association Name="Client_ClientType" Member="ClientType" Storage="_ClientTypes" ThisKey="ClientTypeId" OtherKey="Id" Type="ClientType" Cardinality="One" />
-        <Association Name="Client_OperatingSystem" Member="OperatingSystem" Storage="_OperatingSystems" ThisKey="OperatingSystemId" OtherKey="Id" Type="OperatingSystem" Cardinality="One" />
-        <Association Name="Client_Country" Member="Country" Storage="_Countries" ThisKey="CountryId" OtherKey="Id" Type="Country" Cardinality="One" />
-        <Association Name="Client_ClientConfiguration" Member="ClientConfiguration" ThisKey="ClientConfigurationId" OtherKey="Id" Type="ClientConfiguration" Cardinality="One" />
+        <Column Name="ClientTypeId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
+        <Column Name="OperatingSystemId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
+        <Column Name="ClientConfigurationId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
+        <Column Name="CountryId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
+        <Association Name="ClientType_Client" Member="ClientType" ThisKey="ClientTypeId" OtherKey="Id" Type="ClientType" IsForeignKey="true" />
+        <Association Name="OperatingSystem_Client" Member="OperatingSystem" ThisKey="OperatingSystemId" OtherKey="Id" Type="OperatingSystem" IsForeignKey="true" />
+        <Association Name="Country_Client" Member="Country" ThisKey="CountryId" OtherKey="Id" Type="Country" IsForeignKey="true" />
+        <Association Name="ClientConfiguration_Client" Member="ClientConfiguration" ThisKey="ClientConfigurationId" OtherKey="Id" Type="ClientConfiguration" IsForeignKey="true" />
       </Type>
       <Type Name="ClientGroup" InheritanceCode="ClientGroup" />
@@ -78,5 +78,4 @@
       <Column Name="Id" AutoSync="Never" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
       <Column Name="Name" Type="System.String" DbType="NVarChar(MAX) NOT NULL" CanBeNull="false" />
-      <Association Name="Client_ClientType" Member="Client" ThisKey="Id" OtherKey="ClientTypeId" Type="Client" IsForeignKey="true" />
     </Type>
   </Table>
@@ -85,5 +84,4 @@
       <Column Name="Id" AutoSync="Never" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
       <Column Name="Name" Type="System.String" DbType="NVarChar(MAX) NOT NULL" CanBeNull="false" />
-      <Association Name="Client_OperatingSystem" Member="Client" ThisKey="Id" OtherKey="OperatingSystemId" Type="Client" IsForeignKey="true" />
     </Type>
   </Table>
@@ -92,5 +90,4 @@
       <Column Name="Id" AutoSync="Never" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
       <Column Name="Name" Type="System.String" DbType="NVarChar(MAX) NOT NULL" CanBeNull="false" />
-      <Association Name="Client_Country" Member="Client" ThisKey="Id" OtherKey="CountryId" Type="Client" IsForeignKey="true" />
     </Type>
   </Table>
@@ -100,5 +97,4 @@
       <Column Name="Hash" Type="System.String" DbType="NVarChar(MAX) NOT NULL" CanBeNull="false" />
       <Column Name="Description" Type="System.String" DbType="NVarChar(MAX)" CanBeNull="true" />
-      <Association Name="Client_ClientConfiguration" Member="Client" ThisKey="Id" OtherKey="ClientConfigurationId" Type="Client" IsForeignKey="true" />
     </Type>
   </Table>
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.dbml.layout
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.dbml.layout	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.dbml.layout	(revision 6840)
@@ -59,5 +59,5 @@
       </nestedChildShapes>
     </classShape>
-    <associationConnector edgePoints="[(5.875 : 2.07859537760417); (5.875 : 2.34875); (8.125 : 2.34875)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+    <associationConnector edgePoints="[(5.875 : 2.07859537760417); (5.875 : 2.34875); (8.125 : 2.34875)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/ClientManagementDataContext/Resource/Resource_ClientLog" />
       <nodes>
@@ -115,25 +115,4 @@
       </nestedChildShapes>
     </classShape>
-    <associationConnector edgePoints="[(3.75 : 2.5); (3.375 : 2.125); (3.375 : 1.09699625651042); (2.5 : 1.09699625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
-      <AssociationMoniker Name="/ClientManagementDataContext/Client/Client_ClientType" />
-      <nodes>
-        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
-        <classShapeMoniker Id="38891c77-8166-44c9-8dd5-da45900c45f3" />
-      </nodes>
-    </associationConnector>
-    <associationConnector edgePoints="[(3.75 : 2.75324875651042); (2.5 : 2.75324875651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
-      <AssociationMoniker Name="/ClientManagementDataContext/Client/Client_OperatingSystem" />
-      <nodes>
-        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
-        <classShapeMoniker Id="cb6a29ca-7ef1-4721-9108-b64558f282a6" />
-      </nodes>
-    </associationConnector>
-    <associationConnector edgePoints="[(3.75 : 3.59699625651042); (2.5 : 3.59699625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
-      <AssociationMoniker Name="/ClientManagementDataContext/Client/Client_Country" />
-      <nodes>
-        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
-        <classShapeMoniker Id="c7dfcb39-11e2-47ec-8a48-4e41e2901893" />
-      </nodes>
-    </associationConnector>
     <classShape Id="9f63fd2b-4410-4817-99d4-648466eacddd" absoluteBounds="3.625, 5.625, 2, 1.1939925130208333">
       <DataClassMoniker Name="/ClientManagementDataContext/ResourcePlugin" />
@@ -149,5 +128,5 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(5.90625 : 2.07859537760417); (5.90625 : 6.22199625651042); (5.625 : 6.22199625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+    <associationConnector edgePoints="[(5.90625 : 2.07859537760417); (5.90625 : 6.22199625651042); (5.625 : 6.22199625651042)]" fixedFrom="Algorithm" fixedTo="Algorithm">
       <AssociationMoniker Name="/ClientManagementDataContext/Resource/Resource_ResourcePlugin" />
       <nodes>
@@ -207,9 +186,30 @@
       </nodes>
     </associationConnector>
-    <associationConnector edgePoints="[(3.75 : 4.64505126953125); (2.5 : 4.64505126953125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
-      <AssociationMoniker Name="/ClientManagementDataContext/Client/Client_ClientConfiguration" />
-      <nodes>
-        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
+    <associationConnector edgePoints="[(2.5 : 1.09699625651042); (4.46848483471003 : 1.09699625651042); (4.46848483471003 : 2.5)]" fixedFrom="Algorithm" fixedTo="Caller">
+      <AssociationMoniker Name="/ClientManagementDataContext/ClientType/ClientType_Client" />
+      <nodes>
+        <classShapeMoniker Id="38891c77-8166-44c9-8dd5-da45900c45f3" />
+        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.5 : 2.72199625651042); (3.75 : 2.72199625651042)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/ClientManagementDataContext/OperatingSystem/OperatingSystem_Client" />
+      <nodes>
+        <classShapeMoniker Id="cb6a29ca-7ef1-4721-9108-b64558f282a6" />
+        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.5 : 3.59699625651042); (3.75 : 3.59699625651042)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/ClientManagementDataContext/Country/Country_Client" />
+      <nodes>
+        <classShapeMoniker Id="c7dfcb39-11e2-47ec-8a48-4e41e2901893" />
+        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(2.5 : 4.64505126953125); (3.75 : 4.64505126953125)]" fixedFrom="Algorithm" fixedTo="Algorithm">
+      <AssociationMoniker Name="/ClientManagementDataContext/ClientConfiguration/ClientConfiguration_Client" />
+      <nodes>
         <classShapeMoniker Id="3aef9298-1092-45fa-bf96-8dd25d61c2f8" />
+        <classShapeMoniker Id="c964402f-99b7-4355-b9ad-279a2a7cf692" />
       </nodes>
     </associationConnector>
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.designer.cs	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/ClientManagement.designer.cs	(revision 6840)
@@ -10,16 +10,23 @@
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.Services.Access.DataAccess {
-  using System;
-  using System.ComponentModel;
-  using System.Data.Linq;
-  using System.Data.Linq.Mapping;
-
-
-  [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();
-
+namespace HeuristicLab.Services.Access.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();
@@ -61,129 +68,159 @@
     partial void DeleteUserGroupUserGroup(UserGroupUserGroup instance);
     #endregion
-
-    public ClientManagementDataContext() :
-      base(global::HeuristicLab.Services.Access.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>();
-      }
-    }
-
-    public System.Data.Linq.Table<ClientError> ClientErrors {
-      get {
-        return this.GetTable<ClientError>();
-      }
-    }
-
-    public System.Data.Linq.Table<UserGroupBase> UserGroupBases {
-      get {
-        return this.GetTable<UserGroupBase>();
-      }
-    }
-
-    public System.Data.Linq.Table<ClientType> ClientTypes {
-      get {
-        return this.GetTable<ClientType>();
-      }
-    }
-
-    public System.Data.Linq.Table<OperatingSystem> OperatingSystems {
-      get {
-        return this.GetTable<OperatingSystem>();
-      }
-    }
-
-    public System.Data.Linq.Table<Country> Countries {
-      get {
-        return this.GetTable<Country>();
-      }
-    }
-
-    public System.Data.Linq.Table<ClientConfiguration> ClientConfigurations {
-      get {
-        return this.GetTable<ClientConfiguration>();
-      }
-    }
-
-    public System.Data.Linq.Table<Plugin> Plugins {
-      get {
-        return this.GetTable<Plugin>();
-      }
-    }
-
-    public System.Data.Linq.Table<ResourcePlugin> ResourcePlugins {
-      get {
-        return this.GetTable<ResourcePlugin>();
-      }
-    }
-
-    public System.Data.Linq.Table<UserGroupUserGroup> UserGroupUserGroups {
-      get {
-        return this.GetTable<UserGroupUserGroup>();
-      }
-    }
-  }
-
-  [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), IsDefault = true)]
-  [global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code = "ClientGroup", Type = typeof(ClientGroup))]
-  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;
-
-    private EntitySet<ClientError> _ClientErrors;
-
-    private EntitySet<ResourcePlugin> _ResourcePlugins;
-
+		
+		public ClientManagementDataContext() : 
+				base(global::HeuristicLab.Services.Access.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>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientError> ClientErrors
+		{
+			get
+			{
+				return this.GetTable<ClientError>();
+			}
+		}
+		
+		public System.Data.Linq.Table<UserGroupBase> UserGroupBases
+		{
+			get
+			{
+				return this.GetTable<UserGroupBase>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientType> ClientTypes
+		{
+			get
+			{
+				return this.GetTable<ClientType>();
+			}
+		}
+		
+		public System.Data.Linq.Table<OperatingSystem> OperatingSystems
+		{
+			get
+			{
+				return this.GetTable<OperatingSystem>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Country> Countries
+		{
+			get
+			{
+				return this.GetTable<Country>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ClientConfiguration> ClientConfigurations
+		{
+			get
+			{
+				return this.GetTable<ClientConfiguration>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Plugin> Plugins
+		{
+			get
+			{
+				return this.GetTable<Plugin>();
+			}
+		}
+		
+		public System.Data.Linq.Table<ResourcePlugin> ResourcePlugins
+		{
+			get
+			{
+				return this.GetTable<ResourcePlugin>();
+			}
+		}
+		
+		public System.Data.Linq.Table<UserGroupUserGroup> UserGroupUserGroups
+		{
+			get
+			{
+				return this.GetTable<UserGroupUserGroup>();
+			}
+		}
+	}
+	
+	[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), IsDefault=true)]
+	[global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code="ClientGroup", Type=typeof(ClientGroup))]
+	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;
+		
+		private EntitySet<ClientError> _ClientErrors;
+		
+		private EntitySet<ResourcePlugin> _ResourcePlugins;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -199,237 +236,276 @@
     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));
-      this._ClientErrors = new EntitySet<ClientError>(new Action<ClientError>(this.attach_ClientErrors), new Action<ClientError>(this.detach_ClientErrors));
-      this._ResourcePlugins = new EntitySet<ResourcePlugin>(new Action<ResourcePlugin>(this.attach_ResourcePlugins), new Action<ResourcePlugin>(this.detach_ResourcePlugins));
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", AutoSync = AutoSync.OnInsert, DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = 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)", CanBeNull = false)]
-    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> ResourceResourceGroupsChilds {
-      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> ResourceResourceGroupsParents {
-      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);
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Resource_ClientError", Storage = "_ClientErrors", ThisKey = "Id", OtherKey = "ClientId")]
-    public EntitySet<ClientError> ClientErrors {
-      get {
-        return this._ClientErrors;
-      }
-      set {
-        this._ClientErrors.Assign(value);
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Resource_ResourcePlugin", Storage = "_ResourcePlugins", ThisKey = "Id", OtherKey = "ResourceId")]
-    public EntitySet<ResourcePlugin> ResourcePlugins {
-      get {
-        return this._ResourcePlugins;
-      }
-      set {
-        this._ResourcePlugins.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.ParentResource = this;
-    }
-
-    private void detach_ResourceResourceGroups(ResourceResourceGroup entity) {
-      this.SendPropertyChanging();
-      entity.ParentResource = null;
-    }
-
-    private void attach_ResourceResourceGroups1(ResourceResourceGroup entity) {
-      this.SendPropertyChanging();
-      entity.Resource = this;
-    }
-
-    private void detach_ResourceResourceGroups1(ResourceResourceGroup entity) {
-      this.SendPropertyChanging();
-      entity.Resource = null;
-    }
-
-    private void attach_ClientLogs(ClientLog entity) {
-      this.SendPropertyChanging();
-      entity.Resource = this;
-    }
-
-    private void detach_ClientLogs(ClientLog entity) {
-      this.SendPropertyChanging();
-      entity.Resource = null;
-    }
-
-    private void attach_ClientErrors(ClientError entity) {
-      this.SendPropertyChanging();
-      entity.Resource = this;
-    }
-
-    private void detach_ClientErrors(ClientError entity) {
-      this.SendPropertyChanging();
-      entity.Resource = null;
-    }
-
-    private void attach_ResourcePlugins(ResourcePlugin entity) {
-      this.SendPropertyChanging();
-      entity.Resource = this;
-    }
-
-    private void detach_ResourcePlugins(ResourcePlugin entity) {
-      this.SendPropertyChanging();
-      entity.Resource = null;
-    }
-  }
-
-  public partial class Client : Resource {
-
-    private System.Guid _ClientConfigurationId;
-
-    private System.Guid _ClientType;
-
-    private string _HeuristicLabVersion;
-
-    private System.Guid _Country;
-
-    private System.Guid _OperatingSystem;
-
-    private System.Nullable<int> _MemorySize;
-
-    private System.Nullable<System.DateTime> _Timestamp;
-
-    private System.Nullable<int> _NumberOfCores;
-
-    private string _ProcessorType;
-
-    private EntityRef<ClientType> _ClientTypes;
-
-    private EntityRef<OperatingSystem> _OperatingSystems;
-
-    private EntityRef<Country> _Countries;
-
-    private EntityRef<ClientConfiguration> _ClientConfiguration;
-
+		
+		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));
+			this._ClientErrors = new EntitySet<ClientError>(new Action<ClientError>(this.attach_ClientErrors), new Action<ClientError>(this.detach_ClientErrors));
+			this._ResourcePlugins = new EntitySet<ResourcePlugin>(new Action<ResourcePlugin>(this.attach_ResourcePlugins), new Action<ResourcePlugin>(this.detach_ResourcePlugins));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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)", CanBeNull=false)]
+		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> ResourceResourceGroupsChilds
+		{
+			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> ResourceResourceGroupsParents
+		{
+			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);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ClientError", Storage="_ClientErrors", ThisKey="Id", OtherKey="ClientId")]
+		public EntitySet<ClientError> ClientErrors
+		{
+			get
+			{
+				return this._ClientErrors;
+			}
+			set
+			{
+				this._ClientErrors.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ResourcePlugin", Storage="_ResourcePlugins", ThisKey="Id", OtherKey="ResourceId")]
+		public EntitySet<ResourcePlugin> ResourcePlugins
+		{
+			get
+			{
+				return this._ResourcePlugins;
+			}
+			set
+			{
+				this._ResourcePlugins.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.ParentResource = this;
+		}
+		
+		private void detach_ResourceResourceGroups(ResourceResourceGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.ParentResource = null;
+		}
+		
+		private void attach_ResourceResourceGroups1(ResourceResourceGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ResourceResourceGroups1(ResourceResourceGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_ClientLogs(ClientLog entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ClientLogs(ClientLog entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_ClientErrors(ClientError entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ClientErrors(ClientError entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+		
+		private void attach_ResourcePlugins(ResourcePlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = this;
+		}
+		
+		private void detach_ResourcePlugins(ResourcePlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Resource = null;
+		}
+	}
+	
+	public partial class Client : Resource
+	{
+		
+		private string _HeuristicLabVersion;
+		
+		private System.Nullable<int> _MemorySize;
+		
+		private System.Nullable<System.DateTime> _Timestamp;
+		
+		private System.Nullable<int> _NumberOfCores;
+		
+		private string _ProcessorType;
+		
+		private System.Guid _ClientTypeId;
+		
+		private System.Guid _OperatingSystemId;
+		
+		private System.Guid _ClientConfigurationId;
+		
+		private System.Guid _CountryId;
+		
+		private EntityRef<ClientType> _ClientType;
+		
+		private EntityRef<OperatingSystem> _OperatingSystem;
+		
+		private EntityRef<Country> _Country;
+		
+		private EntityRef<ClientConfiguration> _ClientConfiguration;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
     partial void OnValidate(System.Data.Linq.ChangeAction action);
     partial void OnCreated();
-    partial void OnClientConfigurationIdChanging(System.Guid value);
-    partial void OnClientConfigurationIdChanged();
-    partial void OnClientTypeIdChanging(System.Guid value);
-    partial void OnClientTypeIdChanged();
     partial void OnHeuristicLabVersionChanging(string value);
     partial void OnHeuristicLabVersionChanged();
-    partial void OnCountryIdChanging(System.Guid value);
-    partial void OnCountryIdChanged();
-    partial void OnOperatingSystemIdChanging(System.Guid value);
-    partial void OnOperatingSystemIdChanged();
     partial void OnMemorySizeChanging(System.Nullable<int> value);
     partial void OnMemorySizeChanged();
@@ -440,253 +516,295 @@
     partial void OnProcessorTypeChanging(string value);
     partial void OnProcessorTypeChanged();
+    partial void OnClientTypeIdChanging(System.Guid value);
+    partial void OnClientTypeIdChanged();
+    partial void OnOperatingSystemIdChanging(System.Guid value);
+    partial void OnOperatingSystemIdChanged();
+    partial void OnClientConfigurationIdChanging(System.Guid value);
+    partial void OnClientConfigurationIdChanged();
+    partial void OnCountryIdChanging(System.Guid value);
+    partial void OnCountryIdChanged();
     #endregion
-
-    public Client() {
-      this._ClientTypes = default(EntityRef<ClientType>);
-      this._OperatingSystems = default(EntityRef<OperatingSystem>);
-      this._Countries = default(EntityRef<Country>);
-      this._ClientConfiguration = default(EntityRef<ClientConfiguration>);
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Name = "ClientConfiguration", Storage = "_ClientConfigurationId", DbType = "UniqueIdentifier")]
-    public System.Guid ClientConfigurationId {
-      get {
-        return this._ClientConfigurationId;
-      }
-      set {
-        if ((this._ClientConfigurationId != value)) {
-          this.OnClientConfigurationIdChanging(value);
-          this.SendPropertyChanging();
-          this._ClientConfigurationId = value;
-          this.SendPropertyChanged("ClientConfigurationId");
-          this.OnClientConfigurationIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Name = "ClientType", Storage = "_ClientType", DbType = "UniqueIdentifier")]
-    public System.Guid ClientTypeId {
-      get {
-        return this._ClientType;
-      }
-      set {
-        if ((this._ClientType != value)) {
-          this.OnClientTypeIdChanging(value);
-          this.SendPropertyChanging();
-          this._ClientType = value;
-          this.SendPropertyChanged("ClientTypeId");
-          this.OnClientTypeIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_HeuristicLabVersion", DbType = "NVarChar(MAX)", CanBeNull = false)]
-    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(Name = "Country", Storage = "_Country", DbType = "UniqueIdentifier")]
-    public System.Guid CountryId {
-      get {
-        return this._Country;
-      }
-      set {
-        if ((this._Country != value)) {
-          this.OnCountryIdChanging(value);
-          this.SendPropertyChanging();
-          this._Country = value;
-          this.SendPropertyChanged("CountryId");
-          this.OnCountryIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Name = "OperatingSystem", Storage = "_OperatingSystem", DbType = "UniqueIdentifier")]
-    public System.Guid OperatingSystemId {
-      get {
-        return this._OperatingSystem;
-      }
-      set {
-        if ((this._OperatingSystem != value)) {
-          this.OnOperatingSystemIdChanging(value);
-          this.SendPropertyChanging();
-          this._OperatingSystem = value;
-          this.SendPropertyChanged("OperatingSystemId");
-          this.OnOperatingSystemIdChanged();
-        }
-      }
-    }
-
-    [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 = "_Timestamp", DbType = "DateTime")]
-    public System.Nullable<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 = "_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 = "_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.AssociationAttribute(Name = "Client_ClientType", Storage = "_ClientTypes", ThisKey = "ClientTypeId", OtherKey = "Id", IsUnique = true, IsForeignKey = false)]
-    public ClientType ClientType {
-      get {
-        return this._ClientTypes.Entity;
-      }
-      set {
-        ClientType previousValue = this._ClientTypes.Entity;
-        if (((previousValue != value)
-              || (this._ClientTypes.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._ClientTypes.Entity = null;
-            previousValue.Client = null;
-          }
-          this._ClientTypes.Entity = value;
-          if ((value != null)) {
-            value.Client = this;
-          }
-          this.SendPropertyChanged("ClientType");
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Client_OperatingSystem", Storage = "_OperatingSystems", ThisKey = "OperatingSystemId", OtherKey = "Id", IsUnique = true, IsForeignKey = false)]
-    public OperatingSystem OperatingSystem {
-      get {
-        return this._OperatingSystems.Entity;
-      }
-      set {
-        OperatingSystem previousValue = this._OperatingSystems.Entity;
-        if (((previousValue != value)
-              || (this._OperatingSystems.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._OperatingSystems.Entity = null;
-            previousValue.Client = null;
-          }
-          this._OperatingSystems.Entity = value;
-          if ((value != null)) {
-            value.Client = this;
-          }
-          this.SendPropertyChanged("OperatingSystem");
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Client_Country", Storage = "_Countries", ThisKey = "CountryId", OtherKey = "Id", IsUnique = true, IsForeignKey = false)]
-    public Country Country {
-      get {
-        return this._Countries.Entity;
-      }
-      set {
-        Country previousValue = this._Countries.Entity;
-        if (((previousValue != value)
-              || (this._Countries.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._Countries.Entity = null;
-            previousValue.Client = null;
-          }
-          this._Countries.Entity = value;
-          if ((value != null)) {
-            value.Client = this;
-          }
-          this.SendPropertyChanged("Country");
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Client_ClientConfiguration", Storage = "_ClientConfiguration", ThisKey = "ClientConfigurationId", OtherKey = "Id", IsUnique = true, IsForeignKey = false)]
-    public ClientConfiguration ClientConfiguration {
-      get {
-        return this._ClientConfiguration.Entity;
-      }
-      set {
-        ClientConfiguration previousValue = this._ClientConfiguration.Entity;
-        if (((previousValue != value)
-              || (this._ClientConfiguration.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._ClientConfiguration.Entity = null;
-            previousValue.Client = null;
-          }
-          this._ClientConfiguration.Entity = value;
-          if ((value != null)) {
-            value.Client = this;
-          }
-          this.SendPropertyChanged("ClientConfiguration");
-        }
-      }
-    }
-  }
-
-  public partial class ClientGroup : Resource {
-
+		
+		public Client()
+		{
+			this._ClientType = default(EntityRef<ClientType>);
+			this._OperatingSystem = default(EntityRef<OperatingSystem>);
+			this._Country = default(EntityRef<Country>);
+			this._ClientConfiguration = default(EntityRef<ClientConfiguration>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HeuristicLabVersion", DbType="NVarChar(MAX)", CanBeNull=false)]
+		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="_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="_Timestamp", DbType="DateTime")]
+		public System.Nullable<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="_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="_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="_ClientTypeId", DbType="UniqueIdentifier")]
+		public System.Guid ClientTypeId
+		{
+			get
+			{
+				return this._ClientTypeId;
+			}
+			set
+			{
+				if ((this._ClientTypeId != value))
+				{
+					if (this._ClientType.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientTypeIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientTypeId = value;
+					this.SendPropertyChanged("ClientTypeId");
+					this.OnClientTypeIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OperatingSystemId", DbType="UniqueIdentifier")]
+		public System.Guid OperatingSystemId
+		{
+			get
+			{
+				return this._OperatingSystemId;
+			}
+			set
+			{
+				if ((this._OperatingSystemId != value))
+				{
+					if (this._OperatingSystem.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnOperatingSystemIdChanging(value);
+					this.SendPropertyChanging();
+					this._OperatingSystemId = value;
+					this.SendPropertyChanged("OperatingSystemId");
+					this.OnOperatingSystemIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ClientConfigurationId", DbType="UniqueIdentifier")]
+		public System.Guid ClientConfigurationId
+		{
+			get
+			{
+				return this._ClientConfigurationId;
+			}
+			set
+			{
+				if ((this._ClientConfigurationId != value))
+				{
+					if (this._ClientConfiguration.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientConfigurationIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientConfigurationId = value;
+					this.SendPropertyChanged("ClientConfigurationId");
+					this.OnClientConfigurationIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CountryId", DbType="UniqueIdentifier")]
+		public System.Guid CountryId
+		{
+			get
+			{
+				return this._CountryId;
+			}
+			set
+			{
+				if ((this._CountryId != value))
+				{
+					if (this._Country.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnCountryIdChanging(value);
+					this.SendPropertyChanging();
+					this._CountryId = value;
+					this.SendPropertyChanged("CountryId");
+					this.OnCountryIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ClientType_Client", Storage="_ClientType", ThisKey="ClientTypeId", OtherKey="Id", IsForeignKey=true)]
+		public ClientType ClientType
+		{
+			get
+			{
+				return this._ClientType.Entity;
+			}
+			set
+			{
+				if ((this._ClientType.Entity != value))
+				{
+					this.SendPropertyChanging();
+					this._ClientType.Entity = value;
+					this.SendPropertyChanged("ClientType");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="OperatingSystem_Client", Storage="_OperatingSystem", ThisKey="OperatingSystemId", OtherKey="Id", IsForeignKey=true)]
+		public OperatingSystem OperatingSystem
+		{
+			get
+			{
+				return this._OperatingSystem.Entity;
+			}
+			set
+			{
+				if ((this._OperatingSystem.Entity != value))
+				{
+					this.SendPropertyChanging();
+					this._OperatingSystem.Entity = value;
+					this.SendPropertyChanged("OperatingSystem");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Country_Client", Storage="_Country", ThisKey="CountryId", OtherKey="Id", IsForeignKey=true)]
+		public Country Country
+		{
+			get
+			{
+				return this._Country.Entity;
+			}
+			set
+			{
+				if ((this._Country.Entity != value))
+				{
+					this.SendPropertyChanging();
+					this._Country.Entity = value;
+					this.SendPropertyChanged("Country");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ClientConfiguration_Client", Storage="_ClientConfiguration", ThisKey="ClientConfigurationId", OtherKey="Id", IsForeignKey=true)]
+		public ClientConfiguration ClientConfiguration
+		{
+			get
+			{
+				return this._ClientConfiguration.Entity;
+			}
+			set
+			{
+				if ((this._ClientConfiguration.Entity != value))
+				{
+					this.SendPropertyChanging();
+					this._ClientConfiguration.Entity = value;
+					this.SendPropertyChanged("ClientConfiguration");
+				}
+			}
+		}
+	}
+	
+	public partial class ClientGroup : Resource
+	{
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -694,23 +812,25 @@
     partial void OnCreated();
     #endregion
-
-    public ClientGroup() {
-      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;
-
+		
+		public ClientGroup()
+		{
+			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();
@@ -722,131 +842,163 @@
     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 ParentResource {
-      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.ResourceResourceGroupsChilds.Remove(this);
-          }
-          this._Resource.Entity = value;
-          if ((value != null)) {
-            value.ResourceResourceGroupsChilds.Add(this);
-            this._ResourceGroupId = value.Id;
-          } else {
-            this._ResourceGroupId = default(System.Guid);
-          }
-          this.SendPropertyChanged("ParentResource");
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Resource_ResourceResourceGroup1", Storage = "_Resource1", ThisKey = "ResourceId", OtherKey = "Id", IsForeignKey = true)]
-    public Resource Resource {
-      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.ResourceResourceGroupsParents.Remove(this);
-          }
-          this._Resource1.Entity = value;
-          if ((value != null)) {
-            value.ResourceResourceGroupsParents.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));
-      }
-    }
-  }
-
-  [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 EntityRef<Resource> _Resource;
-
+		
+		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 ParentResource
+		{
+			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.ResourceResourceGroupsChilds.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ResourceResourceGroupsChilds.Add(this);
+						this._ResourceGroupId = value.Id;
+					}
+					else
+					{
+						this._ResourceGroupId = default(System.Guid);
+					}
+					this.SendPropertyChanged("ParentResource");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ResourceResourceGroup1", Storage="_Resource1", ThisKey="ResourceId", OtherKey="Id", IsForeignKey=true)]
+		public Resource Resource
+		{
+			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.ResourceResourceGroupsParents.Remove(this);
+					}
+					this._Resource1.Entity = value;
+					if ((value != null))
+					{
+						value.ResourceResourceGroupsParents.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));
+			}
+		}
+	}
+	
+	[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 EntityRef<Resource> _Resource;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -860,127 +1012,154 @@
     partial void OnMessageChanged();
     #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.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));
-      }
-    }
-  }
-
-  [global::System.Data.Linq.Mapping.TableAttribute(Name = "dbo.ClientError")]
-  public partial class ClientError : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _Id;
-
-    private System.DateTime _Timestamp;
-
-    private string _Exception;
-
-    private string _UserComment;
-
-    private string _ConfigDump;
-
-    private System.Nullable<System.Guid> _ClientId;
-
-    private System.Nullable<System.Guid> _UserId;
-
-    private EntityRef<Resource> _Resource;
-
-    private EntityRef<UserGroupBase> _UserGroupBase;
-
+		
+		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.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));
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ClientError")]
+	public partial class ClientError : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private System.DateTime _Timestamp;
+		
+		private string _Exception;
+		
+		private string _UserComment;
+		
+		private string _ConfigDump;
+		
+		private System.Nullable<System.Guid> _ClientId;
+		
+		private System.Nullable<System.Guid> _UserId;
+		
+		private EntityRef<Resource> _Resource;
+		
+		private EntityRef<UserGroupBase> _UserGroupBase;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1002,216 +1181,268 @@
     partial void OnUserIdChanged();
     #endregion
-
-    public ClientError() {
-      this._Resource = default(EntityRef<Resource>);
-      this._UserGroupBase = default(EntityRef<UserGroupBase>);
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = 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 = "_Timestamp", DbType = "DateTime NOT NULL")]
-    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 = "_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.ColumnAttribute(Storage = "_UserComment", DbType = "NVarChar(MAX)")]
-    public string UserComment {
-      get {
-        return this._UserComment;
-      }
-      set {
-        if ((this._UserComment != value)) {
-          this.OnUserCommentChanging(value);
-          this.SendPropertyChanging();
-          this._UserComment = value;
-          this.SendPropertyChanged("UserComment");
-          this.OnUserCommentChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_ConfigDump", DbType = "NVarChar(MAX)")]
-    public string ConfigDump {
-      get {
-        return this._ConfigDump;
-      }
-      set {
-        if ((this._ConfigDump != value)) {
-          this.OnConfigDumpChanging(value);
-          this.SendPropertyChanging();
-          this._ConfigDump = value;
-          this.SendPropertyChanged("ConfigDump");
-          this.OnConfigDumpChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_ClientId", DbType = "UniqueIdentifier")]
-    public System.Nullable<System.Guid> ClientId {
-      get {
-        return this._ClientId;
-      }
-      set {
-        if ((this._ClientId != value)) {
-          if (this._Resource.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          this.OnClientIdChanging(value);
-          this.SendPropertyChanging();
-          this._ClientId = value;
-          this.SendPropertyChanged("ClientId");
-          this.OnClientIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_UserId", DbType = "UniqueIdentifier")]
-    public System.Nullable<System.Guid> UserId {
-      get {
-        return this._UserId;
-      }
-      set {
-        if ((this._UserId != value)) {
-          if (this._UserGroupBase.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.AssociationAttribute(Name = "Resource_ClientError", Storage = "_Resource", ThisKey = "ClientId", 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.ClientErrors.Remove(this);
-          }
-          this._Resource.Entity = value;
-          if ((value != null)) {
-            value.ClientErrors.Add(this);
-            this._ClientId = value.Id;
-          } else {
-            this._ClientId = default(Nullable<System.Guid>);
-          }
-          this.SendPropertyChanged("Resource");
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "UserGroupBase_ClientError", Storage = "_UserGroupBase", ThisKey = "UserId", OtherKey = "Id", IsForeignKey = true)]
-    public UserGroupBase UserGroupBase {
-      get {
-        return this._UserGroupBase.Entity;
-      }
-      set {
-        UserGroupBase previousValue = this._UserGroupBase.Entity;
-        if (((previousValue != value)
-              || (this._UserGroupBase.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._UserGroupBase.Entity = null;
-            previousValue.ClientErrors.Remove(this);
-          }
-          this._UserGroupBase.Entity = value;
-          if ((value != null)) {
-            value.ClientErrors.Add(this);
-            this._UserId = value.Id;
-          } else {
-            this._UserId = default(Nullable<System.Guid>);
-          }
-          this.SendPropertyChanged("UserGroupBase");
-        }
-      }
-    }
-
-    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.UserGroup")]
-  [global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code = "UserGroupBase", Type = typeof(UserGroupBase))]
-  [global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code = "User", Type = typeof(User))]
-  [global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code = "UserGroup", Type = typeof(UserGroup))]
-  public partial class UserGroupBase : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _Id;
-
-    private string _Type;
-
-    private EntitySet<ClientError> _ClientErrors;
-
-    private EntitySet<UserGroupUserGroup> _UserGroupUserGroups;
-
-    private EntitySet<UserGroupUserGroup> _UserGroupUserGroups1;
-
+		
+		public ClientError()
+		{
+			this._Resource = default(EntityRef<Resource>);
+			this._UserGroupBase = default(EntityRef<UserGroupBase>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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="_Timestamp", DbType="DateTime NOT NULL")]
+		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="_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.ColumnAttribute(Storage="_UserComment", DbType="NVarChar(MAX)")]
+		public string UserComment
+		{
+			get
+			{
+				return this._UserComment;
+			}
+			set
+			{
+				if ((this._UserComment != value))
+				{
+					this.OnUserCommentChanging(value);
+					this.SendPropertyChanging();
+					this._UserComment = value;
+					this.SendPropertyChanged("UserComment");
+					this.OnUserCommentChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ConfigDump", DbType="NVarChar(MAX)")]
+		public string ConfigDump
+		{
+			get
+			{
+				return this._ConfigDump;
+			}
+			set
+			{
+				if ((this._ConfigDump != value))
+				{
+					this.OnConfigDumpChanging(value);
+					this.SendPropertyChanging();
+					this._ConfigDump = value;
+					this.SendPropertyChanged("ConfigDump");
+					this.OnConfigDumpChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ClientId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> ClientId
+		{
+			get
+			{
+				return this._ClientId;
+			}
+			set
+			{
+				if ((this._ClientId != value))
+				{
+					if (this._Resource.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnClientIdChanging(value);
+					this.SendPropertyChanging();
+					this._ClientId = value;
+					this.SendPropertyChanged("ClientId");
+					this.OnClientIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier")]
+		public System.Nullable<System.Guid> UserId
+		{
+			get
+			{
+				return this._UserId;
+			}
+			set
+			{
+				if ((this._UserId != value))
+				{
+					if (this._UserGroupBase.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.AssociationAttribute(Name="Resource_ClientError", Storage="_Resource", ThisKey="ClientId", 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.ClientErrors.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ClientErrors.Add(this);
+						this._ClientId = value.Id;
+					}
+					else
+					{
+						this._ClientId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("Resource");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="UserGroupBase_ClientError", Storage="_UserGroupBase", ThisKey="UserId", OtherKey="Id", IsForeignKey=true)]
+		public UserGroupBase UserGroupBase
+		{
+			get
+			{
+				return this._UserGroupBase.Entity;
+			}
+			set
+			{
+				UserGroupBase previousValue = this._UserGroupBase.Entity;
+				if (((previousValue != value) 
+							|| (this._UserGroupBase.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._UserGroupBase.Entity = null;
+						previousValue.ClientErrors.Remove(this);
+					}
+					this._UserGroupBase.Entity = value;
+					if ((value != null))
+					{
+						value.ClientErrors.Add(this);
+						this._UserId = value.Id;
+					}
+					else
+					{
+						this._UserId = default(Nullable<System.Guid>);
+					}
+					this.SendPropertyChanged("UserGroupBase");
+				}
+			}
+		}
+		
+		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.UserGroup")]
+	[global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code="UserGroupBase", Type=typeof(UserGroupBase))]
+	[global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code="User", Type=typeof(User))]
+	[global::System.Data.Linq.Mapping.InheritanceMappingAttribute(Code="UserGroup", Type=typeof(UserGroup))]
+	public partial class UserGroupBase : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Type;
+		
+		private EntitySet<ClientError> _ClientErrors;
+		
+		private EntitySet<UserGroupUserGroup> _UserGroupUserGroups;
+		
+		private EntitySet<UserGroupUserGroup> _UserGroupUserGroups1;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1223,125 +1454,154 @@
     partial void OnTypeChanged();
     #endregion
-
-    public UserGroupBase() {
-      this._ClientErrors = new EntitySet<ClientError>(new Action<ClientError>(this.attach_ClientErrors), new Action<ClientError>(this.detach_ClientErrors));
-      this._UserGroupUserGroups = new EntitySet<UserGroupUserGroup>(new Action<UserGroupUserGroup>(this.attach_UserGroupUserGroups), new Action<UserGroupUserGroup>(this.detach_UserGroupUserGroups));
-      this._UserGroupUserGroups1 = new EntitySet<UserGroupUserGroup>(new Action<UserGroupUserGroup>(this.attach_UserGroupUserGroups1), new Action<UserGroupUserGroup>(this.detach_UserGroupUserGroups1));
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = 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 = "_Type", DbType = "NVarChar(10) 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 = "UserGroupBase_ClientError", Storage = "_ClientErrors", ThisKey = "Id", OtherKey = "UserId")]
-    public EntitySet<ClientError> ClientErrors {
-      get {
-        return this._ClientErrors;
-      }
-      set {
-        this._ClientErrors.Assign(value);
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "UserGroupBase_UserGroupUserGroup", Storage = "_UserGroupUserGroups", ThisKey = "Id", OtherKey = "UserGroupId")]
-    public EntitySet<UserGroupUserGroup> UserGroupUserGroupsChilds {
-      get {
-        return this._UserGroupUserGroups;
-      }
-      set {
-        this._UserGroupUserGroups.Assign(value);
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "UserGroupBase_UserGroupUserGroup1", Storage = "_UserGroupUserGroups1", ThisKey = "Id", OtherKey = "UserGroupUserGroupId")]
-    public EntitySet<UserGroupUserGroup> UserGroupUserGroupsParents {
-      get {
-        return this._UserGroupUserGroups1;
-      }
-      set {
-        this._UserGroupUserGroups1.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_ClientErrors(ClientError entity) {
-      this.SendPropertyChanging();
-      entity.UserGroupBase = this;
-    }
-
-    private void detach_ClientErrors(ClientError entity) {
-      this.SendPropertyChanging();
-      entity.UserGroupBase = null;
-    }
-
-    private void attach_UserGroupUserGroups(UserGroupUserGroup entity) {
-      this.SendPropertyChanging();
-      entity.UserGroup = this;
-    }
-
-    private void detach_UserGroupUserGroups(UserGroupUserGroup entity) {
-      this.SendPropertyChanging();
-      entity.UserGroup = null;
-    }
-
-    private void attach_UserGroupUserGroups1(UserGroupUserGroup entity) {
-      this.SendPropertyChanging();
-      entity.UserGroupBase = this;
-    }
-
-    private void detach_UserGroupUserGroups1(UserGroupUserGroup entity) {
-      this.SendPropertyChanging();
-      entity.UserGroupBase = null;
-    }
-  }
-
-  public partial class User : UserGroupBase {
-
-    private string _FullName;
-
+		
+		public UserGroupBase()
+		{
+			this._ClientErrors = new EntitySet<ClientError>(new Action<ClientError>(this.attach_ClientErrors), new Action<ClientError>(this.detach_ClientErrors));
+			this._UserGroupUserGroups = new EntitySet<UserGroupUserGroup>(new Action<UserGroupUserGroup>(this.attach_UserGroupUserGroups), new Action<UserGroupUserGroup>(this.detach_UserGroupUserGroups));
+			this._UserGroupUserGroups1 = new EntitySet<UserGroupUserGroup>(new Action<UserGroupUserGroup>(this.attach_UserGroupUserGroups1), new Action<UserGroupUserGroup>(this.detach_UserGroupUserGroups1));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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="_Type", DbType="NVarChar(10) 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="UserGroupBase_ClientError", Storage="_ClientErrors", ThisKey="Id", OtherKey="UserId")]
+		public EntitySet<ClientError> ClientErrors
+		{
+			get
+			{
+				return this._ClientErrors;
+			}
+			set
+			{
+				this._ClientErrors.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="UserGroupBase_UserGroupUserGroup", Storage="_UserGroupUserGroups", ThisKey="Id", OtherKey="UserGroupId")]
+		public EntitySet<UserGroupUserGroup> UserGroupUserGroupsChilds
+		{
+			get
+			{
+				return this._UserGroupUserGroups;
+			}
+			set
+			{
+				this._UserGroupUserGroups.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="UserGroupBase_UserGroupUserGroup1", Storage="_UserGroupUserGroups1", ThisKey="Id", OtherKey="UserGroupUserGroupId")]
+		public EntitySet<UserGroupUserGroup> UserGroupUserGroupsParents
+		{
+			get
+			{
+				return this._UserGroupUserGroups1;
+			}
+			set
+			{
+				this._UserGroupUserGroups1.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_ClientErrors(ClientError entity)
+		{
+			this.SendPropertyChanging();
+			entity.UserGroupBase = this;
+		}
+		
+		private void detach_ClientErrors(ClientError entity)
+		{
+			this.SendPropertyChanging();
+			entity.UserGroupBase = null;
+		}
+		
+		private void attach_UserGroupUserGroups(UserGroupUserGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.UserGroup = this;
+		}
+		
+		private void detach_UserGroupUserGroups(UserGroupUserGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.UserGroup = null;
+		}
+		
+		private void attach_UserGroupUserGroups1(UserGroupUserGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.UserGroupBase = this;
+		}
+		
+		private void detach_UserGroupUserGroups1(UserGroupUserGroup entity)
+		{
+			this.SendPropertyChanging();
+			entity.UserGroupBase = null;
+		}
+	}
+	
+	public partial class User : UserGroupBase
+	{
+		
+		private string _FullName;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1351,30 +1611,36 @@
     partial void OnFullNameChanged();
     #endregion
-
-    public User() {
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_FullName", DbType = "NVarChar(MAX)")]
-    public string FullName {
-      get {
-        return this._FullName;
-      }
-      set {
-        if ((this._FullName != value)) {
-          this.OnFullNameChanging(value);
-          this.SendPropertyChanging();
-          this._FullName = value;
-          this.SendPropertyChanged("FullName");
-          this.OnFullNameChanged();
-        }
-      }
-    }
-  }
-
-  public partial class UserGroup : UserGroupBase {
-
-    private string _Name;
-
+		
+		public User()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FullName", DbType="NVarChar(MAX)")]
+		public string FullName
+		{
+			get
+			{
+				return this._FullName;
+			}
+			set
+			{
+				if ((this._FullName != value))
+				{
+					this.OnFullNameChanging(value);
+					this.SendPropertyChanging();
+					this._FullName = value;
+					this.SendPropertyChanged("FullName");
+					this.OnFullNameChanged();
+				}
+			}
+		}
+	}
+	
+	public partial class UserGroup : UserGroupBase
+	{
+		
+		private string _Name;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1384,37 +1650,41 @@
     partial void OnNameChanged();
     #endregion
-
-    public UserGroup() {
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Name", DbType = "NVarChar(MAX)")]
-    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.TableAttribute(Name = "dbo.ClientType")]
-  public partial class ClientType : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _Id;
-
-    private string _Name;
-
-    private EntityRef<Client> _Client;
-
+		
+		public UserGroup()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(MAX)")]
+		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.TableAttribute(Name="dbo.ClientType")]
+	public partial class ClientType : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Name;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1426,99 +1696,81 @@
     partial void OnNameChanged();
     #endregion
-
-    public ClientType() {
-      this._Client = default(EntityRef<Client>);
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = true)]
-    public System.Guid Id {
-      get {
-        return this._Id;
-      }
-      set {
-        if ((this._Id != value)) {
-          if (this._Client.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          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.AssociationAttribute(Name = "Client_ClientType", Storage = "_Client", ThisKey = "Id", OtherKey = "ClientTypeId", IsForeignKey = true)]
-    public Client Client {
-      get {
-        return this._Client.Entity;
-      }
-      set {
-        Client previousValue = this._Client.Entity;
-        if (((previousValue != value)
-              || (this._Client.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._Client.Entity = null;
-            previousValue.ClientType = null;
-          }
-          this._Client.Entity = value;
-          if ((value != null)) {
-            value.ClientType = this;
-            this._Id = value.ClientTypeId;
-          } else {
-            this._Id = default(System.Guid);
-          }
-          this.SendPropertyChanged("Client");
-        }
-      }
-    }
-
-    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.OperatingSystem")]
-  public partial class OperatingSystem : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _Id;
-
-    private string _Name;
-
-    private EntityRef<Client> _Client;
-
+		
+		public ClientType()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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();
+				}
+			}
+		}
+		
+		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.OperatingSystem")]
+	public partial class OperatingSystem : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Name;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1530,99 +1782,81 @@
     partial void OnNameChanged();
     #endregion
-
-    public OperatingSystem() {
-      this._Client = default(EntityRef<Client>);
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = true)]
-    public System.Guid Id {
-      get {
-        return this._Id;
-      }
-      set {
-        if ((this._Id != value)) {
-          if (this._Client.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          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.AssociationAttribute(Name = "Client_OperatingSystem", Storage = "_Client", ThisKey = "Id", OtherKey = "OperatingSystemId", IsForeignKey = true)]
-    public Client Client {
-      get {
-        return this._Client.Entity;
-      }
-      set {
-        Client previousValue = this._Client.Entity;
-        if (((previousValue != value)
-              || (this._Client.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._Client.Entity = null;
-            previousValue.OperatingSystem = null;
-          }
-          this._Client.Entity = value;
-          if ((value != null)) {
-            value.OperatingSystem = this;
-            this._Id = value.OperatingSystemId;
-          } else {
-            this._Id = default(System.Guid);
-          }
-          this.SendPropertyChanged("Client");
-        }
-      }
-    }
-
-    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.Country")]
-  public partial class Country : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _Id;
-
-    private string _Name;
-
-    private EntityRef<Client> _Client;
-
+		
+		public OperatingSystem()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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();
+				}
+			}
+		}
+		
+		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.Country")]
+	public partial class Country : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Name;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1634,101 +1868,83 @@
     partial void OnNameChanged();
     #endregion
-
-    public Country() {
-      this._Client = default(EntityRef<Client>);
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = true)]
-    public System.Guid Id {
-      get {
-        return this._Id;
-      }
-      set {
-        if ((this._Id != value)) {
-          if (this._Client.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          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.AssociationAttribute(Name = "Client_Country", Storage = "_Client", ThisKey = "Id", OtherKey = "CountryId", IsForeignKey = true)]
-    public Client Client {
-      get {
-        return this._Client.Entity;
-      }
-      set {
-        Client previousValue = this._Client.Entity;
-        if (((previousValue != value)
-              || (this._Client.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._Client.Entity = null;
-            previousValue.Country = null;
-          }
-          this._Client.Entity = value;
-          if ((value != null)) {
-            value.Country = this;
-            this._Id = value.CountryId;
-          } else {
-            this._Id = default(System.Guid);
-          }
-          this.SendPropertyChanged("Client");
-        }
-      }
-    }
-
-    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.ClientConfiguration")]
-  public partial class ClientConfiguration : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _Id;
-
-    private string _Hash;
-
-    private string _Description;
-
-    private EntityRef<Client> _Client;
-
+		
+		public Country()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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();
+				}
+			}
+		}
+		
+		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.ClientConfiguration")]
+	public partial class ClientConfiguration : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Hash;
+		
+		private string _Description;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1742,119 +1958,107 @@
     partial void OnDescriptionChanged();
     #endregion
-
-    public ClientConfiguration() {
-      this._Client = default(EntityRef<Client>);
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = true)]
-    public System.Guid Id {
-      get {
-        return this._Id;
-      }
-      set {
-        if ((this._Id != value)) {
-          if (this._Client.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          this.OnIdChanging(value);
-          this.SendPropertyChanging();
-          this._Id = value;
-          this.SendPropertyChanged("Id");
-          this.OnIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Hash", DbType = "NVarChar(MAX) NOT NULL", CanBeNull = false)]
-    public string Hash {
-      get {
-        return this._Hash;
-      }
-      set {
-        if ((this._Hash != value)) {
-          this.OnHashChanging(value);
-          this.SendPropertyChanging();
-          this._Hash = value;
-          this.SendPropertyChanged("Hash");
-          this.OnHashChanged();
-        }
-      }
-    }
-
-    [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.AssociationAttribute(Name = "Client_ClientConfiguration", Storage = "_Client", ThisKey = "Id", OtherKey = "ClientConfigurationId", IsForeignKey = true)]
-    public Client Client {
-      get {
-        return this._Client.Entity;
-      }
-      set {
-        Client previousValue = this._Client.Entity;
-        if (((previousValue != value)
-              || (this._Client.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._Client.Entity = null;
-            previousValue.ClientConfiguration = null;
-          }
-          this._Client.Entity = value;
-          if ((value != null)) {
-            value.ClientConfiguration = this;
-            this._Id = value.ClientConfigurationId;
-          } else {
-            this._Id = default(System.Guid);
-          }
-          this.SendPropertyChanged("Client");
-        }
-      }
-    }
-
-    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.Plugin")]
-  public partial class Plugin : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _Id;
-
-    private string _Name;
-
-    private string _StrongName;
-
-    private string _Version;
-
-    private EntitySet<ResourcePlugin> _ResourcePlugins;
-
+		
+		public ClientConfiguration()
+		{
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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="_Hash", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false)]
+		public string Hash
+		{
+			get
+			{
+				return this._Hash;
+			}
+			set
+			{
+				if ((this._Hash != value))
+				{
+					this.OnHashChanging(value);
+					this.SendPropertyChanging();
+					this._Hash = value;
+					this.SendPropertyChanged("Hash");
+					this.OnHashChanged();
+				}
+			}
+		}
+		
+		[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();
+				}
+			}
+		}
+		
+		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.Plugin")]
+	public partial class Plugin : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _Id;
+		
+		private string _Name;
+		
+		private string _StrongName;
+		
+		private string _Version;
+		
+		private EntitySet<ResourcePlugin> _ResourcePlugins;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1870,124 +2074,151 @@
     partial void OnVersionChanged();
     #endregion
-
-    public Plugin() {
-      this._ResourcePlugins = new EntitySet<ResourcePlugin>(new Action<ResourcePlugin>(this.attach_ResourcePlugins), new Action<ResourcePlugin>(this.detach_ResourcePlugins));
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Id", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true, IsDbGenerated = 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 = "_StrongName", DbType = "NVarChar(MAX)")]
-    public string StrongName {
-      get {
-        return this._StrongName;
-      }
-      set {
-        if ((this._StrongName != value)) {
-          this.OnStrongNameChanging(value);
-          this.SendPropertyChanging();
-          this._StrongName = value;
-          this.SendPropertyChanged("StrongName");
-          this.OnStrongNameChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Version", DbType = "NVarChar(20) NOT NULL", CanBeNull = false)]
-    public string Version {
-      get {
-        return this._Version;
-      }
-      set {
-        if ((this._Version != value)) {
-          this.OnVersionChanging(value);
-          this.SendPropertyChanging();
-          this._Version = value;
-          this.SendPropertyChanged("Version");
-          this.OnVersionChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Plugin_ResourcePlugin", Storage = "_ResourcePlugins", ThisKey = "Id", OtherKey = "PluginId")]
-    public EntitySet<ResourcePlugin> ResourcePlugins {
-      get {
-        return this._ResourcePlugins;
-      }
-      set {
-        this._ResourcePlugins.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_ResourcePlugins(ResourcePlugin entity) {
-      this.SendPropertyChanging();
-      entity.Plugin = this;
-    }
-
-    private void detach_ResourcePlugins(ResourcePlugin entity) {
-      this.SendPropertyChanging();
-      entity.Plugin = null;
-    }
-  }
-
-  [global::System.Data.Linq.Mapping.TableAttribute(Name = "dbo.ResourcePlugin")]
-  public partial class ResourcePlugin : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _ResourceId;
-
-    private System.Guid _PluginId;
-
-    private EntityRef<Plugin> _Plugin;
-
-    private EntityRef<Resource> _Resource;
-
+		
+		public Plugin()
+		{
+			this._ResourcePlugins = new EntitySet<ResourcePlugin>(new Action<ResourcePlugin>(this.attach_ResourcePlugins), new Action<ResourcePlugin>(this.detach_ResourcePlugins));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=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="_StrongName", DbType="NVarChar(MAX)")]
+		public string StrongName
+		{
+			get
+			{
+				return this._StrongName;
+			}
+			set
+			{
+				if ((this._StrongName != value))
+				{
+					this.OnStrongNameChanging(value);
+					this.SendPropertyChanging();
+					this._StrongName = value;
+					this.SendPropertyChanged("StrongName");
+					this.OnStrongNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Version", DbType="NVarChar(20) NOT NULL", CanBeNull=false)]
+		public string Version
+		{
+			get
+			{
+				return this._Version;
+			}
+			set
+			{
+				if ((this._Version != value))
+				{
+					this.OnVersionChanging(value);
+					this.SendPropertyChanging();
+					this._Version = value;
+					this.SendPropertyChanged("Version");
+					this.OnVersionChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Plugin_ResourcePlugin", Storage="_ResourcePlugins", ThisKey="Id", OtherKey="PluginId")]
+		public EntitySet<ResourcePlugin> ResourcePlugins
+		{
+			get
+			{
+				return this._ResourcePlugins;
+			}
+			set
+			{
+				this._ResourcePlugins.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_ResourcePlugins(ResourcePlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Plugin = this;
+		}
+		
+		private void detach_ResourcePlugins(ResourcePlugin entity)
+		{
+			this.SendPropertyChanging();
+			entity.Plugin = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ResourcePlugin")]
+	public partial class ResourcePlugin : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _ResourceId;
+		
+		private System.Guid _PluginId;
+		
+		private EntityRef<Plugin> _Plugin;
+		
+		private EntityRef<Resource> _Resource;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -1999,131 +2230,163 @@
     partial void OnPluginIdChanged();
     #endregion
-
-    public ResourcePlugin() {
-      this._Plugin = default(EntityRef<Plugin>);
-      this._Resource = 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._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 = "_PluginId", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true)]
-    public System.Guid PluginId {
-      get {
-        return this._PluginId;
-      }
-      set {
-        if ((this._PluginId != value)) {
-          if (this._Plugin.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          this.OnPluginIdChanging(value);
-          this.SendPropertyChanging();
-          this._PluginId = value;
-          this.SendPropertyChanged("PluginId");
-          this.OnPluginIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Plugin_ResourcePlugin", Storage = "_Plugin", ThisKey = "PluginId", OtherKey = "Id", IsForeignKey = true)]
-    public Plugin Plugin {
-      get {
-        return this._Plugin.Entity;
-      }
-      set {
-        Plugin previousValue = this._Plugin.Entity;
-        if (((previousValue != value)
-              || (this._Plugin.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._Plugin.Entity = null;
-            previousValue.ResourcePlugins.Remove(this);
-          }
-          this._Plugin.Entity = value;
-          if ((value != null)) {
-            value.ResourcePlugins.Add(this);
-            this._PluginId = value.Id;
-          } else {
-            this._PluginId = default(System.Guid);
-          }
-          this.SendPropertyChanged("Plugin");
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Resource_ResourcePlugin", 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.ResourcePlugins.Remove(this);
-          }
-          this._Resource.Entity = value;
-          if ((value != null)) {
-            value.ResourcePlugins.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));
-      }
-    }
-  }
-
-  [global::System.Data.Linq.Mapping.TableAttribute(Name = "dbo.UserGroupUserGroup")]
-  public partial class UserGroupUserGroup : INotifyPropertyChanging, INotifyPropertyChanged {
-
-    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-
-    private System.Guid _UserGroupId;
-
-    private System.Guid _UserGroupUserGroupId;
-
-    private EntityRef<UserGroupBase> _UserGroup;
-
-    private EntityRef<UserGroupBase> _UserGroupBase;
-
+		
+		public ResourcePlugin()
+		{
+			this._Plugin = default(EntityRef<Plugin>);
+			this._Resource = 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._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="_PluginId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid PluginId
+		{
+			get
+			{
+				return this._PluginId;
+			}
+			set
+			{
+				if ((this._PluginId != value))
+				{
+					if (this._Plugin.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnPluginIdChanging(value);
+					this.SendPropertyChanging();
+					this._PluginId = value;
+					this.SendPropertyChanged("PluginId");
+					this.OnPluginIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Plugin_ResourcePlugin", Storage="_Plugin", ThisKey="PluginId", OtherKey="Id", IsForeignKey=true)]
+		public Plugin Plugin
+		{
+			get
+			{
+				return this._Plugin.Entity;
+			}
+			set
+			{
+				Plugin previousValue = this._Plugin.Entity;
+				if (((previousValue != value) 
+							|| (this._Plugin.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Plugin.Entity = null;
+						previousValue.ResourcePlugins.Remove(this);
+					}
+					this._Plugin.Entity = value;
+					if ((value != null))
+					{
+						value.ResourcePlugins.Add(this);
+						this._PluginId = value.Id;
+					}
+					else
+					{
+						this._PluginId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Plugin");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Resource_ResourcePlugin", 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.ResourcePlugins.Remove(this);
+					}
+					this._Resource.Entity = value;
+					if ((value != null))
+					{
+						value.ResourcePlugins.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));
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.UserGroupUserGroup")]
+	public partial class UserGroupUserGroup : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _UserGroupId;
+		
+		private System.Guid _UserGroupUserGroupId;
+		
+		private EntityRef<UserGroupBase> _UserGroup;
+		
+		private EntityRef<UserGroupBase> _UserGroupBase;
+		
     #region Extensibility Method Definitions
     partial void OnLoaded();
@@ -2135,117 +2398,148 @@
     partial void OnUserGroupUserGroupIdChanged();
     #endregion
-
-    public UserGroupUserGroup() {
-      this._UserGroup = default(EntityRef<UserGroupBase>);
-      this._UserGroupBase = default(EntityRef<UserGroupBase>);
-      OnCreated();
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_UserGroupId", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true)]
-    public System.Guid UserGroupId {
-      get {
-        return this._UserGroupId;
-      }
-      set {
-        if ((this._UserGroupId != value)) {
-          if (this._UserGroup.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          this.OnUserGroupIdChanging(value);
-          this.SendPropertyChanging();
-          this._UserGroupId = value;
-          this.SendPropertyChanged("UserGroupId");
-          this.OnUserGroupIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_UserGroupUserGroupId", DbType = "UniqueIdentifier NOT NULL", IsPrimaryKey = true)]
-    public System.Guid UserGroupUserGroupId {
-      get {
-        return this._UserGroupUserGroupId;
-      }
-      set {
-        if ((this._UserGroupUserGroupId != value)) {
-          if (this._UserGroupBase.HasLoadedOrAssignedValue) {
-            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-          }
-          this.OnUserGroupUserGroupIdChanging(value);
-          this.SendPropertyChanging();
-          this._UserGroupUserGroupId = value;
-          this.SendPropertyChanged("UserGroupUserGroupId");
-          this.OnUserGroupUserGroupIdChanged();
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "UserGroupBase_UserGroupUserGroup", Storage = "_UserGroup", ThisKey = "UserGroupId", OtherKey = "Id", IsForeignKey = true)]
-    public UserGroupBase UserGroup {
-      get {
-        return this._UserGroup.Entity;
-      }
-      set {
-        UserGroupBase previousValue = this._UserGroup.Entity;
-        if (((previousValue != value)
-              || (this._UserGroup.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._UserGroup.Entity = null;
-            previousValue.UserGroupUserGroupsChilds.Remove(this);
-          }
-          this._UserGroup.Entity = value;
-          if ((value != null)) {
-            value.UserGroupUserGroupsChilds.Add(this);
-            this._UserGroupId = value.Id;
-          } else {
-            this._UserGroupId = default(System.Guid);
-          }
-          this.SendPropertyChanged("UserGroup");
-        }
-      }
-    }
-
-    [global::System.Data.Linq.Mapping.AssociationAttribute(Name = "UserGroupBase_UserGroupUserGroup1", Storage = "_UserGroupBase", ThisKey = "UserGroupUserGroupId", OtherKey = "Id", IsForeignKey = true)]
-    public UserGroupBase UserGroupBase {
-      get {
-        return this._UserGroupBase.Entity;
-      }
-      set {
-        UserGroupBase previousValue = this._UserGroupBase.Entity;
-        if (((previousValue != value)
-              || (this._UserGroupBase.HasLoadedOrAssignedValue == false))) {
-          this.SendPropertyChanging();
-          if ((previousValue != null)) {
-            this._UserGroupBase.Entity = null;
-            previousValue.UserGroupUserGroupsParents.Remove(this);
-          }
-          this._UserGroupBase.Entity = value;
-          if ((value != null)) {
-            value.UserGroupUserGroupsParents.Add(this);
-            this._UserGroupUserGroupId = value.Id;
-          } else {
-            this._UserGroupUserGroupId = default(System.Guid);
-          }
-          this.SendPropertyChanged("UserGroupBase");
-        }
-      }
-    }
-
-    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));
-      }
-    }
-  }
+		
+		public UserGroupUserGroup()
+		{
+			this._UserGroup = default(EntityRef<UserGroupBase>);
+			this._UserGroupBase = default(EntityRef<UserGroupBase>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserGroupId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid UserGroupId
+		{
+			get
+			{
+				return this._UserGroupId;
+			}
+			set
+			{
+				if ((this._UserGroupId != value))
+				{
+					if (this._UserGroup.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnUserGroupIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserGroupId = value;
+					this.SendPropertyChanged("UserGroupId");
+					this.OnUserGroupIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserGroupUserGroupId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
+		public System.Guid UserGroupUserGroupId
+		{
+			get
+			{
+				return this._UserGroupUserGroupId;
+			}
+			set
+			{
+				if ((this._UserGroupUserGroupId != value))
+				{
+					if (this._UserGroupBase.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnUserGroupUserGroupIdChanging(value);
+					this.SendPropertyChanging();
+					this._UserGroupUserGroupId = value;
+					this.SendPropertyChanged("UserGroupUserGroupId");
+					this.OnUserGroupUserGroupIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="UserGroupBase_UserGroupUserGroup", Storage="_UserGroup", ThisKey="UserGroupId", OtherKey="Id", IsForeignKey=true)]
+		public UserGroupBase UserGroup
+		{
+			get
+			{
+				return this._UserGroup.Entity;
+			}
+			set
+			{
+				UserGroupBase previousValue = this._UserGroup.Entity;
+				if (((previousValue != value) 
+							|| (this._UserGroup.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._UserGroup.Entity = null;
+						previousValue.UserGroupUserGroupsChilds.Remove(this);
+					}
+					this._UserGroup.Entity = value;
+					if ((value != null))
+					{
+						value.UserGroupUserGroupsChilds.Add(this);
+						this._UserGroupId = value.Id;
+					}
+					else
+					{
+						this._UserGroupId = default(System.Guid);
+					}
+					this.SendPropertyChanged("UserGroup");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="UserGroupBase_UserGroupUserGroup1", Storage="_UserGroupBase", ThisKey="UserGroupUserGroupId", OtherKey="Id", IsForeignKey=true)]
+		public UserGroupBase UserGroupBase
+		{
+			get
+			{
+				return this._UserGroupBase.Entity;
+			}
+			set
+			{
+				UserGroupBase previousValue = this._UserGroupBase.Entity;
+				if (((previousValue != value) 
+							|| (this._UserGroupBase.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._UserGroupBase.Entity = null;
+						previousValue.UserGroupUserGroupsParents.Remove(this);
+					}
+					this._UserGroupBase.Entity = value;
+					if ((value != null))
+					{
+						value.UserGroupUserGroupsParents.Add(this);
+						this._UserGroupUserGroupId = value.Id;
+					}
+					else
+					{
+						this._UserGroupUserGroupId = default(System.Guid);
+					}
+					this.SendPropertyChanged("UserGroupBase");
+				}
+			}
+		}
+		
+		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.Access.DataAccess/3.3/SQL Scripts/Initialize ClientManagement.sql
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/SQL Scripts/Initialize ClientManagement.sql	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access.DataAccess/3.3/SQL Scripts/Initialize ClientManagement.sql	(revision 6840)
@@ -2,299 +2,30 @@
 GO
 
-/****** Object:  Table [dbo].[Resource]    Script Date: 09/23/2011 17:55:12 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[Resource](
-	[Id] [uniqueidentifier] NOT NULL,
-	[Name] [nvarchar](max) NOT NULL,
+/****** Object:  Table [dbo].[ClientConfiguration]    Script Date: 09/27/2011 17:05:22 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[ClientConfiguration](
+	[Id] [uniqueidentifier] NOT NULL,
+	[Hash] [nvarchar](max) NOT NULL,
 	[Description] [nvarchar](max) NULL,
-	[Type] [nvarchar](max) NOT NULL,
-	[ProcessorType] [nvarchar](max) NULL,
-	[NumberOfCores] [int] NULL,
-	[MemorySize] [int] NULL,
-	[OperatingSystem] [uniqueidentifier] NULL,
-	[Country] [uniqueidentifier] NULL,
-	[HeuristicLabVersion] [nvarchar](max) NULL,
-	[ClientType] [uniqueidentifier] NULL,
-	[ClientConfiguration] [uniqueidentifier] NULL,
-	[Timestamp] [datetime] 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
-
-ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_ClientConfiguration] FOREIGN KEY([ClientConfiguration])
-REFERENCES [dbo].[ClientConfiguration] ([Id])
-GO
-
-ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_ClientConfiguration]
-GO
-
-ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_ClientType] FOREIGN KEY([ClientType])
-REFERENCES [dbo].[ClientType] ([Id])
-GO
-
-ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_ClientType]
-GO
-
-ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_Country] FOREIGN KEY([Country])
-REFERENCES [dbo].[Country] ([Id])
-GO
-
-ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_Country]
-GO
-
-ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_OperatingSystem] FOREIGN KEY([OperatingSystem])
-REFERENCES [dbo].[OperatingSystem] ([Id])
-GO
-
-ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_OperatingSystem]
-GO
-
-ALTER TABLE [dbo].[Resource] ADD  CONSTRAINT [DF_Resource_Id]  DEFAULT (newsequentialid()) FOR [Id]
-GO
-
-
-/****** Object:  Table [dbo].[ResourceResourceGroup]    Script Date: 09/23/2011 13:34:10 ******/
-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].[Plugin]    Script Date: 09/23/2011 13:34:39 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[Plugin](
-	[Id] [uniqueidentifier] NOT NULL,
-	[Name] [nvarchar](max) NOT NULL,
-	[StrongName] [nvarchar](max) NULL,
-	[Version] [nvarchar](20) NOT NULL,
- CONSTRAINT [PK_Plugin] 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].[ResourcePlugin]    Script Date: 09/23/2011 13:34:53 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[ResourcePlugin](
-	[ResourceId] [uniqueidentifier] NOT NULL,
-	[PluginId] [uniqueidentifier] NOT NULL,
- CONSTRAINT [PK_ResourcePlugin] PRIMARY KEY CLUSTERED 
-(
-	[ResourceId] ASC,
-	[PluginId] 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].[ResourcePlugin]  WITH CHECK ADD  CONSTRAINT [FK_ResourcePlugin_Plugin] FOREIGN KEY([PluginId])
-REFERENCES [dbo].[Plugin] ([Id])
-GO
-
-ALTER TABLE [dbo].[ResourcePlugin] CHECK CONSTRAINT [FK_ResourcePlugin_Plugin]
-GO
-
-ALTER TABLE [dbo].[ResourcePlugin]  WITH CHECK ADD  CONSTRAINT [FK_ResourcePlugin_Resource] FOREIGN KEY([ResourceId])
-REFERENCES [dbo].[Resource] ([Id])
-GO
-
-ALTER TABLE [dbo].[ResourcePlugin] CHECK CONSTRAINT [FK_ResourcePlugin_Resource]
-GO
-
-
-/****** Object:  Table [dbo].[UserGroup]    Script Date: 09/23/2011 13:35:16 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[UserGroup](
-	[Id] [uniqueidentifier] NOT NULL,
-	[FullName] [nvarchar](max) NULL,
-	[Name] [nvarchar](max) NULL,
-	[Type] [nvarchar](10) NOT NULL,
- CONSTRAINT [PK_UserGroup] 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].[UserGroupUserGroup]    Script Date: 09/23/2011 14:24:45 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[UserGroupUserGroup](
-	[UserGroupId] [uniqueidentifier] NOT NULL,
-	[UserGroupUserGroupId] [uniqueidentifier] NOT NULL,
- CONSTRAINT [PK_UserGroupUserGroup] PRIMARY KEY CLUSTERED 
-(
-	[UserGroupId] ASC,
-	[UserGroupUserGroupId] 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].[UserGroupUserGroup]  WITH CHECK ADD  CONSTRAINT [FK_UserGroupUserGroup_UserGroup] FOREIGN KEY([UserGroupId])
-REFERENCES [dbo].[UserGroup] ([Id])
-GO
-
-ALTER TABLE [dbo].[UserGroupUserGroup] CHECK CONSTRAINT [FK_UserGroupUserGroup_UserGroup]
-GO
-
-ALTER TABLE [dbo].[UserGroupUserGroup]  WITH CHECK ADD  CONSTRAINT [FK_UserGroupUserGroup_UserGroup1] FOREIGN KEY([UserGroupUserGroupId])
-REFERENCES [dbo].[UserGroup] ([Id])
-GO
-
-ALTER TABLE [dbo].[UserGroupUserGroup] CHECK CONSTRAINT [FK_UserGroupUserGroup_UserGroup1]
-GO
-
-
-
-
-/****** Object:  Table [dbo].[OperatingSystem]    Script Date: 09/23/2011 13:36:01 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[OperatingSystem](
-	[Id] [uniqueidentifier] NOT NULL,
-	[Name] [nvarchar](max) NOT NULL,
- CONSTRAINT [PK_OperatingSystem] 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].[Country]    Script Date: 09/23/2011 13:36:11 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[Country](
-	[Id] [uniqueidentifier] NOT NULL,
-	[Name] [nvarchar](max) NOT NULL,
- CONSTRAINT [PK_Country] 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].[ClientType]    Script Date: 09/23/2011 13:36:24 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[ClientType](
-	[Id] [uniqueidentifier] NOT NULL,
-	[Name] [nvarchar](max) NOT NULL,
- CONSTRAINT [PK_ClientType] 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].[ClientLog]    Script Date: 09/23/2011 13:36:35 ******/
-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,
- 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
-
-USE [HeuristicLab.ClientManagement]
-GO
-
-/****** Object:  Table [dbo].[ClientError]    Script Date: 09/23/2011 13:36:46 ******/
+ CONSTRAINT [PK_ClientConfiguration] 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
+
+ALTER TABLE [dbo].[ClientConfiguration] ADD  CONSTRAINT [DF_ClientConfiguration_Id]  DEFAULT (newsequentialid()) FOR [Id]
+GO
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[ClientError]    Script Date: 09/27/2011 17:05:38 ******/
 SET ANSI_NULLS ON
 GO
@@ -333,20 +64,339 @@
 GO
 
-/****** Object:  Table [dbo].[ClientConfiguration]    Script Date: 09/23/2011 13:36:55 ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [dbo].[ClientConfiguration](
-	[Id] [uniqueidentifier] NOT NULL,
-	[Hash] [nvarchar](max) NOT NULL,
+ALTER TABLE [dbo].[ClientError] ADD  CONSTRAINT [DF_ClientError_Id]  DEFAULT (newsequentialid()) FOR [Id]
+GO
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[ClientLog]    Script Date: 09/27/2011 17:05:50 ******/
+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,
+ 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
+
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[ClientType]    Script Date: 09/27/2011 17:06:09 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[ClientType](
+	[Id] [uniqueidentifier] NOT NULL,
+	[Name] [nvarchar](max) NOT NULL,
+ CONSTRAINT [PK_ClientType] 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
+
+ALTER TABLE [dbo].[ClientType] ADD  CONSTRAINT [DF_ClientType_Id]  DEFAULT (newsequentialid()) FOR [Id]
+GO
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[Country]    Script Date: 09/27/2011 17:06:21 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[Country](
+	[Id] [uniqueidentifier] NOT NULL,
+	[Name] [nvarchar](max) NOT NULL,
+ CONSTRAINT [PK_Country] 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
+
+ALTER TABLE [dbo].[Country] ADD  CONSTRAINT [DF_Country_Id]  DEFAULT (newsequentialid()) FOR [Id]
+GO
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[OperatingSystem]    Script Date: 09/27/2011 17:06:31 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[OperatingSystem](
+	[Id] [uniqueidentifier] NOT NULL,
+	[Name] [nvarchar](max) NOT NULL,
+ CONSTRAINT [PK_OperatingSystem] 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
+
+ALTER TABLE [dbo].[OperatingSystem] ADD  CONSTRAINT [DF_OperatingSystem_Id]  DEFAULT (newsequentialid()) FOR [Id]
+GO
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[Plugin]    Script Date: 09/27/2011 17:06:39 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[Plugin](
+	[Id] [uniqueidentifier] NOT NULL,
+	[Name] [nvarchar](max) NOT NULL,
+	[StrongName] [nvarchar](max) NULL,
+	[Version] [nvarchar](20) NOT NULL,
+ CONSTRAINT [PK_Plugin] 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
+
+ALTER TABLE [dbo].[Plugin] ADD  CONSTRAINT [DF_Plugin_Id]  DEFAULT (newsequentialid()) FOR [Id]
+GO
+
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[ResourcePlugin]    Script Date: 09/27/2011 17:07:01 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[ResourcePlugin](
+	[ResourceId] [uniqueidentifier] NOT NULL,
+	[PluginId] [uniqueidentifier] NOT NULL,
+ CONSTRAINT [PK_ResourcePlugin] PRIMARY KEY CLUSTERED 
+(
+	[ResourceId] ASC,
+	[PluginId] 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].[ResourcePlugin]  WITH CHECK ADD  CONSTRAINT [FK_ResourcePlugin_Plugin] FOREIGN KEY([PluginId])
+REFERENCES [dbo].[Plugin] ([Id])
+GO
+
+ALTER TABLE [dbo].[ResourcePlugin] CHECK CONSTRAINT [FK_ResourcePlugin_Plugin]
+GO
+
+ALTER TABLE [dbo].[ResourcePlugin]  WITH CHECK ADD  CONSTRAINT [FK_ResourcePlugin_Resource] FOREIGN KEY([ResourceId])
+REFERENCES [dbo].[Resource] ([Id])
+GO
+
+ALTER TABLE [dbo].[ResourcePlugin] CHECK CONSTRAINT [FK_ResourcePlugin_Resource]
+GO
+
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[ResourceResourceGroup]    Script Date: 09/27/2011 17:07: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
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[Resource]    Script Date: 09/27/2011 17:07:15 ******/
+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,
- CONSTRAINT [PK_ClientConfiguration] 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
+	[Type] [nvarchar](max) NOT NULL,
+	[ProcessorType] [nvarchar](max) NULL,
+	[NumberOfCores] [int] NULL,
+	[MemorySize] [int] NULL,
+	[OperatingSystemId] [uniqueidentifier] NULL,
+	[CountryId] [uniqueidentifier] NULL,
+	[HeuristicLabVersion] [nvarchar](max) NULL,
+	[ClientTypeId] [uniqueidentifier] NULL,
+	[ClientConfigurationId] [uniqueidentifier] NULL,
+	[Timestamp] [datetime] 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
+
+ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_ClientConfiguration] FOREIGN KEY([ClientConfigurationId])
+REFERENCES [dbo].[ClientConfiguration] ([Id])
+GO
+
+ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_ClientConfiguration]
+GO
+
+ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_ClientType] FOREIGN KEY([ClientTypeId])
+REFERENCES [dbo].[ClientType] ([Id])
+GO
+
+ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_ClientType]
+GO
+
+ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_Country] FOREIGN KEY([CountryId])
+REFERENCES [dbo].[Country] ([Id])
+GO
+
+ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_Country]
+GO
+
+ALTER TABLE [dbo].[Resource]  WITH CHECK ADD  CONSTRAINT [FK_Resource_OperatingSystem] FOREIGN KEY([OperatingSystemId])
+REFERENCES [dbo].[OperatingSystem] ([Id])
+GO
+
+ALTER TABLE [dbo].[Resource] CHECK CONSTRAINT [FK_Resource_OperatingSystem]
+GO
+
+ALTER TABLE [dbo].[Resource] ADD  CONSTRAINT [DF_Resource_Id]  DEFAULT (newsequentialid()) FOR [Id]
+GO
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[UserGroup]    Script Date: 09/27/2011 17:07:23 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[UserGroup](
+	[Id] [uniqueidentifier] NOT NULL,
+	[FullName] [nvarchar](max) NULL,
+	[Name] [nvarchar](max) NULL,
+	[Type] [nvarchar](10) NOT NULL,
+ CONSTRAINT [PK_UserGroup] 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
+
+USE [HeuristicLab.ClientManagement]
+GO
+
+/****** Object:  Table [dbo].[UserGroupUserGroup]    Script Date: 09/27/2011 17:07:30 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[UserGroupUserGroup](
+	[UserGroupId] [uniqueidentifier] NOT NULL,
+	[UserGroupUserGroupId] [uniqueidentifier] NOT NULL,
+ CONSTRAINT [PK_UserGroupUserGroup] PRIMARY KEY CLUSTERED 
+(
+	[UserGroupId] ASC,
+	[UserGroupUserGroupId] 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].[UserGroupUserGroup]  WITH CHECK ADD  CONSTRAINT [FK_UserGroupUserGroup_UserGroup] FOREIGN KEY([UserGroupId])
+REFERENCES [dbo].[UserGroup] ([Id])
+GO
+
+ALTER TABLE [dbo].[UserGroupUserGroup] CHECK CONSTRAINT [FK_UserGroupUserGroup_UserGroup]
+GO
+
+ALTER TABLE [dbo].[UserGroupUserGroup]  WITH CHECK ADD  CONSTRAINT [FK_UserGroupUserGroup_UserGroup1] FOREIGN KEY([UserGroupUserGroupId])
+REFERENCES [dbo].[UserGroup] ([Id])
+GO
+
+ALTER TABLE [dbo].[UserGroupUserGroup] CHECK CONSTRAINT [FK_UserGroupUserGroup_UserGroup1]
+GO
+
+
+
+
+
+
+
+
+
+
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access.sln
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access.sln	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access.sln	(revision 6840)
@@ -17,4 +17,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.GeoIP", "HeuristicLab.GeoIP\1.12\HeuristicLab.GeoIP.csproj", "{BE9B0229-9150-49A4-AEA6-BB58E055992F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.Access-3.3.Tests", "HeuristicLab.Services.Access-3.3.Tests\HeuristicLab.Services.Access-3.3.Tests.csproj", "{70C5A73A-148C-45A2-938F-F8F6DAA80A02}"
 EndProject
 Global
@@ -71,4 +73,14 @@
 		{BE9B0229-9150-49A4-AEA6-BB58E055992F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{BE9B0229-9150-49A4-AEA6-BB58E055992F}.Release|x86.ActiveCfg = Release|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Release|Any CPU.Build.0 = Release|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{70C5A73A-148C-45A2-938F-F8F6DAA80A02}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 6840)
@@ -20,10 +20,306 @@
 #endregion
 
+using System;
+using System.Collections.Generic;
+using System.Linq;
 using System.ServiceModel;
+using DA = HeuristicLab.Services.Access.DataAccess;
+using DT = HeuristicLab.Services.Access.DataTransfer;
 
 namespace HeuristicLab.Services.Access {
   [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
-  public class AccessService {
-
+  public class AccessService : IAccessService {
+
+    #region Client Members
+    public bool ClientExists(Guid id) {
+      if (id != Guid.Empty) {
+        using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+          return (context.Resources.Where(x => x.Id == id).Count() != 0);
+        }
+      }
+      return false;
+    }
+
+    public DT.Client GetClient(Guid id) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from c in context.GetTable<DA.Resource>().OfType<DA.Client>()
+                    where c.Id == id
+                    select c;
+
+        return Convert.ToDto(query.FirstOrDefault());
+      }
+    }
+
+    public IEnumerable<DT.Client> GetClients(IEnumerable<Guid> ids) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from c in context.GetTable<DA.Resource>().OfType<DA.Client>()
+                    where ids.Contains(c.Id)
+                    select Convert.ToDto(c);
+        return query.ToList();
+      }
+    }
+
+    public IEnumerable<DT.Client> GetAllClients() {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from c in context.GetTable<DA.Resource>().OfType<DA.Client>()
+                    select Convert.ToDto(c);
+        return query.ToList();
+      }
+    }
+
+    public Guid AddClient(DT.Client client) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        DA.Client entity = Convert.ToEntity(client);
+        context.Resources.InsertOnSubmit(entity);
+        context.SubmitChanges();
+        return entity.Id;
+      }
+    }
+
+    public void UpdateClient(DT.Client client) {
+      AddClient(client);
+    }
+
+    public void DeleteClient(DT.Client client) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        context.Resources.DeleteOnSubmit(Convert.ToEntity(client));
+        context.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region ClientGroup
+    public IEnumerable<DT.ClientGroup> GetAllClientGroups() {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from c in context.GetTable<DA.Resource>().OfType<DA.ClientGroup>()
+                    select Convert.ToDto(c);
+        return query.ToList();
+      }
+    }
+
+    public IEnumerable<DT.ClientGroup> GetClientGroups(IEnumerable<Guid> ids) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from c in context.GetTable<DA.Resource>().OfType<DA.ClientGroup>()
+                    where ids.Contains(c.Id)
+                    select Convert.ToDto(c);
+        return query.ToList();
+      }
+    }
+
+    public Guid AddClientGroup(DT.ClientGroup group) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var entity = Convert.ToEntity(group);
+        context.Resources.InsertOnSubmit(entity);
+        context.SubmitChanges();
+        return entity.Id;
+      }
+    }
+
+    public void UpdateClientGroup(DT.ClientGroup group) {
+      AddClientGroup(group);
+    }
+
+    public void DeleteClientGroup(DT.ClientGroup group) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        context.Resources.DeleteOnSubmit(Convert.ToEntity(group));
+        context.SubmitChanges();
+      }
+    }
+
+    public void AddResourceToGroup(DT.Resource resource, DT.UserGroup group) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        DA.ResourceResourceGroup rrg = new DA.ResourceResourceGroup() {
+          ResourceId = resource.Id,
+          ResourceGroupId = group.Id
+        };
+
+        context.ResourceResourceGroups.InsertOnSubmit(rrg);
+        context.SubmitChanges();
+      }
+    }
+
+    public void RemoveResourceFromGroup(DT.Resource resource, DT.UserGroup group) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = context.ResourceResourceGroups.Where(x => x.ResourceId == resource.Id && x.ResourceGroupId == group.Id);
+        if (query.Count() > 0) {
+          context.ResourceResourceGroups.DeleteOnSubmit(query.First());
+          context.SubmitChanges();
+        }
+      }
+    }
+    #endregion
+
+    #region ClientGroupMapping
+    public IEnumerable<DT.ClientGroupMapping> GetClientGroupMapping() {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from c in context.GetTable<DA.ResourceResourceGroup>()
+                    select Convert.ToDto(c);
+        return query.ToList();
+      }
+    }
+    #endregion
+
+    #region Resource
+    public IEnumerable<DT.Resource> GetResources() {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from r in context.Resources
+                    select Convert.ToDto(r);
+        return query.ToList();
+      }
+    }
+    #endregion
+
+    #region ClientLog
+    public DT.ClientLog GetLastClientLog(Guid clientId) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from r in context.ClientLogs
+                    where r.ResourceId == clientId
+                    select r;
+        return Convert.ToDto(query.OrderBy(x => x.Timestamp).LastOrDefault());
+      }
+    }
+
+    public IEnumerable<DT.ClientLog> GetClientLogs(Guid clientId) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from r in context.ClientLogs
+                    where r.ResourceId == clientId
+                    select Convert.ToDto(r);
+        return query.ToList();
+      }
+    }
+
+    public IEnumerable<DT.ClientLog> GetClientLogsSince(DateTime startDate) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        var query = from r in context.ClientLogs
+                    where r.Timestamp >= startDate
+                    select Convert.ToDto(r);
+        return query.ToList();
+      }
+    }
+
+    public void AddClientLog(DT.ClientLog log) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        context.ClientLogs.InsertOnSubmit(Convert.ToEntity(log));
+        context.SubmitChanges();
+      }
+    }
+
+    public void DeleteClientLog(DT.ClientLog log) {
+      using (DA.ClientManagementDataContext context = new DA.ClientManagementDataContext()) {
+        context.ClientLogs.DeleteOnSubmit(Convert.ToEntity(log));
+        context.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region User
+    public DT.User Login() {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.User> GetAllUsers() {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.User> GetUsers(IEnumerable<DT.User> ids) {
+      throw new System.NotImplementedException();
+    }
+
+    public DT.User AddUser(DT.User user) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteUser(DT.User user) {
+      throw new System.NotImplementedException();
+    }
+
+    public void UpdateUser(DT.User user) {
+      throw new System.NotImplementedException();
+    }
+
+    public void AddUserToRole(DT.Role role, DT.User user) {
+      throw new System.NotImplementedException();
+    }
+
+    public void RemoveUserFromRole(DT.Role role, DT.User user) {
+      throw new System.NotImplementedException();
+    }
+
+    public void ResetPassword(DT.User user, string password) {
+      throw new System.NotImplementedException();
+    }
+    #endregion
+
+    public IEnumerable<DT.UserGroup> GetAllUserGroups() {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.UserGroup> GetUserGroups(IEnumerable<Guid> ids) {
+      throw new System.NotImplementedException();
+    }
+
+    public DT.UserGroup AddUserGroup(DT.UserGroup group) {
+      throw new System.NotImplementedException();
+    }
+
+    public void UpdateUserGroup(DT.UserGroup group) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteUserGroup(DT.UserGroup group) {
+      throw new System.NotImplementedException();
+    }
+
+    public void AddUserGroupBaseToGroup(DT.UserGroupBase resource, DT.UserGroup group) {
+      throw new System.NotImplementedException();
+    }
+
+    public void RemoveUserGroupBaseFromGroup(DT.UserGroupBase resource, DT.UserGroup group) {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.UserGroupBase> GetUsersAndGroups() {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.UserGroupMapping> GetUserGroupMapping() {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.Role> GetRoles() {
+      throw new System.NotImplementedException();
+    }
+
+    public DT.Role AddRole(DT.Role role) {
+      throw new System.NotImplementedException();
+    }
+
+    public void UpdateRole(DT.Role role) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteRole(DT.Role role) {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.Role> GetUserRoles(DT.User user) {
+      throw new System.NotImplementedException();
+    }
+
+    public void ReportError(DT.ClientError error) {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.ClientError> GetClientErrors() {
+      throw new System.NotImplementedException();
+    }
+
+    public IEnumerable<DT.ClientError> GetLastClientErrors(DateTime startDate) {
+      throw new System.NotImplementedException();
+    }
+
+    public void DeleteError(DT.ClientError error) {
+      throw new System.NotImplementedException();
+    }
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/Convert.cs	(revision 6840)
@@ -26,5 +26,5 @@
 
 
-namespace HeuristicLab.Services.ClientManagement {
+namespace HeuristicLab.Services.Access {
   public static class Convert {
 
@@ -95,5 +95,4 @@
         Id = source.Id,
         Name = source.Name,
-
       };
     }
@@ -301,4 +300,14 @@
     }
     #endregion
+
+    #region ClientGroupMapping
+    public static DT.ClientGroupMapping ToDto(DA.ResourceResourceGroup c) {
+      return new DT.ClientGroupMapping() {
+        Child = c.ResourceId, Parent = c.ResourceGroupId
+      };
+    }
+    #endregion
+
+
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientGroupMapping.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientGroupMapping.cs	(revision 6840)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/ClientGroupMapping.cs	(revision 6840)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class ClientGroupMapping {
+    [DataMember]
+    public Guid Child { get; set; }
+    [DataMember]
+    public Guid Parent { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Resource.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Resource.cs	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/Resource.cs	(revision 6840)
@@ -25,4 +25,6 @@
 namespace HeuristicLab.Services.Access.DataTransfer {
   [DataContract]
+  [KnownType(typeof(Client))]
+  [KnownType(typeof(ClientGroup))]
   public class Resource : AccessItem {
     [DataMember]
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupBase.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupBase.cs	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupBase.cs	(revision 6840)
@@ -25,4 +25,6 @@
 namespace HeuristicLab.Services.Access.DataTransfer {
   [DataContract]
+  [KnownType(typeof(User))]
+  [KnownType(typeof(UserGroup))]
   public class UserGroupBase : AccessItem {
     [DataMember]
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupMapping.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupMapping.cs	(revision 6840)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/DataTransfer/UserGroupMapping.cs	(revision 6840)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Services.Access.DataTransfer {
+  [DataContract]
+  public class UserGroupMapping {
+    [DataMember]
+    public Guid Child { get; set; }
+    [DataMember]
+    public Guid Parent { get; set; }
+  }
+}
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/HeuristicLab.Services.Access-3.3.csproj
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/HeuristicLab.Services.Access-3.3.csproj	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/HeuristicLab.Services.Access-3.3.csproj	(revision 6840)
@@ -56,4 +56,5 @@
     <Compile Include="DataTransfer\ClientConfiguration.cs" />
     <Compile Include="DataTransfer\ClientError.cs" />
+    <Compile Include="DataTransfer\ClientGroupMapping.cs" />
     <Compile Include="DataTransfer\ClientLog.cs" />
     <Compile Include="DataTransfer\AccessItem.cs" />
@@ -68,4 +69,5 @@
     <Compile Include="DataTransfer\UserGroup.cs" />
     <Compile Include="DataTransfer\UserGroupBase.cs" />
+    <Compile Include="DataTransfer\UserGroupMapping.cs" />
     <Compile Include="IAccessService.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/IAccessService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/IAccessService.cs	(revision 6839)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/IAccessService.cs	(revision 6840)
@@ -38,5 +38,8 @@
 
     [OperationContract]
-    IEnumerable<Client> GetClients();
+    IEnumerable<Client> GetClients(IEnumerable<Guid> ids);
+
+    [OperationContract]
+    IEnumerable<Client> GetAllClients();
 
     [OperationContract]
@@ -48,4 +51,37 @@
     [OperationContract]
     void DeleteClient(Client client);
+    #endregion
+
+    #region Client Group
+    [OperationContract]
+    IEnumerable<ClientGroup> GetAllClientGroups();
+
+    [OperationContract]
+    IEnumerable<ClientGroup> GetClientGroups(IEnumerable<Guid> ids);
+
+    [OperationContract]
+    Guid AddClientGroup(ClientGroup group);
+
+    [OperationContract]
+    void UpdateClientGroup(ClientGroup group);
+
+    [OperationContract]
+    void DeleteClientGroup(ClientGroup group);
+
+    [OperationContract]
+    void AddResourceToGroup(Resource resource, UserGroup group);
+
+    [OperationContract]
+    void RemoveResourceFromGroup(Resource resource, UserGroup group);
+    #endregion
+
+    #region ClientGroupMapping
+    [OperationContract]
+    IEnumerable<ClientGroupMapping> GetClientGroupMapping();
+    #endregion
+
+    #region Resource
+    [OperationContract]
+    IEnumerable<Resource> GetResources();
     #endregion
 
@@ -61,33 +97,19 @@
 
     [OperationContract]
-    void AddClientLogEntry(ClientLog log);
+    void AddClientLog(ClientLog log);
 
     [OperationContract]
-    void DeleteClientLogEntry(ClientLog log);
-    #endregion
-
-    #region Client Group
-    [OperationContract]
-    IEnumerable<ClientGroup> GetClientGroups();
-
-    [OperationContract]
-    IEnumerable<ClientGroup> GetParentGroups(Guid id);
-
-    [OperationContract]
-    Guid AddClientGroup(ClientGroup group);
-
-    [OperationContract]
-    void UpdateClientGroup(ClientGroup group);
-
-    [OperationContract]
-    void DeleteClientGroup(ClientGroup group);
+    void DeleteClientLog(ClientLog log);
     #endregion
 
     #region User
     [OperationContract]
-    void Login();
+    User Login();
 
     [OperationContract]
-    IEnumerable<User> GetUsers();
+    IEnumerable<User> GetAllUsers();
+
+    [OperationContract]
+    IEnumerable<User> GetUsers(IEnumerable<User> ids);
 
     [OperationContract]
@@ -110,4 +132,37 @@
     #endregion
 
+    #region UserGroup
+    [OperationContract]
+    IEnumerable<UserGroup> GetAllUserGroups();
+
+    [OperationContract]
+    IEnumerable<UserGroup> GetUserGroups(IEnumerable<Guid> ids);
+
+    [OperationContract]
+    UserGroup AddUserGroup(UserGroup group);
+
+    [OperationContract]
+    void UpdateUserGroup(UserGroup group);
+
+    [OperationContract]
+    void DeleteUserGroup(UserGroup group);
+
+    [OperationContract]
+    void AddUserGroupBaseToGroup(UserGroupBase resource, UserGroup group);
+
+    [OperationContract]
+    void RemoveUserGroupBaseFromGroup(UserGroupBase resource, UserGroup group);
+    #endregion
+
+    #region UserGroupBase
+    [OperationContract]
+    IEnumerable<UserGroupBase> GetUsersAndGroups();
+    #endregion
+
+    #region UserGroupMapping
+    [OperationContract]
+    IEnumerable<UserGroupMapping> GetUserGroupMapping();
+    #endregion
+
     #region Role
     [OperationContract]
@@ -127,16 +182,16 @@
     #endregion
 
-    #region UserGroup
+    #region ClientError
     [OperationContract]
-    IEnumerable<UserGroup> GetUserGroups();
+    void ReportError(ClientError error);
 
     [OperationContract]
-    UserGroup AddUserGroup(UserGroup group);
+    IEnumerable<ClientError> GetClientErrors();
 
     [OperationContract]
-    void UpdateUserGroup(UserGroup group);
+    IEnumerable<ClientError> GetLastClientErrors(DateTime startDate);
 
     [OperationContract]
-    void DeleteUserGroup(UserGroup group);
+    void DeleteError(ClientError error);
     #endregion
   }
