Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/ClientAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/ClientAdapter.cs	(revision 898)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/ClientAdapter.cs	(revision 899)
@@ -36,22 +36,38 @@
     
     #region IClientAdapter Members
-    private ClientInfo Convert(dsHiveServer.ClientRow row) {
-      if(row != null) {
-        ClientInfo client = new ClientInfo();
-       
+    private ClientInfo Convert(dsHiveServer.ClientRow row, 
+      ClientInfo client) {
+      if(row != null && client != null) {      
         /*Parent - resource*/
-        Resource resource =
-          resAdapter.GetResourceById(row.ResourceId);
-        client.ResourceId = resource.ResourceId;
-        client.Name = resource.Name;
+        client.ResourceId = row.ResourceId;
+        resAdapter.FillResource(client);
 
         /*ClientInfo*/
         client.ClientId = row.GUID;
-        client.CpuSpeedPerCore = row.CPUSpeed;
-        client.Memory = row.Memory;
-        client.Login = row.Login;
-        if (row.Status != null)
+       
+        if (!row.IsCPUSpeedNull())
+          client.CpuSpeedPerCore = row.CPUSpeed;
+        else
+          client.CpuSpeedPerCore = 0;
+
+        if (!row.IsMemoryNull())
+          client.Memory = row.Memory;
+        else
+          client.Memory = 0;
+
+        if (!row.IsLoginNull())
+          client.Login = row.Login;
+        else
+          client.Login = DateTime.MinValue;
+
+        if (!row.IsStatusNull())
           client.State = (State)Enum.Parse(typeof(State), row.Status, true);
-        client.NrOfCores = row.NumberOfCores;
+        else
+          client.State = State.idle;
+
+        if (!row.IsNumberOfCoresNull())
+          client.NrOfCores = row.NumberOfCores;
+        else
+          client.NrOfCores = 0;
 
         //todo: config adapter (client.config)
@@ -107,4 +123,6 @@
 
     public ClientInfo GetClientById(Guid clientId) {
+      ClientInfo client = new ClientInfo();
+      
       dsHiveServer.ClientDataTable data =
           adapter.GetDataById(clientId);
@@ -112,5 +130,7 @@
         dsHiveServer.ClientRow row = 
           data[0];
-        return Convert(row);
+        Convert(row, client);
+
+        return client;
       } else {
         return null;
@@ -126,5 +146,7 @@
 
       foreach (dsHiveServer.ClientRow row in data) {
-        allClients.Add(Convert(row));
+        ClientInfo client = new ClientInfo();
+        Convert(row, client);
+        allClients.Add(client);
       }
 
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/PermissionOwnerAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/PermissionOwnerAdapter.cs	(revision 898)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/PermissionOwnerAdapter.cs	(revision 899)
@@ -55,4 +55,12 @@
     }
 
+    internal bool FillPermissionOwner(PermissionOwner permOwner) {
+      if (permOwner != null) {
+          return true;
+      }
+
+      return false;
+    }
+
     public PermissionOwner GetPermissionOwnerById(long resourceId) {
       throw new NotImplementedException();
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/ResourceAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/ResourceAdapter.cs	(revision 898)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/ResourceAdapter.cs	(revision 899)
@@ -33,13 +33,15 @@
       new dsHiveServerTableAdapters.ResourceTableAdapter();
 
-    private Resource Convert(dsHiveServer.ResourceRow row) {
-      if (row != null) {
-        Resource resource = new Resource();
-
+    private Resource Convert(dsHiveServer.ResourceRow row, 
+      Resource resource) {
+      if (row != null && resource != null) {
         resource.ResourceId = row.ResourceId;
-        resource.Name = row.Name;
+        if (!row.IsNameNull())
+          resource.Name = row.Name;
+        else
+          resource.Name = String.Empty;
 
         return resource;
-      } else
+      } else 
         return null;
     }
@@ -49,7 +51,8 @@
       if (resource != null && row != null) {
         row.Name = resource.Name;
-      }
 
-      return row;
+        return row;
+      } else
+        return null;
     }
 
@@ -75,14 +78,28 @@
     }
 
+    internal bool FillResource(Resource resource) {
+      if (resource != null) {
+        dsHiveServer.ResourceDataTable data =
+          adapter.GetDataById(resource.ResourceId);
+        if (data.Count == 1) {
+          dsHiveServer.ResourceRow row =
+            data[0];
+          Convert(row, resource);
+
+          return true;
+        }
+      }
+
+      return false;
+    }
+
     public Resource GetResourceById(long resourceId) {
-      dsHiveServer.ResourceDataTable data =
-          adapter.GetDataById(resourceId);
-      if (data.Count == 1) {
-        dsHiveServer.ResourceRow row =
-          data[0];
-        return Convert(row);
-      } else {
+      Resource resource = new Resource();
+      resource.ResourceId = resourceId;
+
+      if(FillResource(resource)) 
+        return resource;
+      else 
         return null;
-      }
     }
 
@@ -95,5 +112,7 @@
 
       foreach (dsHiveServer.ResourceRow row in data) {
-        allResources.Add(Convert(row));
+        Resource resource = new Resource();
+        Convert(row, resource);
+        allResources.Add(resource);
       }
 
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/UserAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/UserAdapter.cs	(revision 898)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/UserAdapter.cs	(revision 899)
@@ -36,16 +36,16 @@
       new PermissionOwnerAdapter();
 
-    private User Convert(dsHiveServer.HiveUserRow row) {
-      if (row != null) {
-        User user = new User();
-
-        /*Parent - resource*/
-        PermissionOwner permOwner =
-          permOwnerAdapter.GetPermissionOwnerById(row.PermissionOwnerId);
-        user.PermissionOwnerId = permOwner.PermissionOwnerId;
-        user.Name = permOwner.Name;
+    private User Convert(dsHiveServer.HiveUserRow row, 
+      User user) {
+      if (row != null && user != null) {
+        /*Parent - PermissionOwner*/
+        user.PermissionOwnerId = row.PermissionOwnerId;
+        permOwnerAdapter.FillPermissionOwner(user);
 
         /*User*/
-        user.Password = row.Password;
+        if (!row.IsPasswordNull())
+          user.Password = row.Password;
+        else
+          user.Password = String.Empty;
 
         return user;
@@ -59,7 +59,8 @@
         row.PermissionOwnerId = user.PermissionOwnerId;
         row.Password = user.Password;
-      }
 
-      return row;
+        return row;
+      } else
+        return null;     
     }
 
@@ -70,5 +71,9 @@
     }
 
-    public ClientInfo GetUserById(long userId) {
+    public User GetUserById(long userId) {
+      throw new NotImplementedException();
+    }
+
+    public User GetUserByName(String name) {
       throw new NotImplementedException();
     }
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/InternalInterfaces/DataAccess/IUserAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/InternalInterfaces/DataAccess/IUserAdapter.cs	(revision 898)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/InternalInterfaces/DataAccess/IUserAdapter.cs	(revision 899)
@@ -42,5 +42,12 @@
     /// <param name="userId"></param>
     /// <returns></returns>
-    ClientInfo GetUserById(long userId);
+    User GetUserById(long userId);
+
+    /// <summary>
+    /// Get the user with the specified name
+    /// </summary>
+    /// <param name="userId"></param>
+    /// <returns></returns>
+    User GetUserByName(string name);
 
     /// <summary>
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/ServiceLocator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/ServiceLocator.cs	(revision 898)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/ServiceLocator.cs	(revision 899)
@@ -31,4 +31,6 @@
 
   private static IClientAdapter clientAdapter = null;
+
+  private static IUserAdapter userAdapter = null;
   
   /// <summary>
@@ -43,3 +45,15 @@
     return clientAdapter;
   }
+
+  /// <summary>
+  /// Gets the user database adapter
+  /// </summary>
+  /// <returns></returns>
+  internal static IUserAdapter GetUserAdapter() {
+    if (userAdapter == null) {
+      userAdapter = discoveryService.GetInstances<IUserAdapter>()[0];
+    }
+
+    return userAdapter;
+  }
 }
Index: /trunk/sources/HeuristicLab.Hive.Server/MainForm.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server/MainForm.Designer.cs	(revision 898)
+++ /trunk/sources/HeuristicLab.Hive.Server/MainForm.Designer.cs	(revision 899)
@@ -40,7 +40,7 @@
           this.label1.Location = new System.Drawing.Point(18, 18);
           this.label1.Name = "label1";
-          this.label1.Size = new System.Drawing.Size(113, 13);
+          this.label1.Size = new System.Drawing.Size(115, 13);
           this.label1.TabIndex = 0;
-          this.label1.Text = "Hive server running @";
+          this.label1.Text = "Hive Server running @";
           // 
           // lblAddress1
