diff --git a/cmdline/CtaAdminTextFormatter.cpp b/cmdline/CtaAdminTextFormatter.cpp
index 22ef5fec5f8d075991a2edba5cd113dbdc832c8b..f1c21580ca44ab38f490b92f2947a92ca528660e 100644
--- a/cmdline/CtaAdminTextFormatter.cpp
+++ b/cmdline/CtaAdminTextFormatter.cpp
@@ -705,7 +705,7 @@ void TextFormatter::print(const ShowQueuesItem &sq_item) {
   std::string minAge;
   std::string maxDrivesAllowed;
 
-  if(sq_item.mount_type() == ARCHIVE_FOR_USER ||
+  if(sq_item.mount_type() == ARCHIVE_FOR_USER || sq_item.mount_type() == ARCHIVE_FOR_REPACK || 
      sq_item.mount_type() == RETRIEVE) {
     priority         = std::to_string(sq_item.priority());
     minAge           = std::to_string(sq_item.min_age());
diff --git a/common/dataStructures/QueueAndMountSummary.cpp b/common/dataStructures/QueueAndMountSummary.cpp
index c636d5dda528232df75dd436a0f3d9872eb05321..4b7c81cea533bc6baed0ffb0dda3543cd122ed39 100644
--- a/common/dataStructures/QueueAndMountSummary.cpp
+++ b/common/dataStructures/QueueAndMountSummary.cpp
@@ -30,15 +30,15 @@ QueueAndMountSummary &QueueAndMountSummary::getOrCreateEntry(std::list<QueueAndM
     const common::dataStructures::VidToTapeMap &vid_to_tapeinfo)
 {
   for (auto & summary: summaryList) {
-    if ((mountType==MountType::ArchiveForUser && summary.tapePool==tapePool) ||
+    if (((mountType==MountType::ArchiveForUser || mountType==MountType::ArchiveForRepack) && summary.tapePool==tapePool) ||
         (mountType==MountType::Retrieve && summary.vid==vid))
       return summary;
   }
-  if (std::set<MountType>({MountType::ArchiveForUser, MountType::Retrieve}).count(mountType)) {
+  if (std::set<MountType>({MountType::ArchiveForUser, MountType::Retrieve, MountType::ArchiveForRepack}).count(mountType)) {
     summaryList.push_back(QueueAndMountSummary());
     summaryList.back().mountType=mountType;
     summaryList.back().tapePool=tapePool;
-    if (MountType::ArchiveForUser==mountType) {
+    if (MountType::ArchiveForUser==mountType || MountType::ArchiveForRepack == mountType) {
       summaryList.back().vid="-";
       summaryList.back().logicalLibrary="-";
     } else {
diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp
index 6622d61a38ccc0d67fbc3f97d827ad718a7c4cfc..ff904950d12a0f6895706cd3444ba3a2a0122f80 100644
--- a/scheduler/OStoreDB/OStoreDB.cpp
+++ b/scheduler/OStoreDB/OStoreDB.cpp
@@ -3212,6 +3212,7 @@ std::unique_ptr<SchedulerDatabase::ArchiveMount>
   am.mountInfo.vendor = vendor;
   am.mountInfo.mountId = m_schedulerGlobalLock->getIncreaseCommitMountId();
   am.mountInfo.capacityInBytes = capacityInBytes;
+  am.mountInfo.mountType = type;
   m_schedulerGlobalLock->commit();
   am.mountInfo.tapePool = tape.tapePool;
   am.mountInfo.logicalLibrary = logicalLibrary;
@@ -3225,7 +3226,7 @@ std::unique_ptr<SchedulerDatabase::ArchiveMount>
     driveInfo.logicalLibrary=logicalLibrary;
     driveInfo.host=hostName;
     ReportDriveStatusInputs inputs;
-    inputs.mountType = common::dataStructures::MountType::ArchiveForUser;
+    inputs.mountType = type;// common::dataStructures::MountType::ArchiveForUser;
     inputs.byteTransferred = 0;
     inputs.filesTransferred = 0;
     inputs.latestBandwidth = 0;
@@ -3678,7 +3679,7 @@ void OStoreDB::ArchiveMount::setDriveStatus(cta::common::dataStructures::DriveSt
   driveInfo.logicalLibrary=mountInfo.logicalLibrary;
   driveInfo.host=mountInfo.host;
   ReportDriveStatusInputs inputs;
-  inputs.mountType = common::dataStructures::MountType::ArchiveForUser;
+  inputs.mountType = m_queueType == JobQueueType::JobsToTransferForUser ? common::dataStructures::MountType::ArchiveForUser : common::dataStructures::MountType::ArchiveForRepack;
   inputs.mountSessionId = mountInfo.mountId;
   inputs.reportTime = completionTime;
   inputs.status = status;
diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp
index 8d561cc92ed42f21ca935969d13adbe27b3b9f7f..eb40949d9d05deb89c5b7a9816c604ab1cbefbc9 100644
--- a/scheduler/Scheduler.cpp
+++ b/scheduler/Scheduler.cpp
@@ -1333,6 +1333,7 @@ std::list<common::dataStructures::QueueAndMountSummary> Scheduler::getQueuesAndM
     auto &summary = common::dataStructures::QueueAndMountSummary::getOrCreateEntry(ret, pm.type, pm.tapePool, pm.vid, vid_to_tapeinfo);
     switch (pm.type) {
     case common::dataStructures::MountType::ArchiveForUser:
+    case common::dataStructures::MountType::ArchiveForRepack:
       summary.mountPolicy.archivePriority = pm.priority;
       summary.mountPolicy.archiveMinRequestAge = pm.minRequestAge;
       summary.mountPolicy.maxDrivesAllowed = pm.maxDrivesAllowed;
@@ -1357,6 +1358,7 @@ std::list<common::dataStructures::QueueAndMountSummary> Scheduler::getQueuesAndM
     auto &summary = common::dataStructures::QueueAndMountSummary::getOrCreateEntry(ret, em.type, em.tapePool, em.vid, vid_to_tapeinfo);
     switch (em.type) {
     case common::dataStructures::MountType::ArchiveForUser:
+    case common::dataStructures::MountType::ArchiveForRepack:
     case common::dataStructures::MountType::Retrieve:
       if (em.currentMount) 
         summary.currentMounts++;
@@ -1373,7 +1375,7 @@ std::list<common::dataStructures::QueueAndMountSummary> Scheduler::getQueuesAndM
   mountDecisionInfo.reset();
   // Add the tape information where useful (archive queues).
   for (auto & mountOrQueue: ret) {
-    if (common::dataStructures::MountType::ArchiveForUser==mountOrQueue.mountType) {
+    if (common::dataStructures::MountType::ArchiveForUser==mountOrQueue.mountType || common::dataStructures::MountType::ArchiveForRepack==mountOrQueue.mountType) {
       // Get all the tape for this pool
       cta::catalogue::TapeSearchCriteria tsc;
       tsc.tapePool = mountOrQueue.tapePool;
diff --git a/scheduler/SchedulerDatabase.hpp b/scheduler/SchedulerDatabase.hpp
index dc021f69c2f7def9555f4c1bf602323530ed4d17..23dde264afe4ed7c9af32d5d81b84fae51e9f860 100644
--- a/scheduler/SchedulerDatabase.hpp
+++ b/scheduler/SchedulerDatabase.hpp
@@ -157,6 +157,7 @@ public:
       std::string host;
       uint64_t mountId;
       uint64_t capacityInBytes;
+      cta::common::dataStructures::MountType mountType;
     } mountInfo;
     virtual const MountInfo & getMountInfo() = 0;
     virtual std::list<std::unique_ptr<ArchiveJob>> getNextJobBatch(uint64_t filesRequested,
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp
index 66806fa0f41061ab8e87f57926f87088c540e351..00946f255692412687b12c5a6b993f8d4bd73d54 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp
@@ -544,7 +544,8 @@ const char *castor::tape::tapeserver::daemon::DataTransferSession::
   mountTypeToString(const cta::common::dataStructures::MountType mountType) const throw() {
   switch(mountType) {
   case cta::common::dataStructures::MountType::Retrieve: return "Retrieve";
-  case cta::common::dataStructures::MountType::ArchiveForUser : return "Archive";
+  case cta::common::dataStructures::MountType::ArchiveForUser : return "ArchiveForUser";
+  case cta::common::dataStructures::MountType::ArchiveForRepack : return "ArchiveForRepack";
   case cta::common::dataStructures::MountType::Label: return "Label";
   default                      : return "UNKNOWN";
   }
diff --git a/xroot_plugins/XrdCtaShowQueues.hpp b/xroot_plugins/XrdCtaShowQueues.hpp
index f53cb48e1d501ed111d07eff90691a38b1d610b7..72bfd88cabe01439be4705414fa8277085350b23 100644
--- a/xroot_plugins/XrdCtaShowQueues.hpp
+++ b/xroot_plugins/XrdCtaShowQueues.hpp
@@ -77,6 +77,7 @@ int ShowQueuesStream::fillBuffer(XrdSsiPb::OStreamBuffer<Data> *streambuf) {
     auto  sq_item = record.mutable_sq_item();
 
     switch(sq.mountType) {
+      case common::dataStructures::MountType::ArchiveForRepack:
       case common::dataStructures::MountType::ArchiveForUser:
         sq_item->set_priority(sq.mountPolicy.archivePriority);
         sq_item->set_min_age(sq.mountPolicy.archiveMinRequestAge);