diff --git a/objectstore/cta-objectstore-collect-orphaned-object.cpp b/objectstore/cta-objectstore-collect-orphaned-object.cpp
index 98a85ffec62b9c846523738b88bc34781912bc0c..334530224454541d1f004c93ad0240a225079c84 100644
--- a/objectstore/cta-objectstore-collect-orphaned-object.cpp
+++ b/objectstore/cta-objectstore-collect-orphaned-object.cpp
@@ -30,6 +30,7 @@
 #include "RetrieveRequest.hpp"
 #include "GenericObject.hpp"
 #include "common/log/StringLogger.hpp"
+#include "common/Configuration.hpp"
 #include "catalogue/CatalogueFactory.hpp"
 #include <iostream>
 #include <stdexcept>
@@ -41,14 +42,24 @@ int main(int argc, char ** argv) {
     std::unique_ptr<cta::catalogue::Catalogue> catalogue;
     cta::log::StringLogger sl("cta-objectstore-collect-orphaned", cta::log::DEBUG);
     cta::log::LogContext lc(sl);
+    std::string objectName;
     if (4 == argc) {
       be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release());
       const cta::rdbms::Login catalogueLogin = cta::rdbms::Login::parseFile(argv[2]);
       const uint64_t nbConns = 1;
       const uint64_t nbArchiveFileListingConns = 0;
       catalogue=std::move(cta::catalogue::CatalogueFactory::create(sl, catalogueLogin, nbConns, nbArchiveFileListingConns));
+      objectName = argv[3];
+    } else if (2 == argc) {
+      cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf");
+      be = std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr)));
+      const cta::rdbms::Login catalogueLogin = cta::rdbms::Login::parseFile("/etc/cta/cta_catalogue_db.conf");
+      const uint64_t nbConns = 1;
+      const uint64_t nbArchiveFileListingConns = 0;
+      catalogue = std::move(cta::catalogue::CatalogueFactory::create(sl, catalogueLogin, nbConns, nbArchiveFileListingConns));
+      objectName = argv[1];
     } else {
-      throw std::runtime_error("Wrong number of arguments: expected 3: <objectstoreURL> <catalogue login file> <objectname>");
+      throw std::runtime_error("Wrong number of arguments: expected 1 or 3: [objectstoreURL catalogueLoginFile] objectname");
     }
     // If the backend is a VFS, make sure we don't delete it on exit.
     // If not, nevermind.
@@ -57,7 +68,7 @@ int main(int argc, char ** argv) {
     } catch (std::bad_cast &){}
     std::cout << "Object store path: " << be->getParams()->toURL() << std::endl;
     // Try and open the object.
-    cta::objectstore::GenericObject go(argv[3], *be);
+    cta::objectstore::GenericObject go(objectName, *be);
     cta::objectstore::ScopedExclusiveLock gol(go);
     std::cout << "Object address: " << go.getAddressIfSet() << std::endl;
     go.fetch();
