diff --git a/common/dataStructures/QueueAndMountSummary.cpp b/common/dataStructures/QueueAndMountSummary.cpp
index 03c1f660ca434304f0800b6ab0cf7f373a2a25ce..587a23a6eeeb03807e0f5f96eafb31dd2ca80d73 100644
--- a/common/dataStructures/QueueAndMountSummary.cpp
+++ b/common/dataStructures/QueueAndMountSummary.cpp
@@ -30,7 +30,7 @@ QueueAndMountSummary &QueueAndMountSummary::getOrCreateEntry(std::list<QueueAndM
     const common::dataStructures::VidToTapeMap &vid_to_tapeinfo)
 {
   for (auto & summary: summaryList) {
-    if((summary.tapePool == tapePool && summary.mountType == mountType) || (summary.vid == vid && mountType == MountType::Retrieve)) {
+    if((summary.tapePool == tapePool && summary.mountType == mountType && (getMountBasicType(mountType) == MountType::ArchiveAllTypes)) || (summary.vid == vid && mountType == MountType::Retrieve)) {
       return summary;
     }
   }
diff --git a/scheduler/SchedulerTest.cpp b/scheduler/SchedulerTest.cpp
index 720151b65002793261dff83f768ee1b62ac63506..773b63c988b8d106a4d4aba812764dfc3e7d46df 100644
--- a/scheduler/SchedulerTest.cpp
+++ b/scheduler/SchedulerTest.cpp
@@ -5151,6 +5151,175 @@ TEST_P(SchedulerTest, retrieveMountPolicyInFlightChangeScheduleMount)
   
   ASSERT_TRUE(scheduler.getNextMountDryRun(s_libraryName,"drive",lc));
 }
+
+TEST_P(SchedulerTest, getQueuesAndMountSummariesTest)
+{
+  using namespace cta;
+  using namespace cta::objectstore;
+  unitTests::TempDirectory tempDirectory;
+  auto &catalogue = getCatalogue();
+  auto &scheduler = getScheduler();
+  auto &schedulerDB = getSchedulerDB();
+
+  cta::objectstore::Backend& backend = schedulerDB.getBackend();
+  setupDefaultCatalogue();
+#ifdef STDOUT_LOGGING
+  log::StdoutLogger dl("dummy", "unitTest");
+#else
+  log::DummyLogger dl("", "");
+#endif
+  log::LogContext lc(dl);
+  
+  //Create an agent to represent this test process
+  cta::objectstore::AgentReference agentReference("getQueuesAndMountSummariesTestAgent", dl);
+  cta::objectstore::Agent agent(agentReference.getAgentAddress(), backend);
+  agent.initialize();
+  agent.setTimeout_us(0);
+  agent.insertAndRegisterSelf(lc);
+  
+  //Create a logical library in the catalogue
+  const bool logicalLibraryIsDisabled = false;
+  catalogue.createLogicalLibrary(s_adminOnAdminHost, s_libraryName, logicalLibraryIsDisabled, "Create logical library");
+  
+  //Create two tapes
+  const std::string comment = "Tape comment";
+  bool notDisabled = false;
+  bool notFull = false;
+  bool notReadOnly = false;
+  catalogue::CreateTapeAttributes tape;
+  tape.vid = s_vid;
+  tape.mediaType = s_mediaType;
+  tape.vendor = s_vendor;
+  tape.logicalLibraryName = s_libraryName;
+  tape.tapePoolName = s_tapePoolName;
+  tape.full = notFull;
+  tape.disabled = notDisabled;
+  tape.readOnly = notReadOnly;
+  tape.comment = comment;
+  catalogue.createTape(s_adminOnAdminHost, tape);
+  
+  std::string vid2 = s_vid + "2";
+  tape.vid = vid2;
+  catalogue.createTape(s_adminOnAdminHost,tape);
+  
+  //Create a RetrieveQueue with the vid s_vid
+  std::string retrieveQueueAddress;
+  cta::objectstore::RootEntry re(backend);
+  {
+    cta::objectstore::ScopedExclusiveLock sel(re);
+    re.fetch();
+    retrieveQueueAddress = re.addOrGetRetrieveQueueAndCommit(s_vid,agentReference,JobQueueType::JobsToTransferForUser);
+  }
+  
+  //Create a RetrieveJob and put it in the queue s_vid
+  cta::objectstore::RetrieveQueue::JobToAdd retrieveJobToAdd;
+  retrieveJobToAdd.copyNb = 1;
+  retrieveJobToAdd.fSeq = 1;
+  retrieveJobToAdd.fileSize = 1;
+  retrieveJobToAdd.startTime = time(nullptr);
+  retrieveJobToAdd.retrieveRequestAddress = "";
+  
+  cta::objectstore::RetrieveQueue retrieveQueue1(retrieveQueueAddress,backend);
+  {
+    cta::objectstore::ScopedExclusiveLock sel(retrieveQueue1);
+    retrieveQueue1.fetch();
+    std::list<cta::objectstore::RetrieveQueue::JobToAdd> jobsToAdd({retrieveJobToAdd});
+    retrieveQueue1.addJobsAndCommit(jobsToAdd,agentReference,lc);
+  }
+  
+  //Create a second retrieve queue that will hold a job for the tape vid2
+  std::string retrieveQueue2Address;
+  {
+    cta::objectstore::ScopedExclusiveLock sel(re);
+    re.fetch();
+    retrieveQueue2Address = re.addOrGetRetrieveQueueAndCommit(vid2,agentReference,JobQueueType::JobsToTransferForUser);
+  }
+  cta::objectstore::RetrieveQueue retrieveQueue2(retrieveQueue2Address,backend);
+  {
+    cta::objectstore::ScopedExclusiveLock sel(retrieveQueue2);
+    retrieveQueue2.fetch();
+    std::list<cta::objectstore::RetrieveQueue::JobToAdd> jobsToAdd({retrieveJobToAdd});
+    retrieveQueue2.addJobsAndCommit(jobsToAdd,agentReference,lc);
+  }
+  
+  //Create an ArchiveForUser queue and put one file on it
+  std::string archiveForUserQueueAddress;
+  {
+    cta::objectstore::ScopedExclusiveLock sel(re);
+    re.fetch();
+    archiveForUserQueueAddress = re.addOrGetArchiveQueueAndCommit(s_tapePoolName,agentReference,JobQueueType::JobsToTransferForUser);
+  }
+  
+  cta::objectstore::ArchiveQueue::JobToAdd archiveJobToAdd;
+  archiveJobToAdd.archiveFileId = 1;
+  archiveJobToAdd.fileSize = 2;
+  archiveJobToAdd.startTime = time(nullptr);
+  
+  cta::objectstore::ArchiveQueue aq(archiveForUserQueueAddress,backend);
+  {
+    cta::objectstore::ScopedExclusiveLock sel(aq);
+    aq.fetch();
+    std::list<cta::objectstore::ArchiveQueue::JobToAdd> jobsToAdd({archiveJobToAdd});
+    aq.addJobsAndCommit(jobsToAdd,agentReference,lc);
+  }
+  
+  // Create an ArchiveForRepack queue and put one file on it
+  
+  std::string archiveForRepackQueueAddress;
+  {
+    cta::objectstore::ScopedExclusiveLock sel(re);
+    re.fetch();
+    archiveForRepackQueueAddress = re.addOrGetArchiveQueueAndCommit(s_tapePoolName,agentReference,JobQueueType::JobsToTransferForRepack);
+  }
+  
+  cta::objectstore::ArchiveQueue::JobToAdd repackArchiveJob;
+  repackArchiveJob.archiveFileId = 2;
+  repackArchiveJob.fileSize = 3;
+  repackArchiveJob.startTime = time(nullptr);
+  
+  cta::objectstore::ArchiveQueue repackArchiveQueue(archiveForRepackQueueAddress,backend);
+  {
+    cta::objectstore::ScopedExclusiveLock sel(repackArchiveQueue);
+    repackArchiveQueue.fetch();
+    std::list<cta::objectstore::ArchiveQueue::JobToAdd> jobsToAdd({repackArchiveJob});
+    repackArchiveQueue.addJobsAndCommit(jobsToAdd,agentReference,lc);
+  }
+  
+  auto queuesAndMountSummaries = scheduler.getQueuesAndMountSummaries(lc);
+  
+  ASSERT_EQ(4,queuesAndMountSummaries.size());
+  std::string vid = tape.vid;
+  
+  //Test the QueueAndMountSummary of the first Retrieve Queue s_vid
+  auto res = std::find_if(queuesAndMountSummaries.begin(), queuesAndMountSummaries.end(), [vid](const cta::common::dataStructures::QueueAndMountSummary & qams){
+    return qams.mountType == cta::common::dataStructures::MountType::Retrieve && qams.vid == vid; 
+  });
+  ASSERT_EQ(tape.vid,res->vid);
+  ASSERT_EQ(cta::common::dataStructures::MountType::Retrieve,res->mountType);
+  
+  vid = vid2;
+  //Test the QueueAndMountSummary of the first Retrieve Queue vid2
+  res = std::find_if(queuesAndMountSummaries.begin(), queuesAndMountSummaries.end(), [vid](const cta::common::dataStructures::QueueAndMountSummary & qams){
+    return qams.mountType == cta::common::dataStructures::MountType::Retrieve && qams.vid == vid; 
+  });
+  ASSERT_EQ(vid,res->vid);
+  ASSERT_EQ(cta::common::dataStructures::MountType::Retrieve,res->mountType);
+  
+  //Test the ArchiveForUser QueueAndMountSummary
+  std::string tapePool = s_tapePoolName;
+  res = std::find_if(queuesAndMountSummaries.begin(), queuesAndMountSummaries.end(), [tapePool](const cta::common::dataStructures::QueueAndMountSummary & qams){
+    return qams.mountType == cta::common::dataStructures::MountType::ArchiveForUser && qams.tapePool == tapePool; 
+  });
+  ASSERT_EQ(tapePool,res->tapePool);
+  ASSERT_EQ(cta::common::dataStructures::MountType::ArchiveForUser,res->mountType);
+  
+  //Test the ArchiveForRepack QueueAndMountSummary
+  res = std::find_if(queuesAndMountSummaries.begin(), queuesAndMountSummaries.end(), [tapePool](const cta::common::dataStructures::QueueAndMountSummary & qams){
+    return qams.mountType == cta::common::dataStructures::MountType::ArchiveForRepack && qams.tapePool == tapePool; 
+  });
+  ASSERT_EQ(tapePool, res->tapePool);
+  ASSERT_EQ(cta::common::dataStructures::MountType::ArchiveForRepack,res->mountType);
+}
   
 #undef TEST_MOCK_DB
 #ifdef TEST_MOCK_DB