diff --git a/objectstore/BackendTest.cpp b/objectstore/BackendTest.cpp
index 3698a35d09c54ae48aff544d09dbfc7a43d3a136..1b9fd8b833fccca2a77639b24e54506ed61bc552 100644
--- a/objectstore/BackendTest.cpp
+++ b/objectstore/BackendTest.cpp
@@ -24,7 +24,7 @@
 namespace unitTests {
 
 TEST_P(BackendAbstractTest, BasicReadWrite) {
-  std::cout << "Type=" << m_os->typeName() << std::endl;
+  //std::cout << "Type=" << m_os->typeName() << std::endl;
   const std::string testValue = "1234";
   const std::string testSecondValue = "1234";
   const std::string testObjectName = "testObject";
@@ -52,7 +52,7 @@ TEST_P(BackendAbstractTest, BasicReadWrite) {
 }
 
 TEST_P(BackendAbstractTest, LockingInterface) {
-  std::cout << "Type=" << m_os->typeName() << std::endl;
+  //std::cout << "Type=" << m_os->typeName() << std::endl;
   const std::string testObjectName = "testObject";
   m_os->create(testObjectName, "");
   {
@@ -70,10 +70,10 @@ TEST_P(BackendAbstractTest, LockingInterface) {
 }
 
 TEST_P(BackendAbstractTest, ParametersInterface) {
-  std::cout << "Type=" << m_os->typeName() << std::endl;
+  //std::cout << "Type=" << m_os->typeName() << std::endl;
   std::unique_ptr<cta::objectstore::Backend::Parameters> params(
     m_os->getParams());
-  std::cout << params->toStr() << std::endl;
+  //std::cout << params->toStr() << std::endl;
 }
 
 cta::objectstore::BackendVFS osVFS;
diff --git a/objectstore/RootEntryTest.cpp b/objectstore/RootEntryTest.cpp
index 380b2c2e275b10d31461e07cebdeb35289c1cb88..03b9be160ce874a641110bc61509cb0a2a0c0d25 100644
--- a/objectstore/RootEntryTest.cpp
+++ b/objectstore/RootEntryTest.cpp
@@ -38,7 +38,7 @@ TEST(RootEntry, BasicAccess) {
     ASSERT_THROW(re.fetch(), cta::exception::Exception);
     cta::objectstore::ScopedSharedLock lock(re);
     ASSERT_NO_THROW(re.fetch());
-    std::cout << re.dump();
+    re.dump();
   }
   {
     // Try to allocate the agent register
@@ -63,4 +63,126 @@ TEST(RootEntry, BasicAccess) {
   ASSERT_EQ(false, re.exists());
 }
 
+TEST(RootEntry, AdminHosts) {
+  cta::objectstore::BackendVFS be;
+  { 
+    // Try to create the root entry
+    cta::objectstore::RootEntry re(be);
+    re.initialize();
+    re.insert();
+  }
+  {
+    // Add 2 admin hosts to the root entry
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedExclusiveLock lock(re);
+    ASSERT_NO_THROW(re.fetch());
+    cta::objectstore::CreationLog cl(99, "dummyUser", 99, "dummyGroup", 
+      "unittesthost", time(NULL), "Creation of unit test agent register");
+    re.addAdminHost("adminHost1", cl);
+    re.addAdminHost("adminHost2", cl);
+    re.commit();
+  }
+  {
+    // Check that the admin hosts made it
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedSharedLock lock(re);
+    re.fetch();
+    ASSERT_TRUE(re.isAdminHost("adminHost1"));
+    ASSERT_TRUE(re.isAdminHost("adminHost2"));
+    ASSERT_FALSE(re.isAdminHost("adminHost3"));
+  }
+  {
+    // Check that we can remove existing and non-existing hosts
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedExclusiveLock lock(re);
+    re.fetch();
+    re.removeAdminHost("adminHost1");
+    re.removeAdminHost("noSuch");
+    re.commit();
+  }
+  {
+    // Check that we got the expected result
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedSharedLock lock(re);
+    re.fetch();
+    ASSERT_FALSE(re.isAdminHost("adminHost1"));
+    ASSERT_TRUE(re.isAdminHost("adminHost2"));
+    ASSERT_FALSE(re.isAdminHost("adminHost3"));
+    ASSERT_EQ(1, re.dumpAdminHosts().size());
+    ASSERT_EQ("adminHost2", re.dumpAdminHosts().front().hostname);
+  }
+  // Delete the root entry
+  cta::objectstore::RootEntry re(be);
+  cta::objectstore::ScopedExclusiveLock lock(re);
+  re.remove();
+  ASSERT_EQ(false, re.exists());
+}
+  
+TEST(RootEntry, AdminUsers) {
+  cta::objectstore::BackendVFS be;
+  { 
+    // Try to create the root entry
+    cta::objectstore::RootEntry re(be);
+    re.initialize();
+    re.insert();
+  }
+  cta::objectstore::UserIdentity user1(123, "user123", 456, "group456");
+  cta::objectstore::UserIdentity user1prime(123, "somethingelse", 789, "group789");
+  cta::objectstore::UserIdentity user2(234, "user234", 345, "group345");
+  cta::objectstore::UserIdentity user2prime(234, "somethingwrong", 567, "group567");
+  cta::objectstore::UserIdentity user3(345, "user234", 345, "group345");
+  {
+    // Add 2 admin users to the root entry
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedExclusiveLock lock(re);
+    ASSERT_NO_THROW(re.fetch());
+    cta::objectstore::CreationLog cl(99, "dummyUser", 99, "dummyGroup", 
+      "unittesthost", time(NULL), "Creation of unit test agent register");
+    re.addAdminUser(user1, cl);
+    re.addAdminUser(user2, cl);
+    re.commit();
+  }
+  {
+    // Check that the admin hosts made it and that uid is the only meaningful
+    // criteria
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedSharedLock lock(re);
+    re.fetch();
+    ASSERT_TRUE(re.isAdminUser(user1));
+    ASSERT_TRUE(re.isAdminUser(user1prime));
+    ASSERT_TRUE(re.isAdminUser(user2));
+    ASSERT_TRUE(re.isAdminUser(user2prime));
+    ASSERT_FALSE(re.isAdminUser(user3));
+
+  }
+  {
+    // Check that we can remove existing and non-existing hosts
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedExclusiveLock lock(re);
+    re.fetch();
+    re.removeAdminUser(user1prime);
+    re.removeAdminUser(user3);
+    re.commit();
+  }
+  {
+    // Check that we got the expected result
+    cta::objectstore::RootEntry re(be);
+    cta::objectstore::ScopedSharedLock lock(re);
+    re.fetch();
+    ASSERT_FALSE(re.isAdminUser(user1));
+    ASSERT_FALSE(re.isAdminUser(user1prime));
+    ASSERT_TRUE(re.isAdminUser(user2));
+    ASSERT_TRUE(re.isAdminUser(user2prime));
+    ASSERT_FALSE(re.isAdminUser(user3));
+    ASSERT_EQ(1, re.dumpAdminUsers().size());
+    ASSERT_EQ(user2.uid, re.dumpAdminUsers().front().user.uid);
+  }
+  
+  // Delete the root entry
+  cta::objectstore::RootEntry re(be);
+  cta::objectstore::ScopedExclusiveLock lock(re);
+  re.remove();
+  ASSERT_EQ(false, re.exists());
+}
+
 }
diff --git a/objectstore/UserIdentity.hpp b/objectstore/UserIdentity.hpp
index 8577db2555f3e5d3358e47fcd9ca1b823479ae42..56b0233122be7e4d84c8682d8469d3b85c57c07f 100644
--- a/objectstore/UserIdentity.hpp
+++ b/objectstore/UserIdentity.hpp
@@ -28,9 +28,8 @@ public:
   UserIdentity (): uid(std::numeric_limits<decltype(uid)>::max()),
           gid(std::numeric_limits<decltype(gid)>::max()) {}
   UserIdentity (uint32_t ui, const std::string & un,
-    uint32_t gi, const std::string & gn,
-    const std::string & hn, uint64_t t,
-    const std::string & c): uid(ui), uname(un), gid(gi), gname(gn) {}
+    uint32_t gi, const std::string & gn): 
+    uid(ui), uname(un), gid(gi), gname(gn) {}
   uint32_t uid;
   std::string uname;
   uint32_t gid;
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index b397b8860d2ccaac6dbcac0da9dd68013aeb3f11..354d719cabcdcf0d44685b6a78dc9351e621d250 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -15,7 +15,7 @@ target_link_libraries(unittests
   ctamiddletierunittests
   ctamiddletiersqlite
   ctamiddletiersqliteunittests
-  ctamiddletierobjectstoreunittests
+  #ctamiddletierobjectstoreunittests
   ctamiddletierobjectstore
   ctanameservertest
   ctaschedulertest