@@ -74,7 +85,7 @@ int main(int argc, char ** argv) {
       gol.release();
       bool someGcDone=false;
     gcpass:
-      cta::objectstore::ArchiveRequest ar(argv[3], *be);
+      cta::objectstore::ArchiveRequest ar(objectName, *be);
       cta::objectstore::ScopedExclusiveLock arl(ar);
       ar.fetch();
       for (auto & j: ar.dumpJobs()) {
@@ -100,7 +111,7 @@ int main(int argc, char ** argv) {
       // Reopen the object as an ArchiveRequest
       std::cout << "The object is an RetrieveRequest" << std::endl;
       gol.release();
-      cta::objectstore::RetrieveRequest rr(argv[3], *be);
+      cta::objectstore::RetrieveRequest rr(objectName, *be);
       cta::objectstore::ScopedExclusiveLock rrl(rr);
       rr.fetch();
       if (!be->exists(rr.getOwner())) {
diff --git a/objectstore/cta-objectstore-dereference-removed-queues.cpp b/objectstore/cta-objectstore-dereference-removed-queues.cpp
index a4667c4368b5d05c20120a1e9a473ad513d65473..560522493c2431fa27e253d4be4e10ada94b1748 100644
--- a/objectstore/cta-objectstore-dereference-removed-queues.cpp
+++ b/objectstore/cta-objectstore-dereference-removed-queues.cpp
@@ -22,6 +22,7 @@
  * unblock tape servers after changing the ArchiveQueue schema during development.
  */
 
+#include "common/Configuration.hpp"
 #include "BackendFactory.hpp"
 #include "BackendVFS.hpp"
 #include "Agent.hpp"
@@ -35,8 +36,11 @@ int main(int argc, char ** argv) {
     std::unique_ptr<cta::objectstore::Backend> be;
     if (2 == argc) {
       be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release());
+    } else if (1 == argc) {
+      cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf");
+      be = std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr)));
     } else {
-      throw std::runtime_error("Wrong number of arguments: expected 1");
+      throw std::runtime_error("Wrong number of arguments: expected 0 or 1: [objectstoreURL]");
     }
     // If the backend is a VFS, make sure we don't delete it on exit.
     // If not, nevermind.
diff --git a/objectstore/cta-objectstore-dump-object.cpp b/objectstore/cta-objectstore-dump-object.cpp
index d12ff6a6dc65669b9c4147fd16dd70a6371a1ef7..7e3899ef311a39ad22517fa9852359052a48d813 100644
--- a/objectstore/cta-objectstore-dump-object.cpp
+++ b/objectstore/cta-objectstore-dump-object.cpp
@@ -22,6 +22,7 @@
  * the path the backend store and exit
  */
 
+#include "common/Configuration.hpp"
 #include "BackendFactory.hpp"
 #include "BackendVFS.hpp"
 #include "GenericObject.hpp"
@@ -31,19 +32,25 @@
 int main(int argc, char ** argv) {
   try {
     std::unique_ptr<cta::objectstore::Backend> be;
+    std::string objectName;
     if (3 == argc) {
       be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release());
+      objectName = argv[2];
+    } else if (2 == argc ){
+      cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf");
+      be=std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr)));
+      objectName = argv[1];
     } else {
-      throw std::runtime_error("Wrong number of arguments: expected 2");
+      throw std::runtime_error("Wrong number of arguments: expected 1 or 2: [objectstoreURL] objectname");
     }
     // If the backend is a VFS, make sure we don't delete it on exit.
     // If not, nevermind.
     try {
       dynamic_cast<cta::objectstore::BackendVFS &>(*be).noDeleteOnExit();
     } catch (std::bad_cast &){}
-    std::cout << "Object store path: " << be->getParams()->toURL() 
-        << " object name=" << argv[2] << std::endl;
-    cta::objectstore::GenericObject ge(argv[2], *be);
+    std::cout << "Object store path: " << be->getParams()->toURL() << std::endl 
+        << "Object name: " << objectName << std::endl;
+    cta::objectstore::GenericObject ge(objectName, *be);
     cta::objectstore::ScopedSharedLock gel(ge);
     ge.fetch();
     std::cout << ge.dump(gel) << std::endl;
diff --git a/objectstore/cta-objectstore-list.cpp b/objectstore/cta-objectstore-list.cpp
index 14f6eb55e7961e556c8b063d889db07168f9ab81..e0ddc4e82bdc0615cb2edd2083723fc7ffa51839 100644
--- a/objectstore/cta-objectstore-list.cpp
+++ b/objectstore/cta-objectstore-list.cpp
@@ -22,6 +22,7 @@
  * the path the backend store and exit
  */
 
+#include "common/Configuration.hpp"
 #include "BackendVFS.hpp"
 #include "BackendFactory.hpp"
 #include "RootEntry.hpp"
