diff --git a/common/DirIterator.cpp b/common/ArchiveDirIterator.cpp
similarity index 87%
rename from common/DirIterator.cpp
rename to common/ArchiveDirIterator.cpp
index 9f2fe068d79fae96417f3bf9e7e76e7772420c30..5f6d46472e5464111bf94a3c1cff3cf33a8d986a 100644
--- a/common/DirIterator.cpp
+++ b/common/ArchiveDirIterator.cpp
@@ -16,40 +16,40 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "common/DirIterator.hpp"
+#include "common/ArchiveDirIterator.hpp"
 #include "common/exception/Exception.hpp"
 using cta::exception::Exception;
 
 //------------------------------------------------------------------------------
 // constructor
 //------------------------------------------------------------------------------
-cta::DirIterator::DirIterator() {
+cta::ArchiveDirIterator::ArchiveDirIterator() {
 }
 
 //------------------------------------------------------------------------------
 // constructor
 //------------------------------------------------------------------------------
-cta::DirIterator::DirIterator(
+cta::ArchiveDirIterator::ArchiveDirIterator(
   const std::list<ArchiveDirEntry> &entries): m_entries(entries) {
 }
 
 //------------------------------------------------------------------------------
 // destructor
 //------------------------------------------------------------------------------
-cta::DirIterator::~DirIterator() throw() {
+cta::ArchiveDirIterator::~ArchiveDirIterator() throw() {
 }
 
 //------------------------------------------------------------------------------
 // hasMore
 //------------------------------------------------------------------------------
-bool cta::DirIterator::hasMore() {
+bool cta::ArchiveDirIterator::hasMore() {
   return !m_entries.empty();
 }
 
 //------------------------------------------------------------------------------
 // next
 //------------------------------------------------------------------------------
-const cta::ArchiveDirEntry cta::DirIterator::next() {
+const cta::ArchiveDirEntry cta::ArchiveDirIterator::next() {
   if(m_entries.empty()) {
     throw Exception("Out of bounds: There are no more directory entries");
   }
diff --git a/common/DirIterator.hpp b/common/ArchiveDirIterator.hpp
similarity index 88%
rename from common/DirIterator.hpp
rename to common/ArchiveDirIterator.hpp
index a282b2f07d51736512f7e44e7863f5379d62faa0..c8bf27622ae8ed61ce5b6a1ea04b43e5efbca263 100644
--- a/common/DirIterator.hpp
+++ b/common/ArchiveDirIterator.hpp
@@ -29,7 +29,7 @@ namespace cta {
  * through the contents of a directory.
  *
  * \code
- * DirIterator &itor = ...
+ * ArchiveDirIterator &itor = ...
  *
  * while(itor.hasMore())) {
  *   const ArchiveDirEntry &entry = itor.next();
@@ -38,25 +38,25 @@ namespace cta {
  * }
  * \endcode
  */
-class DirIterator {
+class ArchiveDirIterator {
 public:
 
   /**
    * Constructor.
    */
-  DirIterator();
+  ArchiveDirIterator();
 
   /**
    * Constructor.
    *
    * @param entries The directory entries.
    */
-  DirIterator(const std::list<ArchiveDirEntry> &entries);
+  ArchiveDirIterator(const std::list<ArchiveDirEntry> &entries);
 
   /**
    * Destructor.
    */
-  ~DirIterator() throw();
+  ~ArchiveDirIterator() throw();
 
   /**
    * Returns true if there are more directory entries.
@@ -80,6 +80,6 @@ private:
    */
   std::list<ArchiveDirEntry> m_entries;
 
-}; // DirIterator
+}; // ArchiveDirIterator
 
 } // namespace cta
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index b4e92cce11e51be241ae3a47842d3115a1037190..2b410c86505f71d48c5931c2930825dac2c70532 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -2,8 +2,8 @@ cmake_minimum_required (VERSION 2.6)
 
 set (COMMON_LIB_SRC_FILES
   ArchiveDirEntry.cpp
+  ArchiveDirIterator.cpp
   ArchiveFileStatus.cpp
-  DirIterator.cpp
   exception/Backtrace.cpp
   exception/Errnum.cpp
   exception/Exception.cpp
diff --git a/nameserver/MockNameServer.cpp b/nameserver/MockNameServer.cpp
index 7ead93500733fab6b12b8519b0da8765d6bae848..43f04ca95906bc838dc0518adea43c96a463936d 100644
--- a/nameserver/MockNameServer.cpp
+++ b/nameserver/MockNameServer.cpp
@@ -464,7 +464,7 @@ cta::ArchiveDirEntry cta::MockNameServer::getArchiveDirEntry(
 //------------------------------------------------------------------------------
 // getDirContents
 //------------------------------------------------------------------------------
-cta::DirIterator cta::MockNameServer::getDirContents(
+cta::ArchiveDirIterator cta::MockNameServer::getDirContents(
   const SecurityIdentity &requester, const std::string &path) const {
   Utils::assertAbsolutePathSyntax(path);
   assertFsDirExists(m_fsDir+path);
diff --git a/nameserver/MockNameServer.hpp b/nameserver/MockNameServer.hpp
index 59755ef5b7e27fd090139e1e74b8ba9707229bb4..323b9b39bf5f1b8fcd7675924e6fa8d3a255ddd8 100644
--- a/nameserver/MockNameServer.hpp
+++ b/nameserver/MockNameServer.hpp
@@ -18,9 +18,9 @@
 
 #pragma once
 
+#include "common/ArchiveDirIterator.hpp"
 #include "common/UserIdentity.hpp"
 #include "nameserver/NameServer.hpp"
-#include "common/DirIterator.hpp"
 #include "scheduler/SecurityIdentity.hpp"
 
 #include <list>
@@ -66,7 +66,7 @@ public:
   
   ArchiveFileStatus statFile(const SecurityIdentity &requester, const std::string &path) const;
   
-  DirIterator getDirContents(const SecurityIdentity &requester, const std::string &path) const;
+  ArchiveDirIterator getDirContents(const SecurityIdentity &requester, const std::string &path) const;
   
   bool regularFileExists(const SecurityIdentity &requester, const std::string &path) const;
 
diff --git a/nameserver/MockNameServerTest.cpp b/nameserver/MockNameServerTest.cpp
index 3020e48b43cc22e02542f9beac4fe0a561b5d59d..2106d87ad4b52da271efb57ab4e894d70cebc32b 100644
--- a/nameserver/MockNameServerTest.cpp
+++ b/nameserver/MockNameServerTest.cpp
@@ -66,7 +66,7 @@ TEST_F(cta_MockNameServerTest, constructor_consistency) {
   std::unique_ptr<MockNameServer> ns;
   ASSERT_NO_THROW(ns.reset(new MockNameServer()));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
   
   ASSERT_NO_THROW(ns->setOwner(s_adminOnAdminHost, "/", s_user));
   ASSERT_NO_THROW(itor = ns->getDirContents(s_userOnUserHost, "/"));
@@ -80,7 +80,7 @@ TEST_F(cta_MockNameServerTest, mkdir_functionality) {
   std::unique_ptr<MockNameServer> ns;
   ASSERT_NO_THROW(ns.reset(new MockNameServer()));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
 
   ASSERT_NO_THROW(ns->setOwner(s_adminOnAdminHost, "/", s_user));
   ASSERT_NO_THROW(ns->createDir(s_userOnUserHost, "/dir1", 0777));
@@ -97,7 +97,7 @@ TEST_F(cta_MockNameServerTest, createFile_functionality) {
   std::unique_ptr<MockNameServer> ns;
   ASSERT_NO_THROW(ns.reset(new MockNameServer()));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
 
   ASSERT_NO_THROW(ns->setOwner(s_adminOnAdminHost, "/", s_user));
   ASSERT_NO_THROW(ns->createFile(s_userOnUserHost, "/file1", 0666));
@@ -114,7 +114,7 @@ TEST_F(cta_MockNameServerTest, rmdir_functionality) {
   std::unique_ptr<MockNameServer> ns;
   ASSERT_NO_THROW(ns.reset(new MockNameServer()));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
   
   ASSERT_NO_THROW(ns->setOwner(s_adminOnAdminHost, "/", s_user));
   ASSERT_NO_THROW(ns->createDir(s_userOnUserHost, "/dir1", 0777));
@@ -136,7 +136,7 @@ TEST_F(cta_MockNameServerTest, storageClass_functionality) {
   std::unique_ptr<MockNameServer> ns;
   ASSERT_NO_THROW(ns.reset(new MockNameServer()));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
   
   ASSERT_NO_THROW(ns->setOwner(s_adminOnAdminHost, "/", s_user));
   ASSERT_NO_THROW(ns->createDir(s_userOnUserHost, "/dir1", 0777));
@@ -167,7 +167,7 @@ TEST_F(cta_MockNameServerTest, storageClass_inheritance) {
   std::unique_ptr<MockNameServer> ns;
   ASSERT_NO_THROW(ns.reset(new MockNameServer()));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
   
   ASSERT_NO_THROW(ns->setOwner(s_adminOnAdminHost, "/", s_user));
   ASSERT_NO_THROW(ns->createDir(s_userOnUserHost, "/dir1", 0777));
diff --git a/nameserver/NameServer.hpp b/nameserver/NameServer.hpp
index 46a853f418d92dff8c2cf45d366da01d637bf680..f4cd28ae6f463e61fd79ab46079b942de0207a67 100644
--- a/nameserver/NameServer.hpp
+++ b/nameserver/NameServer.hpp
@@ -18,8 +18,8 @@
 
 #pragma once
 
+#include "common/ArchiveDirIterator.hpp"
 #include "common/ArchiveFileStatus.hpp"
-#include "common/DirIterator.hpp"
 #include "scheduler/SecurityIdentity.hpp"
 
 #include <string>
@@ -80,7 +80,7 @@ public:
    * @param path The absolute path of the directory.
    * @return An iterator over the contents of the directory.
    */
-  virtual DirIterator getDirContents(
+  virtual ArchiveDirIterator getDirContents(
     const SecurityIdentity &requester,
     const std::string &path) const = 0;
 
diff --git a/scheduler/MockSchedulerDatabase.cpp b/scheduler/MockSchedulerDatabase.cpp
index cf9bf81ed3c91d266d657eeab2fe73768b22195c..3872f2b630eba716e1d7b6d1cb078aacf1eeeed9 100644
--- a/scheduler/MockSchedulerDatabase.cpp
+++ b/scheduler/MockSchedulerDatabase.cpp
@@ -16,6 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "common/ArchiveDirIterator.hpp"
 #include "common/exception/Exception.hpp"
 #include "common/UserIdentity.hpp"
 #include "nameserver/NameServer.hpp"
@@ -25,7 +26,6 @@
 #include "scheduler/ArchiveToFileRequest.hpp"
 #include "scheduler/ArchiveToTapeCopyRequest.hpp"
 #include "scheduler/ArchivalRoute.hpp"
-#include "common/DirIterator.hpp"
 #include "scheduler/LogicalLibrary.hpp"
 #include "scheduler/MockSchedulerDatabase.hpp"
 #include "scheduler/RetrieveFromTapeCopyRequest.hpp"
diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp
index 89037124c15cadb713717d122894cfac5a5ceb54..87ac7522e5e15d74ae22dc3f46764aad7478261b 100644
--- a/scheduler/Scheduler.cpp
+++ b/scheduler/Scheduler.cpp
@@ -421,7 +421,7 @@ std::string cta::Scheduler::getVidOfFile(
 //------------------------------------------------------------------------------
 // getDirContents
 //------------------------------------------------------------------------------
-cta::DirIterator cta::Scheduler::getDirContents(
+cta::ArchiveDirIterator cta::Scheduler::getDirContents(
   const SecurityIdentity &requester,
   const std::string &path) const {
   return m_ns.getDirContents(requester, path);
diff --git a/scheduler/Scheduler.hpp b/scheduler/Scheduler.hpp
index 71ac6e9e5062566b235f6c504ed2e0d550c310ba..d64d81d28638c6701a35312957242936a32510ca 100644
--- a/scheduler/Scheduler.hpp
+++ b/scheduler/Scheduler.hpp
@@ -33,7 +33,7 @@ class ArchivalRoute;
 class ArchiveToDirRequest;
 class ArchiveToFileRequest;
 class ArchiveToTapeCopyRequest;
-class DirIterator;
+class ArchiveDirIterator;
 class LogicalLibrary;
 class NameServer;
 class RemoteNS;
@@ -507,7 +507,7 @@ public:
    * @param path The absolute path of the directory.
    * @return An iterator over the contents of the directory.
    */
-  DirIterator getDirContents(
+  ArchiveDirIterator getDirContents(
     const SecurityIdentity &requester,
     const std::string &path) const;
 
diff --git a/scheduler/SchedulerTest.cpp b/scheduler/SchedulerTest.cpp
index 0d079af3c6af0d90b7fa74a881032b5dca4b376d..3301db7a178f83b72d87bd92e29f7a828b2eaadb 100644
--- a/scheduler/SchedulerTest.cpp
+++ b/scheduler/SchedulerTest.cpp
@@ -955,7 +955,7 @@ TEST_P(SchedulerTest, getDirContents_root_dir_is_empty) {
   Scheduler &scheduler = getScheduler();
   ASSERT_NO_THROW(scheduler.setOwner(s_adminOnAdminHost, "/", s_user));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
   ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
   ASSERT_FALSE(itor.hasMore());
 }
@@ -1013,7 +1013,7 @@ TEST_P(SchedulerTest, createDir_top_level) {
   const uint16_t mode = 0777;
   ASSERT_NO_THROW(scheduler.createDir(s_userOnUserHost, dirPath, mode));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
 
   ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1044,7 +1044,7 @@ TEST_P(SchedulerTest, createDir_second_level) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1068,7 +1068,7 @@ TEST_P(SchedulerTest, createDir_second_level) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1082,7 +1082,7 @@ TEST_P(SchedulerTest, createDir_second_level) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
@@ -1127,7 +1127,7 @@ TEST_P(SchedulerTest,
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1157,7 +1157,7 @@ TEST_P(SchedulerTest,
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1171,7 +1171,7 @@ TEST_P(SchedulerTest,
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/grandparent"));
 
@@ -1213,7 +1213,7 @@ TEST_P(SchedulerTest, deleteDir_existing_top_level) {
   ASSERT_NO_THROW(scheduler.createDir(s_userOnUserHost, dirPath, mode));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1229,7 +1229,7 @@ TEST_P(SchedulerTest, deleteDir_existing_top_level) {
   ASSERT_NO_THROW(scheduler.deleteDir(s_userOnUserHost, "/grandparent"));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
   
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
   
@@ -1252,7 +1252,7 @@ TEST_P(SchedulerTest,
     ASSERT_NO_THROW(scheduler.createDir(s_userOnUserHost, topLevelDirPath,
       mode));
 
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1272,7 +1272,7 @@ TEST_P(SchedulerTest,
     ASSERT_NO_THROW(scheduler.createDir(s_userOnUserHost, secondLevelDirPath,
       mode));
 
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1286,7 +1286,7 @@ TEST_P(SchedulerTest,
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/grandparent"));
 
@@ -1302,7 +1302,7 @@ TEST_P(SchedulerTest,
   ASSERT_THROW(scheduler.deleteDir(s_userOnUserHost, "/grandparent"), std::exception);
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/grandparent"));
 
@@ -1338,7 +1338,7 @@ TEST_P(SchedulerTest, setDirStorageClass_top_level) {
 
   ASSERT_NO_THROW(scheduler.createDir(s_userOnUserHost, dirPath, mode));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
 
   ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1386,7 +1386,7 @@ TEST_P(SchedulerTest, clearDirStorageClass_top_level) {
 
   ASSERT_NO_THROW(scheduler.createDir(s_userOnUserHost, dirPath, mode));
 
-  DirIterator itor;
+  ArchiveDirIterator itor;
 
   ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
@@ -1469,7 +1469,7 @@ TEST_P(SchedulerTest, archive_to_new_file) {
   ASSERT_NO_THROW(scheduler.queueArchiveRequest(s_userOnUserHost, remoteFiles, archiveFile));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_TRUE(itor.hasMore());
     ArchiveDirEntry entry;
@@ -1480,7 +1480,7 @@ TEST_P(SchedulerTest, archive_to_new_file) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
     ASSERT_TRUE(itor.hasMore());
@@ -1575,7 +1575,7 @@ TEST_P(SchedulerTest, archive_to_new_user_file_as_admin) {
   ASSERT_THROW(scheduler.queueArchiveRequest(s_adminOnAdminHost, remoteFiles, archiveFile), std::exception);
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_TRUE(itor.hasMore());
     ArchiveDirEntry entry;
@@ -1586,7 +1586,7 @@ TEST_P(SchedulerTest, archive_to_new_user_file_as_admin) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
     ASSERT_FALSE(itor.hasMore());
@@ -1639,7 +1639,7 @@ TEST_P(SchedulerTest, archive_twice_to_same_file) {
   ASSERT_NO_THROW(scheduler.queueArchiveRequest(s_userOnUserHost, remoteFiles, archiveFile));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_TRUE(itor.hasMore());
     ArchiveDirEntry entry;
@@ -1650,7 +1650,7 @@ TEST_P(SchedulerTest, archive_twice_to_same_file) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
     ASSERT_TRUE(itor.hasMore());
@@ -1711,7 +1711,7 @@ TEST_P(SchedulerTest, archive_twice_to_same_file) {
   ASSERT_THROW(scheduler.queueArchiveRequest(s_userOnUserHost, remoteFiles, archiveFile), std::exception);
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_TRUE(itor.hasMore());
     ArchiveDirEntry entry;
@@ -1722,7 +1722,7 @@ TEST_P(SchedulerTest, archive_twice_to_same_file) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
     ASSERT_TRUE(itor.hasMore());
@@ -1800,7 +1800,7 @@ TEST_P(SchedulerTest, delete_archive_request) {
   ASSERT_NO_THROW(scheduler.queueArchiveRequest(s_userOnUserHost, remoteFiles, archiveFile));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_TRUE(itor.hasMore());
     ArchiveDirEntry entry;
@@ -1811,7 +1811,7 @@ TEST_P(SchedulerTest, delete_archive_request) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
     ASSERT_TRUE(itor.hasMore());
@@ -2035,7 +2035,7 @@ TEST_P(SchedulerTest, archive_to_directory) {
   ASSERT_NO_THROW(scheduler.queueArchiveRequest(s_userOnUserHost, remoteFiles, archiveFile));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_TRUE(itor.hasMore());
     ArchiveDirEntry entry;
@@ -2047,7 +2047,7 @@ TEST_P(SchedulerTest, archive_to_directory) {
 
   {
     std::set<std::string> archiveFileNames;
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
     while(itor.hasMore()) {
@@ -2298,7 +2298,7 @@ TEST_P(SchedulerTest, archive_and_retrieve_new_file) {
   ASSERT_NO_THROW(scheduler.queueArchiveRequest(s_userOnUserHost, remoteFiles, archiveFile));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_TRUE(itor.hasMore());
     ArchiveDirEntry entry;
@@ -2309,7 +2309,7 @@ TEST_P(SchedulerTest, archive_and_retrieve_new_file) {
   }
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost,
       "/grandparent"));
     ASSERT_TRUE(itor.hasMore());
@@ -2406,7 +2406,7 @@ TEST_P(SchedulerTest, retrieve_non_existing_file) {
   ASSERT_NO_THROW(scheduler.setOwner(s_adminOnAdminHost, "/", s_user));
 
   {
-    DirIterator itor;
+    ArchiveDirIterator itor;
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
     ASSERT_FALSE(itor.hasMore());
   }
@@ -2470,7 +2470,7 @@ TEST_P(SchedulerTest, setOwner_getDirContents_top_level) {
     const uint16_t mode = 0777;
     ASSERT_NO_THROW(scheduler.createDir(s_userOnUserHost, dirPath, mode));
 
-    DirIterator itor;
+    ArchiveDirIterator itor;
 
     ASSERT_NO_THROW(itor = scheduler.getDirContents(s_userOnUserHost, "/"));
 
diff --git a/xroot_plugins/XrdProFile.cpp b/xroot_plugins/XrdProFile.cpp
index 16faa3983c3b70b9e6286879b51fe0949180a24f..04d35b6023f313b36c1fb6eba22a6c20624e3787 100644
--- a/xroot_plugins/XrdProFile.cpp
+++ b/xroot_plugins/XrdProFile.cpp
@@ -16,6 +16,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "cmdline/CTACmd.hpp"
+#include "common/ArchiveDirIterator.hpp"
 #include "common/exception/Exception.hpp"
 #include "common/UserIdentity.hpp"
 #include "scheduler/AdminHost.hpp"
@@ -33,8 +35,6 @@
 #include "xroot_plugins/XrdProFile.hpp"
 
 #include "XrdSec/XrdSecEntity.hh"
-#include "cmdline/CTACmd.hpp"
-#include "common/DirIterator.hpp"
 
 #include <iostream>
 #include <pwd.h>