diff --git a/objectstore/AlgorithmsTest.cpp b/objectstore/AlgorithmsTest.cpp
index 5755b388dd26b398f983f03ee9f2f0c39dbed195..994ba2ced8598588e370e444fb97f495032b067e 100644
--- a/objectstore/AlgorithmsTest.cpp
+++ b/objectstore/AlgorithmsTest.cpp
@@ -116,7 +116,7 @@ TEST(ObjectStore, ArchiveQueueAlgorithms) {
   rel.release();
   agent.initialize();
   agent.insertAndRegisterSelf(lc);
-  ContainerAlgorithms<ArchiveQueue,ArchiveQueue>::InsertedElement::list requests;
+  ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer>::InsertedElement::list requests;
   std::list<std::unique_ptr<cta::objectstore::ArchiveRequest>> archiveRequests;
   for (size_t i=0; i<10; i++) {
     std::string arAddr = agentRef.nextId("ArchiveRequest");
@@ -135,7 +135,7 @@ TEST(ObjectStore, ArchiveQueueAlgorithms) {
     aFile.fileSize = 667;
     aFile.storageClass = "sc";
     archiveRequests.emplace_back(new cta::objectstore::ArchiveRequest(arAddr, be));
-    requests.emplace_back(ContainerAlgorithms<ArchiveQueue,ArchiveQueue>::InsertedElement{archiveRequests.back().get(), 1, aFile, mp,
+    requests.emplace_back(ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer>::InsertedElement{archiveRequests.back().get(), 1, aFile, mp,
         cta::nullopt});
     auto & ar=*requests.back().archiveRequest;
     auto copyNb = requests.back().copyNb;
@@ -150,10 +150,10 @@ TEST(ObjectStore, ArchiveQueueAlgorithms) {
     ar.setEntryLog(cta::common::dataStructures::EntryLog("user0", "host0", time(nullptr)));
     ar.insert();
   }
-  ContainerAlgorithms<ArchiveQueue,ArchiveQueue> archiveAlgos(be, agentRef);
+  ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> archiveAlgos(be, agentRef);
   archiveAlgos.referenceAndSwitchOwnership("Tapepool", QueueType::JobsToTransfer, requests, lc);
   // Now get the requests back
-  ContainerTraits<ArchiveQueue,ArchiveQueue>::PopCriteria popCriteria;
+  ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PopCriteria popCriteria;
   popCriteria.bytes = std::numeric_limits<decltype(popCriteria.bytes)>::max();
   popCriteria.files = 100;
   auto poppedJobs = archiveAlgos.popNextBatch("Tapepool", QueueType::JobsToTransfer, popCriteria, lc);
diff --git a/objectstore/ArchiveQueue.hpp b/objectstore/ArchiveQueue.hpp
index 39496420d3d297747de2fdd3f9450b4de8126f51..316614e8baedccc19055d5f0f40a6792e71ba5ea 100644
--- a/objectstore/ArchiveQueue.hpp
+++ b/objectstore/ArchiveQueue.hpp
@@ -138,6 +138,11 @@ public:
   static const uint64_t c_maxShardSize = 25000;
 };
 
+class ArchiveQueueToTransfer: public ArchiveQueue {
+public:
+  template<typename...Ts> ArchiveQueueToTransfer(Ts&...args): ArchiveQueue(args...) {}
+};
+
 class ArchiveQueueToReport: public ArchiveQueue {
 public:
   template<typename...Ts> ArchiveQueueToReport(Ts&...args): ArchiveQueue(args...) {}
diff --git a/objectstore/ArchiveQueueAlgorithms.hpp b/objectstore/ArchiveQueueAlgorithms.hpp
index bf73ebdd5f4828a71f481b5d2d649d442cc0a622..8000d515d7ea5614d8990c09260f8ee360a79e55 100644
--- a/objectstore/ArchiveQueueAlgorithms.hpp
+++ b/objectstore/ArchiveQueueAlgorithms.hpp
@@ -437,7 +437,7 @@ getElementSummary(const PoppedElement& poppedElement) -> PoppedElementsSummary {
 // ArchiveQueue full specialisations for ContainerTraits.
 
 template<>
-struct ContainerTraits<ArchiveQueue,ArchiveQueue>::PopCriteria {
+struct ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PopCriteria {
   uint64_t files;
   uint64_t bytes;
   PopCriteria(uint64_t f = 0, uint64_t b = 0) : files(f), bytes(b) {}
@@ -450,7 +450,7 @@ struct ContainerTraits<ArchiveQueue,ArchiveQueue>::PopCriteria {
 };
 
 template<>
-struct ContainerTraits<ArchiveQueue,ArchiveQueue>::PoppedElementsSummary {
+struct ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PoppedElementsSummary {
   uint64_t files;
   uint64_t bytes;
   PoppedElementsSummary(uint64_t f = 0, uint64_t b = 0) : files(f), bytes(b) {}
diff --git a/objectstore/ArchiveQueueAlgorithms.cpp b/objectstore/ArchiveQueueToTransferAlgorithms.cpp
similarity index 81%
rename from objectstore/ArchiveQueueAlgorithms.cpp
rename to objectstore/ArchiveQueueToTransferAlgorithms.cpp
index 11187d64d89feb4c60b533147222b3c51b76b71a..bc2cdb574cc414d33819d4f8b44a57fe13b1705c 100644
--- a/objectstore/ArchiveQueueAlgorithms.cpp
+++ b/objectstore/ArchiveQueueToTransferAlgorithms.cpp
@@ -24,13 +24,13 @@ namespace cta { namespace objectstore {
 // ArchiveQueue full specialisations for ContainerTraits.
 
 template<>
-const std::string ContainerTraits<ArchiveQueue,ArchiveQueue>::c_containerTypeName = "ArchiveQueue";
+const std::string ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::c_containerTypeName = "ArchiveQueueToTransfer";
 
 template<>
-const std::string ContainerTraits<ArchiveQueue,ArchiveQueue>::c_identifierType = "tapepool";
+const std::string ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::c_identifierType = "tapepool";
 
 template<>
-auto ContainerTraits<ArchiveQueue,ArchiveQueue>::
+auto ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::
 getContainerSummary(Container& cont) -> ContainerSummary {
   ContainerSummary ret;
   ret.JobsSummary::operator=(cont.getJobsSummary());
@@ -38,7 +38,7 @@ getContainerSummary(Container& cont) -> ContainerSummary {
 }
 
 template<>
-auto ContainerTraits<ArchiveQueue,ArchiveQueue>::
+auto ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::
 getPoppingElementsCandidates(Container &cont, PopCriteria &unfulfilledCriteria, ElementsToSkipSet &elemtsToSkip,
   log::LogContext& lc) -> PoppedElementsBatch
 {
@@ -54,7 +54,7 @@ getPoppingElementsCandidates(Container &cont, PopCriteria &unfulfilledCriteria,
 }
 
 template<>
-auto ContainerTraits<ArchiveQueue,ArchiveQueue>::
+auto ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::
 getElementSummary(const PoppedElement& poppedElement) -> PoppedElementsSummary {
   PoppedElementsSummary ret;
   ret.bytes = poppedElement.bytes;
@@ -63,14 +63,14 @@ getElementSummary(const PoppedElement& poppedElement) -> PoppedElementsSummary {
 }
 
 template<>
-void ContainerTraits<ArchiveQueue,ArchiveQueue>::PoppedElementsBatch::
+void ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PoppedElementsBatch::
 addToLog(log::ScopedParamContainer &params) {
   params.add("bytes", summary.bytes)
         .add("files", summary.files);
 }
 
 template<>
-void ContainerTraits<ArchiveQueue,ArchiveQueue>::
+void ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::
 trimContainerIfNeeded(Container &cont, ScopedExclusiveLock &contLock, const ContainerIdentifier &cId,
   log::LogContext &lc)
 {
diff --git a/objectstore/CMakeLists.txt b/objectstore/CMakeLists.txt
index f9191d871fd782581fa6352cbd9deaa351591329..e2fd1247e3428fb155ab3ace6afcbf9c73ba8629 100644
--- a/objectstore/CMakeLists.txt
+++ b/objectstore/CMakeLists.txt
@@ -60,9 +60,9 @@ add_library (ctaobjectstore SHARED
   AgentWatchdog.cpp
   ArchiveQueue.cpp
   ArchiveQueueShard.cpp
-  ArchiveQueueAlgorithms.cpp
-  ArchiveQueueFailedAlgorithms.cpp
+  ArchiveQueueToTransferAlgorithms.cpp
   ArchiveQueueToReportAlgorithms.cpp
+  ArchiveQueueFailedAlgorithms.cpp
   RetrieveQueue.cpp
   RetrieveQueueShard.cpp
   RetrieveQueueAlgorithms.cpp
diff --git a/objectstore/GarbageCollector.cpp b/objectstore/GarbageCollector.cpp
index a31ee5d1a8e26220f9d27d0d30a14f2eb5753e1a..8f5fa13d50eddeeb62c72e4a00c6384fcd042b4a 100644
--- a/objectstore/GarbageCollector.cpp
+++ b/objectstore/GarbageCollector.cpp
@@ -399,7 +399,7 @@ void GarbageCollector::OwnedObjectSorter::lockFetchAndUpdateArchiveJobs(Agent& a
         requestsList.pop_front();
       }
       utils::Timer t;
-      typedef ContainerAlgorithms<ArchiveQueue,ArchiveQueue> AqAlgos;
+      typedef ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> AqAlgos;
       AqAlgos aqcl(objectStore, agentReference);
       decltype(aqcl)::InsertedElement::list jobsToAdd;
       for (auto & ar: currentJobBatch) {
diff --git a/objectstore/ObjectOps.hpp b/objectstore/ObjectOps.hpp
index 6d760f5b5d998b2cb5a78f5b1dfdf6f84b98add3..79aa62a7ac8ed896082e35e16aed06d9961b877c 100644
--- a/objectstore/ObjectOps.hpp
+++ b/objectstore/ObjectOps.hpp
@@ -33,7 +33,10 @@ class AgentReference;
 class ScopedLock;
 class ScopedExclusiveLock;
 template<typename Q,typename C> struct ContainerTraits;
+
+// Defined queue types
 struct ArchiveQueue;
+struct ArchiveQueueToTransfer;
 struct ArchiveQueueToReport;
 struct ArchiveQueueFailed;
 struct RetrieveQueue;
@@ -44,7 +47,7 @@ class ObjectOpsBase {
   friend class ScopedExclusiveLock;
   friend class GenericObject;
   friend class Helpers;
-  friend ContainerTraits<ArchiveQueue,ArchiveQueue>;
+  friend ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>;
   friend ContainerTraits<ArchiveQueue,ArchiveQueueToReport>;
   friend ContainerTraits<ArchiveQueue,ArchiveQueueFailed>;
   friend ContainerTraits<RetrieveQueue,RetrieveQueue>;
diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp
index 57bc414836cfe7ae96b263f2d60a20e87892f6df..95f56877de68d85c1907d937e716d6a39d23da04 100644
--- a/scheduler/OStoreDB/OStoreDB.cpp
+++ b/scheduler/OStoreDB/OStoreDB.cpp
@@ -1742,7 +1742,7 @@ const SchedulerDatabase::ArchiveMount::MountInfo& OStoreDB::ArchiveMount::getMou
 //------------------------------------------------------------------------------
 std::list<std::unique_ptr<SchedulerDatabase::ArchiveJob> > OStoreDB::ArchiveMount::getNextJobBatch(uint64_t filesRequested,
     uint64_t bytesRequested, log::LogContext& logContext) {
-  typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueue> AQAlgos;
+  typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> AQAlgos;
   AQAlgos aqAlgos(m_oStoreDB.m_objectStore, *m_oStoreDB.m_agentReference);
   AQAlgos::PopCriteria popCriteria(filesRequested, bytesRequested);
   auto jobs = aqAlgos.popNextBatch(mountInfo.tapePool, objectstore::QueueType::JobsToTransfer, popCriteria, logContext);
@@ -2137,7 +2137,7 @@ void OStoreDB::ArchiveJob::failTransfer(const std::string& failureReason, log::L
       auto retryStatus = m_archiveRequest.getRetryStatus(tapeFile.copyNb);
       m_archiveRequest.commit();
       arl.release();
-      typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueue> CaAqtr;
+      typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> CaAqtr;
       CaAqtr caAqtr(m_oStoreDB.m_objectStore, *m_oStoreDB.m_agentReference);
       CaAqtr::InsertedElement::list insertedElements;
       insertedElements.push_back(CaAqtr::InsertedElement{&m_archiveRequest, tapeFile.copyNb, archiveFile, cta::nullopt, cta::nullopt });