@@ -33,12 +34,12 @@ int main(int argc, char ** argv) {
   try {
     std::unique_ptr<cta::objectstore::Backend> be;
     if (1 == argc) {
-      be.reset(new cta::objectstore::BackendVFS);
-      
+      cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf");
+      be = std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr)));      
     } else if (2 == argc) {
       be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release());
     } else {
-      throw std::runtime_error("Wrong number of arguments: expected 0 or 1");
+      throw std::runtime_error("Wrong number of arguments: expected 0 or 1: [objectstoreURL]");
     }
     // If the backend is a VFS, make sure we don't delete it on exit.
     // If not, nevermind.
@@ -51,7 +52,7 @@ int main(int argc, char ** argv) {
       std::cout << *o << std::endl;
     }
   } catch (std::exception & e) {
-    std::cerr << "Failed to initialise the root entry in a new VFS backend store"
+    std::cerr << "Failed to list backend store: "
         << std::endl << e.what() << std::endl;
   }
 }
\ No newline at end of file
diff --git a/objectstore/cta-objectstore-unfollow-agent.cpp b/objectstore/cta-objectstore-unfollow-agent.cpp
index 1ab5273a891b6ccde4c1877f6c19d4296f73bcd1..1a61b3404e6bc88d6a0363d446fda6d7dbef3f95 100644
--- a/objectstore/cta-objectstore-unfollow-agent.cpp
+++ b/objectstore/cta-objectstore-unfollow-agent.cpp
@@ -22,6 +22,7 @@
  * the path the backend store and exit
  */
 
+#include "common/Configuration.hpp"
 #include "BackendFactory.hpp"
 #include "BackendVFS.hpp"
 #include "Agent.hpp"
@@ -33,11 +34,17 @@
 
 int main(int argc, char ** argv) {
   try {
+    std::string agentName;
     std::unique_ptr<cta::objectstore::Backend> be;
     if (3 == argc) {
       be.reset(cta::objectstore::BackendFactory::createBackend(argv[1]).release());
+      agentName = argv[2];
+    } else if (2 == argc) {
+      cta::common::Configuration m_ctaConf("/etc/cta/cta-frontend.conf");
+      be=std::move(cta::objectstore::BackendFactory::createBackend(m_ctaConf.getConfEntString("ObjectStore", "BackendPath", nullptr)));
+      agentName = argv[1];
     } else {
-      throw std::runtime_error("Wrong number of arguments: expected 2");
+      throw std::runtime_error("Wrong number of arguments: expected 1 or 2: [objectstoreURL] agentName");
     }
     // If the backend is a VFS, make sure we don't delete it on exit.
     // If not, nevermind.
@@ -45,8 +52,8 @@ int main(int argc, char ** argv) {
       dynamic_cast<cta::objectstore::BackendVFS &>(*be).noDeleteOnExit();
     } catch (std::bad_cast &){}
     std::cout /* << "Object store path: " << be->getParams()->toURL() 
-        << " agent */<< "name=" << argv[2] << std::endl;
-    if (!be->exists(argv[2])) {
+        << " agent */<< "name=" << agentName << std::endl;
+    if (!be->exists(agentName)) {
       // Agent does not exist: remove from registry.
       cta::objectstore::RootEntry re (*be);
       cta::objectstore::ScopedSharedLock rel(re);
@@ -55,12 +62,12 @@ int main(int argc, char ** argv) {
       rel.release();
       cta::objectstore::ScopedExclusiveLock arl(ar);
       ar.fetch();
-      ar.removeAgent(argv[2]);
+      ar.removeAgent(agentName);
       ar.commit();
       std::cout << "De-listed a non-existing agent." << std::endl;
       exit (EXIT_SUCCESS);
     }
-    cta::objectstore::Agent ag(argv[2], *be);
+    cta::objectstore::Agent ag(agentName, *be);
     cta::objectstore::ScopedExclusiveLock agl(ag);
     try {
       ag.fetch();