diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp
index a3ade7eef4d1229aacc2da0fdf714a7eef164ab0..5645a6e32fc6dc437876d19e5c2895331f769c4d 100644
--- a/scheduler/Scheduler.cpp
+++ b/scheduler/Scheduler.cpp
@@ -387,37 +387,57 @@ void Scheduler::reportDriveStatus(const common::dataStructures::DriveInfo& drive
   log::ScopedParamContainer spc(lc);
   spc.add("drive", driveInfo.driveName)
      .add("schedulerDbTime", schedulerDbTime);
-   lc.log(log::INFO, "In Scheduler::reportDriveStatus(): success.");   
+  lc.log(log::INFO, "In Scheduler::reportDriveStatus(): success.");
 }
 
 //------------------------------------------------------------------------------
 // getPendingArchiveJobs
 //------------------------------------------------------------------------------
-std::map<std::string, std::list<common::dataStructures::ArchiveJob> > Scheduler::getPendingArchiveJobs() const {
-  return m_db.getArchiveJobs();
+std::map<std::string, std::list<common::dataStructures::ArchiveJob> > Scheduler::getPendingArchiveJobs(log::LogContext & lc) const {
+  utils::Timer t;
+  auto ret = m_db.getArchiveJobs();
+  auto schedulerDbTime = t.secs();
+  log::ScopedParamContainer spc(lc);
+  spc.add("schedulerDbTime", schedulerDbTime);
+  lc.log(log::INFO, "In Scheduler::getPendingArchiveJobs(): success.");
+  return ret;
 }
 
 //------------------------------------------------------------------------------
 // getPendingArchiveJobs
 //------------------------------------------------------------------------------
-std::list<common::dataStructures::ArchiveJob> Scheduler::getPendingArchiveJobs(const std::string &tapePoolName) const {
+std::list<common::dataStructures::ArchiveJob> Scheduler::getPendingArchiveJobs(const std::string &tapePoolName, log::LogContext & lc) const {
+  utils::Timer t;
   if(!m_catalogue.tapePoolExists(tapePoolName)) {
     throw exception::Exception(std::string("Tape pool ") + tapePoolName + " does not exist");
   }
-  return m_db.getArchiveJobs(tapePoolName);
+  auto catalogueTime = t.secs(utils::Timer::resetCounter);
+  auto ret = m_db.getArchiveJobs(tapePoolName);
+  auto schedulerDbTime = t.secs();
+  log::ScopedParamContainer spc(lc);
+  spc.add("catalogueTime", catalogueTime)
+     .add("schedulerDbTime", schedulerDbTime);
+  lc.log(log::INFO, "In Scheduler::getPendingArchiveJobs(tapePool): success.");
+  return ret;
 }
 
 //------------------------------------------------------------------------------
 // getPendingRetrieveJobs
 //------------------------------------------------------------------------------
-std::map<std::string, std::list<common::dataStructures::RetrieveJob> > Scheduler::getPendingRetrieveJobs() const {
-  return m_db.getRetrieveJobs();
+std::map<std::string, std::list<common::dataStructures::RetrieveJob> > Scheduler::getPendingRetrieveJobs(log::LogContext & lc) const {
+  utils::Timer t;
+  auto ret =  m_db.getRetrieveJobs();
+  auto schedulerDbTime = t.secs();
+  log::ScopedParamContainer spc(lc);
+  spc.add("schedulerDbTime", schedulerDbTime);
+  lc.log(log::INFO, "In Scheduler::getPendingRetrieveJobs(): success.");
+  return ret;
 }
 
 //------------------------------------------------------------------------------
 // getPendingRetrieveJobs
 //------------------------------------------------------------------------------
-std::list<common::dataStructures::RetrieveJob> Scheduler::getPendingRetrieveJobs(const std::string& vid) const {
+std::list<common::dataStructures::RetrieveJob> Scheduler::getPendingRetrieveJobs(const std::string& vid, log::LogContext &lc) const {
   throw exception::Exception(std::string("Not implemented: ") + __PRETTY_FUNCTION__);
 }
 
diff --git a/scheduler/Scheduler.hpp b/scheduler/Scheduler.hpp
index 6765c632c4833154e48d8471538be5005e2b1019..49a9f93ee29cce89fd462bc83feb474400cca052 100644
--- a/scheduler/Scheduler.hpp
+++ b/scheduler/Scheduler.hpp
@@ -189,10 +189,10 @@ public:
     const cta::common::dataStructures::TestSourceType testSourceType, const std::string &tag) const;
 
 
-  std::map<std::string, std::list<cta::common::dataStructures::ArchiveJob> > getPendingArchiveJobs() const;
-  std::list<cta::common::dataStructures::ArchiveJob> getPendingArchiveJobs(const std::string &tapePoolName) const;
-  std::map<std::string, std::list<cta::common::dataStructures::RetrieveJob> > getPendingRetrieveJobs() const;
-  std::list<cta::common::dataStructures::RetrieveJob> getPendingRetrieveJobs(const std::string &vid) const;
+  std::map<std::string, std::list<cta::common::dataStructures::ArchiveJob> > getPendingArchiveJobs(log::LogContext &lc) const;
+  std::list<cta::common::dataStructures::ArchiveJob> getPendingArchiveJobs(const std::string &tapePoolName, log::LogContext &lc) const;
+  std::map<std::string, std::list<cta::common::dataStructures::RetrieveJob> > getPendingRetrieveJobs(log::LogContext &lc) const;
+  std::list<cta::common::dataStructures::RetrieveJob> getPendingRetrieveJobs(const std::string &vid, log::LogContext &lc) const;
   
   /*============== Drive state management ====================================*/
   CTA_GENERATE_EXCEPTION_CLASS(NoSuchDrive);
diff --git a/scheduler/SchedulerTest.cpp b/scheduler/SchedulerTest.cpp
index d81e1da97cae9ce15f36c3461aabf66e6ca33bae..a9070717b6dd7b635afef30cd331dcab3783f8cc 100644
--- a/scheduler/SchedulerTest.cpp
+++ b/scheduler/SchedulerTest.cpp
@@ -265,7 +265,7 @@ TEST_P(SchedulerTest, archive_to_new_file) {
   scheduler.queueArchive(s_diskInstance, request, lc);
 
   {
-    auto rqsts = scheduler.getPendingArchiveJobs();
+    auto rqsts = scheduler.getPendingArchiveJobs(lc);
     ASSERT_EQ(1, rqsts.size());
     auto poolItor = rqsts.cbegin();
     ASSERT_FALSE(poolItor == rqsts.cend());
@@ -401,7 +401,7 @@ TEST_P(SchedulerTest, archive_and_retrieve_new_file) {
   // (otherwise we miss the selected ones).
   // Could also be limited to querying by ID (global index needed)
   bool found=false;
-  for (auto & tp: scheduler.getPendingArchiveJobs()) {
+  for (auto & tp: scheduler.getPendingArchiveJobs(lc)) {
     for (auto & req: tp.second) {
       if (req.archiveFileID == archiveFileId)
         found = true;
@@ -490,7 +490,7 @@ TEST_P(SchedulerTest, archive_and_retrieve_new_file) {
 
   // Check that the retrieve request is queued
   {
-    auto rqsts = scheduler.getPendingRetrieveJobs();
+    auto rqsts = scheduler.getPendingRetrieveJobs(lc);
     // We expect 1 tape with queued jobs
     ASSERT_EQ(1, rqsts.size());
     // We expect the queue to contain 1 job
diff --git a/xroot_plugins/XrdCtaFile.cpp b/xroot_plugins/XrdCtaFile.cpp
index 213848637b915835d87ad0bdf62cb23a51f22e2e..d82b1be2fca025626ad0a98b26880b84bd8ef55f 100644
--- a/xroot_plugins/XrdCtaFile.cpp
+++ b/xroot_plugins/XrdCtaFile.cpp
@@ -1927,6 +1927,7 @@ std::string XrdCtaFile::xCom_drive() {
 // xCom_listpendingarchives
 //------------------------------------------------------------------------------
 std::string XrdCtaFile::xCom_listpendingarchives() {
+  log::LogContext lc(m_log);
   std::stringstream cmdlineOutput;
   std::stringstream help;
   help << m_requestTokens.at(0) << " lpa/listpendingarchives [--header/-h] [--tapepool/-t <tapepool_name>] [--extended/-x]" << std::endl;
@@ -1934,10 +1935,10 @@ std::string XrdCtaFile::xCom_listpendingarchives() {
   bool extended = hasOption("-x", "--extended");
   std::map<std::string, std::list<cta::common::dataStructures::ArchiveJob> > result;
   if(!tapepool) {
-    result = m_scheduler->getPendingArchiveJobs();
+    result = m_scheduler->getPendingArchiveJobs(lc);
   }
   else {
-    std::list<cta::common::dataStructures::ArchiveJob> list = m_scheduler->getPendingArchiveJobs(tapepool.value());
+    std::list<cta::common::dataStructures::ArchiveJob> list = m_scheduler->getPendingArchiveJobs(tapepool.value(), lc);
     if(list.size()>0) {
       result[tapepool.value()] = list;
     }
@@ -1994,15 +1995,16 @@ std::string XrdCtaFile::xCom_listpendingarchives() {
 std::string XrdCtaFile::xCom_listpendingretrieves() {
   std::stringstream cmdlineOutput;
   std::stringstream help;
+  log::LogContext lc(m_log);
   help << m_requestTokens.at(0) << " lpr/listpendingretrieves [--header/-h] [--vid/-v <vid>] [--extended/-x]" << std::endl;
   optional<std::string> vid = getOptionStringValue("-v", "--vid", false, false);
   bool extended = hasOption("-x", "--extended");
   std::map<std::string, std::list<cta::common::dataStructures::RetrieveJob> > result;
   if(!vid) {
-    result = m_scheduler->getPendingRetrieveJobs();
+    result = m_scheduler->getPendingRetrieveJobs(lc);
   }
   else {
-    std::list<cta::common::dataStructures::RetrieveJob> list = m_scheduler->getPendingRetrieveJobs(vid.value());
+    std::list<cta::common::dataStructures::RetrieveJob> list = m_scheduler->getPendingRetrieveJobs(vid.value(), lc);
     if(list.size()>0) {
       result[vid.value()] = list;
     }