From e07e5214df228788f173479875fd1d8ba46ea4c3 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Fri, 7 Mar 2025 14:01:18 +0100
Subject: [PATCH 01/12] First draft

---
 catalogue/dummy/DummyTapePoolCatalogue.cpp    |  5 ++++
 catalogue/dummy/DummyTapePoolCatalogue.hpp    |  3 +++
 catalogue/interfaces/TapePoolCatalogue.hpp    |  3 +++
 catalogue/rdbms/RdbmsTapePoolCatalogue.cpp    | 26 +++++++++++++++++++
 catalogue/rdbms/RdbmsTapePoolCatalogue.hpp    |  3 +++
 .../TapePoolCatalogueRetryWrapper.hpp         |  3 +++
 .../TapePoolRetryCatalogueWrapper.cpp         |  7 +++++
 frontend/common/AdminCmd.cpp                  |  1 +
 8 files changed, 51 insertions(+)

diff --git a/catalogue/dummy/DummyTapePoolCatalogue.cpp b/catalogue/dummy/DummyTapePoolCatalogue.cpp
index 12d17d056e..3be6402270 100644
--- a/catalogue/dummy/DummyTapePoolCatalogue.cpp
+++ b/catalogue/dummy/DummyTapePoolCatalogue.cpp
@@ -67,6 +67,11 @@ void DummyTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures:
   throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented");
 }
 
+void DummyTapePoolCatalogue::modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
+  const std::string &name, const std::string &encryptionKeyName) {
+  throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented");
+}
+
 void DummyTapePoolCatalogue::modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                                                   const std::string& name,
                                                   const std::list<std::string>& supply_list) {
diff --git a/catalogue/dummy/DummyTapePoolCatalogue.hpp b/catalogue/dummy/DummyTapePoolCatalogue.hpp
index d45b165fce..46b05bc2ca 100644
--- a/catalogue/dummy/DummyTapePoolCatalogue.hpp
+++ b/catalogue/dummy/DummyTapePoolCatalogue.hpp
@@ -52,6 +52,9 @@ public:
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
     const bool encryptionValue) override;
 
+  void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
+    const std::string &name, const std::string &encryptionKeyName) override;
+
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
                             const std::list<std::string>& supply_list) override;
diff --git a/catalogue/interfaces/TapePoolCatalogue.hpp b/catalogue/interfaces/TapePoolCatalogue.hpp
index cb7c1045bc..b08bf4d0ee 100644
--- a/catalogue/interfaces/TapePoolCatalogue.hpp
+++ b/catalogue/interfaces/TapePoolCatalogue.hpp
@@ -70,6 +70,9 @@ public:
   virtual void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
     const bool encryptionValue) = 0;
 
+  virtual void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
+    const std::string &name, const std::string &encryptionKeyName) = 0;
+
   virtual void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                                     const std::string& name,
                                     const std::list<std::string>& supply_list) = 0;
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
index 402768d097..264dfee547 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
@@ -626,6 +626,32 @@ void RdbmsTapePoolCatalogue::modifyTapePoolComment(const common::dataStructures:
   }
 }
 
+void RdbmsTapePoolCatalogue::modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
+  const std::string &name, const std::string &encryptionKeyName) {
+    const time_t now = time(nullptr);
+    const char* const sql = R"SQL(
+    UPDATE TAPE_POOL SET
+      ENCRYPTION_KEY_NAME = :ENCRYPTION_KEY_NAME,
+      LAST_UPDATE_USER_NAME = :LAST_UPDATE_USER_NAME,
+      LAST_UPDATE_HOST_NAME = :LAST_UPDATE_HOST_NAME,
+      LAST_UPDATE_TIME = :LAST_UPDATE_TIME
+    WHERE
+      TAPE_POOL_NAME = :TAPE_POOL_NAME
+  )SQL";
+  auto conn = m_connPool->getConn();
+  auto stmt = conn.createStmt(sql);
+  stmt.bindString(":ENCRYPTION_KEY_NAME", encryptionKeyName);
+  stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username);
+  stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host);
+  stmt.bindUint64(":LAST_UPDATE_TIME", now);
+  stmt.bindString(":TAPE_POOL_NAME", name);
+  stmt.executeNonQuery();
+
+  if(0 == stmt.getNbAffectedRows()) {
+    throw exception::UserError(std::string("Cannot modify tape pool '") + name + "' because it does not exist");
+  }
+}
+
 void RdbmsTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin,
   const std::string &name, const bool encryptionValue) {
   const time_t now = time(nullptr);
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
index 5312753fd5..58c2d40006 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
@@ -64,6 +64,9 @@ public:
   void modifyTapePoolComment(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
     const std::string &comment) override;
 
+  void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
+    const std::string &name, const std::string &encryptionKeyName) override;
+
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
     const bool encryptionValue) override;
 
diff --git a/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp b/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
index 4cb95971a3..9e9140d87f 100644
--- a/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
+++ b/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
@@ -60,6 +60,9 @@ public:
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
     const bool encryptionValue) override;
 
+  void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
+    const std::string &name, const std::string &encryptionKeyName) override;
+
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
                             const std::list<std::string>& supply_list) override;
diff --git a/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp b/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
index d96f9f56e3..1285f31efc 100644
--- a/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
+++ b/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
@@ -91,6 +91,13 @@ void TapePoolCatalogueRetryWrapper::setTapePoolEncryption(const common::dataStru
   }, m_maxTriesToConnect);
 }
 
+void TapePoolCatalogueRetryWrapper::modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
+  const std::string &name, const std::string &encryptionKeyName) {
+  return retryOnLostConnection(m_log, [this,&admin,&name,&encryptionKeyName] {
+    return m_catalogue->TapePool()->modifyTapeEncryptionKeyName(admin, name, encryptionKeyName);
+  }, m_maxTriesToConnect);
+}
+
 void TapePoolCatalogueRetryWrapper::modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                                                          const std::string& name,
                                                          const std::list<std::string>& supply_list) {
diff --git a/frontend/common/AdminCmd.cpp b/frontend/common/AdminCmd.cpp
index 79d0402fcb..a5679aab01 100644
--- a/frontend/common/AdminCmd.cpp
+++ b/frontend/common/AdminCmd.cpp
@@ -1261,6 +1261,7 @@ void AdminCmd::processTapePool_Ch(xrd::Response& response) {
   if(encrypted) {
     m_catalogue.TapePool()->setTapePoolEncryption(m_cliIdentity, name, encrypted.value());
   }
+  modifyTapeEncryptionKeyName
   if(supply) {
     m_catalogue.TapePool()->modifyTapePoolSupply(m_cliIdentity, name,
                                                  cta::utils::commaSeparatedStringToList(supply.value()));
-- 
GitLab


From bcb4a699579bc60fd0d1a250a907a04e27d2e336 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Tue, 18 Mar 2025 18:15:19 +0100
Subject: [PATCH 02/12] Adding support for --encryptionkeyname parameter

---
 catalogue/TapePool.hpp                        |   5 +
 catalogue/dummy/DummyTapePoolCatalogue.cpp    |   9 +-
 catalogue/dummy/DummyTapePoolCatalogue.hpp    |   7 +-
 catalogue/interfaces/TapePoolCatalogue.hpp    |   7 +-
 catalogue/rdbms/RdbmsTapePoolCatalogue.cpp    |  52 ++--
 catalogue/rdbms/RdbmsTapePoolCatalogue.hpp    |   7 +-
 .../TapePoolCatalogueRetryWrapper.hpp         |   7 +-
 .../TapePoolRetryCatalogueWrapper.cpp         |  19 +-
 .../modules/ArchiveFileCatalogueTest.cpp      | 112 ++++----
 .../modules/ArchiveRouteCatalogueTest.cpp     |  60 ++--
 .../modules/FileRecycleLogCatalogueTest.cpp   |  50 ++--
 .../modules/LogicalLibraryCatalogueTest.cpp   |  12 +-
 .../tests/modules/MediaTypeCatalogueTest.cpp  |   8 +-
 catalogue/tests/modules/TapeCatalogueTest.cpp | 266 +++++++++---------
 .../tests/modules/TapeFileCatalogueTest.cpp   |  52 ++--
 .../tests/modules/TapePoolCatalogueTest.cpp   | 226 ++++++++-------
 .../VirtualOrganizationCatalogueTest.cpp      |  20 +-
 cmdline/CtaAdminCmdParse.hpp                  |   3 +-
 cmdline/blah                                  |  16 ++
 frontend/common/AdminCmd.cpp                  |  44 +--
 scheduler/SchedulerTest.cpp                   |  24 +-
 .../daemon/DataTransferSessionTest.cpp        |   4 +-
 .../daemon/MigrationReportPackerTest.cpp      |   7 +-
 23 files changed, 523 insertions(+), 494 deletions(-)
 create mode 100644 cmdline/blah

diff --git a/catalogue/TapePool.hpp b/catalogue/TapePool.hpp
index bf0fbe2c70..0563c72fd3 100644
--- a/catalogue/TapePool.hpp
+++ b/catalogue/TapePool.hpp
@@ -74,6 +74,11 @@ struct TapePool {
    */
   bool encryption = false;
 
+  /**
+ * Tape pool encryption key name.
+ */
+  std::optional<std::string> encryptionKeyName;
+
   /**
    * The total number of tapes in the pool.
    */
diff --git a/catalogue/dummy/DummyTapePoolCatalogue.cpp b/catalogue/dummy/DummyTapePoolCatalogue.cpp
index 3be6402270..3956871b91 100644
--- a/catalogue/dummy/DummyTapePoolCatalogue.cpp
+++ b/catalogue/dummy/DummyTapePoolCatalogue.cpp
@@ -29,7 +29,7 @@ void DummyTapePoolCatalogue::createTapePool(const common::dataStructures::Securi
                                             const std::string& name,
                                             const std::string& vo,
                                             const uint64_t nbPartialTapes,
-                                            const bool encryptionValue,
+                                            const std::optional<std::string>& encryptionKeyNameOpt,
                                             const std::list<std::string>& supply_list,
                                             const std::string& comment) {
   throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented");
@@ -63,12 +63,7 @@ void DummyTapePoolCatalogue::modifyTapePoolComment(const common::dataStructures:
 }
 
 void DummyTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const bool encryptionValue) {
-  throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented");
-}
-
-void DummyTapePoolCatalogue::modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const std::string &encryptionKeyName) {
+  const std::string &name, const std::optional<std::string>& encryptionKeyNameOpt) {
   throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented");
 }
 
diff --git a/catalogue/dummy/DummyTapePoolCatalogue.hpp b/catalogue/dummy/DummyTapePoolCatalogue.hpp
index 46b05bc2ca..c6c097fac0 100644
--- a/catalogue/dummy/DummyTapePoolCatalogue.hpp
+++ b/catalogue/dummy/DummyTapePoolCatalogue.hpp
@@ -30,7 +30,7 @@ public:
                       const std::string& name,
                       const std::string& vo,
                       const uint64_t nbPartialTapes,
-                      const bool encryptionValue,
+                      const std::optional<std::string>& encryptionKeyNameOpt,
                       const std::list<std::string>& supply_list,
                       const std::string& comment) override;
 
@@ -50,10 +50,7 @@ public:
     const std::string &comment) override;
 
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const bool encryptionValue) override;
-
-  void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
-    const std::string &name, const std::string &encryptionKeyName) override;
+    const std::optional<std::string>& encryptionKeyNameOpt) override;
 
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
diff --git a/catalogue/interfaces/TapePoolCatalogue.hpp b/catalogue/interfaces/TapePoolCatalogue.hpp
index b08bf4d0ee..b7753a2060 100644
--- a/catalogue/interfaces/TapePoolCatalogue.hpp
+++ b/catalogue/interfaces/TapePoolCatalogue.hpp
@@ -47,7 +47,7 @@ public:
                               const std::string& name,
                               const std::string& vo,
                               const uint64_t nbPartialTapes,
-                              const bool encryptionValue,
+                              const std::optional<std::string>& encryptionKeyNameOpt,
                               const std::list<std::string>& supply_list,
                               const std::string& comment) = 0;
 
@@ -68,10 +68,7 @@ public:
     const std::string &comment) = 0;
 
   virtual void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const bool encryptionValue) = 0;
-
-  virtual void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
-    const std::string &name, const std::string &encryptionKeyName) = 0;
+    const std::optional<std::string>& encryptionKeyNameOpt) = 0;
 
   virtual void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                                     const std::string& name,
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
index 264dfee547..2a1aead30b 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
@@ -46,7 +46,7 @@ void RdbmsTapePoolCatalogue::createTapePool(const common::dataStructures::Securi
                                             const std::string& name,
                                             const std::string& vo,
                                             const uint64_t nbPartialTapes,
-                                            const bool encryptionValue,
+                                            const std::optional<std::string>& encryptionKeyNameOpt,
                                             const std::list<std::string>& supply_list,
                                             const std::string& comment) {
   if(name.empty()) {
@@ -100,6 +100,7 @@ void RdbmsTapePoolCatalogue::createTapePool(const common::dataStructures::Securi
       VIRTUAL_ORGANIZATION_ID,
       NB_PARTIAL_TAPES,
       IS_ENCRYPTED,
+      ENCRYPTION_KEY_NAME,
       SUPPLY,
 
       USER_COMMENT,
@@ -117,6 +118,7 @@ void RdbmsTapePoolCatalogue::createTapePool(const common::dataStructures::Securi
       VIRTUAL_ORGANIZATION_ID,
       :NB_PARTIAL_TAPES,
       :IS_ENCRYPTED,
+      :ENCRYPTION_KEY_NAME,
       :SUPPLY,
 
       :USER_COMMENT,
@@ -135,11 +137,14 @@ void RdbmsTapePoolCatalogue::createTapePool(const common::dataStructures::Securi
   )SQL";
   auto stmt = conn.createStmt(sql);
 
+  bool isEncrypted = encryptionKeyNameOpt.has_value();
+
   stmt.bindUint64(":TAPE_POOL_ID", tapePoolId);
   stmt.bindString(":TAPE_POOL_NAME", name);
   stmt.bindString(":VO", vo);
   stmt.bindUint64(":NB_PARTIAL_TAPES", nbPartialTapes);
-  stmt.bindBool(":IS_ENCRYPTED", encryptionValue);
+  stmt.bindBool(":IS_ENCRYPTED", isEncrypted);
+  stmt.bindString(":ENCRYPTION_KEY_NAME", encryptionKeyNameOpt);
   stmt.bindString(":SUPPLY", optionalSupplyString);
 
   stmt.bindString(":USER_COMMENT", trimmedComment);
@@ -279,6 +284,7 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
       VIRTUAL_ORGANIZATION.VIRTUAL_ORGANIZATION_NAME AS VO,
       TAPE_POOL.NB_PARTIAL_TAPES AS NB_PARTIAL_TAPES,
       TAPE_POOL.IS_ENCRYPTED AS IS_ENCRYPTED,
+      TAPE_POOL.ENCRYPTION_KEY_NAME AS ENCRYPTION_KEY_NAME,
       TAPE_POOL.SUPPLY AS SUPPLY,
 
       COALESCE(COUNT(TAPE.VID), 0) AS NB_TAPES,
@@ -347,6 +353,7 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
       VIRTUAL_ORGANIZATION.VIRTUAL_ORGANIZATION_NAME,
       TAPE_POOL.NB_PARTIAL_TAPES,
       TAPE_POOL.IS_ENCRYPTED,
+      TAPE_POOL.ENCRYPTION_KEY_NAME,
       TAPE_POOL.SUPPLY,
       TAPE_POOL.USER_COMMENT,
       TAPE_POOL.CREATION_LOG_USER_NAME,
@@ -382,6 +389,7 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
     pool.vo.name = rset.columnString("VO");
     pool.nbPartialTapes = rset.columnUint64("NB_PARTIAL_TAPES");
     pool.encryption = rset.columnBool("IS_ENCRYPTED");
+    pool.encryptionKeyName = rset.columnOptionalString("ENCRYPTION_KEY_NAME");
     pool.supply = rset.columnOptionalString("SUPPLY");
     pool.nbTapes = rset.columnUint64("NB_TAPES");
     pool.nbEmptyTapes = rset.columnUint64("NB_EMPTY_TAPES");
@@ -426,6 +434,7 @@ std::optional<TapePool> RdbmsTapePoolCatalogue::getTapePool(const std::string &t
       VIRTUAL_ORGANIZATION.VIRTUAL_ORGANIZATION_NAME AS VO,
       TAPE_POOL.NB_PARTIAL_TAPES AS NB_PARTIAL_TAPES,
       TAPE_POOL.IS_ENCRYPTED AS IS_ENCRYPTED,
+      TAPE_POOL.ENCRYPTION_KEY_NAME AS ENCRYPTION_KEY_NAME,
       TAPE_POOL.SUPPLY AS SUPPLY,
 
       COALESCE(COUNT(TAPE.VID), 0) AS NB_TAPES,
@@ -459,6 +468,7 @@ std::optional<TapePool> RdbmsTapePoolCatalogue::getTapePool(const std::string &t
       VIRTUAL_ORGANIZATION.VIRTUAL_ORGANIZATION_NAME,
       TAPE_POOL.NB_PARTIAL_TAPES,
       TAPE_POOL.IS_ENCRYPTED,
+      TAPE_POOL.ENCRYPTION_KEY_NAME,
       TAPE_POOL.SUPPLY,
       TAPE_POOL.USER_COMMENT,
       TAPE_POOL.CREATION_LOG_USER_NAME,
@@ -490,6 +500,7 @@ std::optional<TapePool> RdbmsTapePoolCatalogue::getTapePool(const std::string &t
     pool.vo.name = rset.columnString("VO");
     pool.nbPartialTapes = rset.columnUint64("NB_PARTIAL_TAPES");
     pool.encryption = rset.columnBool("IS_ENCRYPTED");
+    pool.encryptionKeyName = rset.columnOptionalString("ENCRYPTION_KEY_NAME");
     pool.supply = rset.columnOptionalString("SUPPLY");
     pool.nbTapes = rset.columnUint64("NB_TAPES");
     pool.nbEmptyTapes = rset.columnUint64("NB_EMPTY_TAPES");
@@ -626,37 +637,12 @@ void RdbmsTapePoolCatalogue::modifyTapePoolComment(const common::dataStructures:
   }
 }
 
-void RdbmsTapePoolCatalogue::modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const std::string &encryptionKeyName) {
-    const time_t now = time(nullptr);
-    const char* const sql = R"SQL(
-    UPDATE TAPE_POOL SET
-      ENCRYPTION_KEY_NAME = :ENCRYPTION_KEY_NAME,
-      LAST_UPDATE_USER_NAME = :LAST_UPDATE_USER_NAME,
-      LAST_UPDATE_HOST_NAME = :LAST_UPDATE_HOST_NAME,
-      LAST_UPDATE_TIME = :LAST_UPDATE_TIME
-    WHERE
-      TAPE_POOL_NAME = :TAPE_POOL_NAME
-  )SQL";
-  auto conn = m_connPool->getConn();
-  auto stmt = conn.createStmt(sql);
-  stmt.bindString(":ENCRYPTION_KEY_NAME", encryptionKeyName);
-  stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username);
-  stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host);
-  stmt.bindUint64(":LAST_UPDATE_TIME", now);
-  stmt.bindString(":TAPE_POOL_NAME", name);
-  stmt.executeNonQuery();
-
-  if(0 == stmt.getNbAffectedRows()) {
-    throw exception::UserError(std::string("Cannot modify tape pool '") + name + "' because it does not exist");
-  }
-}
-
 void RdbmsTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const bool encryptionValue) {
+  const std::string &name, const std::optional<std::string>& encryptionKeyNameOpt) {
   const time_t now = time(nullptr);
   const char* const sql = R"SQL(
-    UPDATE TAPE_POOL SET 
+    UPDATE TAPE_POOL SET
+      ENCRYPTION_KEY_NAME = :ENCRYPTION_KEY_NAME,
       IS_ENCRYPTED = :IS_ENCRYPTED,
       LAST_UPDATE_USER_NAME = :LAST_UPDATE_USER_NAME,
       LAST_UPDATE_HOST_NAME = :LAST_UPDATE_HOST_NAME,
@@ -664,9 +650,13 @@ void RdbmsTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures:
     WHERE 
       TAPE_POOL_NAME = :TAPE_POOL_NAME
   )SQL";
+
+  bool isEncrypted = encryptionKeyNameOpt.has_value();
+
   auto conn = m_connPool->getConn();
   auto stmt = conn.createStmt(sql);
-  stmt.bindBool(":IS_ENCRYPTED", encryptionValue);
+  stmt.bindString(":ENCRYPTION_KEY_NAME", encryptionKeyNameOpt);
+  stmt.bindBool(":IS_ENCRYPTED", isEncrypted);
   stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username);
   stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host);
   stmt.bindUint64(":LAST_UPDATE_TIME", now);
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
index 58c2d40006..9908ee89f6 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
@@ -45,7 +45,7 @@ public:
                       const std::string& name,
                       const std::string& vo,
                       const uint64_t nbPartialTapes,
-                      const bool encryptionValue,
+                      const std::optional<std::string>& encryptionKeyNameOpt,
                       const std::list<std::string>& supply_list,
                       const std::string& comment) override;
 
@@ -64,11 +64,8 @@ public:
   void modifyTapePoolComment(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
     const std::string &comment) override;
 
-  void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
-    const std::string &name, const std::string &encryptionKeyName) override;
-
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const bool encryptionValue) override;
+    const std::optional<std::string>& encryptionKeyNameOpt) override;
 
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
diff --git a/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp b/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
index 9e9140d87f..be1ccb1b0a 100644
--- a/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
+++ b/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
@@ -38,7 +38,7 @@ public:
                       const std::string& name,
                       const std::string& vo,
                       const uint64_t nbPartialTapes,
-                      const bool encryptionValue,
+                      const std::optional<std::string>& encryptionKeyNameOpt,
                       const std::list<std::string>& supply_list,
                       const std::string& comment) override;
 
@@ -58,10 +58,7 @@ public:
     const std::string &comment) override;
 
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const bool encryptionValue) override;
-
-  void modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
-    const std::string &name, const std::string &encryptionKeyName) override;
+    const std::optional<std::string>& encryptionKeyNameOpt) override;
 
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
diff --git a/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp b/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
index 1285f31efc..e7c0cea655 100644
--- a/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
+++ b/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
@@ -33,13 +33,13 @@ void TapePoolCatalogueRetryWrapper::createTapePool(const common::dataStructures:
                                                    const std::string& name,
                                                    const std::string& vo,
                                                    const uint64_t nbPartialTapes,
-                                                   const bool encryptionValue,
+                                                   const std::optional<std::string>& encryptionKeyNameOpt,
                                                    const std::list<std::string>& supply_list,
                                                    const std::string& comment) {
   return retryOnLostConnection(
     m_log,
-    [this, &admin, &name, &vo, &nbPartialTapes, &encryptionValue, &supply_list, &comment] {
-      return m_catalogue->TapePool()->createTapePool(admin, name, vo, nbPartialTapes, encryptionValue, supply_list,
+    [this, &admin, &name, &vo, &nbPartialTapes, &encryptionKeyNameOpt, &supply_list, &comment] {
+      return m_catalogue->TapePool()->createTapePool(admin, name, vo, nbPartialTapes, encryptionKeyNameOpt, supply_list,
                                                      comment);
     },
     m_maxTriesToConnect);
@@ -85,16 +85,9 @@ void TapePoolCatalogueRetryWrapper::modifyTapePoolComment(const common::dataStru
 }
 
 void TapePoolCatalogueRetryWrapper::setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const bool encryptionValue) {
-  return retryOnLostConnection(m_log, [this,&admin,&name,&encryptionValue] {
-    return m_catalogue->TapePool()->setTapePoolEncryption(admin, name, encryptionValue);
-  }, m_maxTriesToConnect);
-}
-
-void TapePoolCatalogueRetryWrapper::modifyTapeEncryptionKeyName(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const std::string &encryptionKeyName) {
-  return retryOnLostConnection(m_log, [this,&admin,&name,&encryptionKeyName] {
-    return m_catalogue->TapePool()->modifyTapeEncryptionKeyName(admin, name, encryptionKeyName);
+  const std::string &name, const std::optional<std::string>& encryptionKeyNameOpt) {
+  return retryOnLostConnection(m_log, [this,&admin,&name,&encryptionKeyNameOpt] {
+    return m_catalogue->TapePool()->setTapePoolEncryption(admin, name, encryptionKeyNameOpt);
   }, m_maxTriesToConnect);
 }
 
diff --git a/catalogue/tests/modules/ArchiveFileCatalogueTest.cpp b/catalogue/tests/modules/ArchiveFileCatalogueTest.cpp
index c443f2864f..7ad78e9e3b 100644
--- a/catalogue/tests/modules/ArchiveFileCatalogueTest.cpp
+++ b/catalogue/tests/modules/ArchiveFileCatalogueTest.cpp
@@ -111,9 +111,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, checkAndGetNextArchiveFileId_no_mount_rule
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   const uint32_t copyNb = 1;
@@ -177,9 +177,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, checkAndGetNextArchiveFileId_after_cached_
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   const uint32_t copyNb = 1;
@@ -255,9 +255,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, checkAndGetNextArchiveFileId_requester_mou
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string archiveRouteComment = "Create archive route";
@@ -325,9 +325,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, checkAndGetNextArchiveFileId_requester_gro
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string archiveRouteComment = "Create archive route";
@@ -395,9 +395,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, checkAndGetNextArchiveFileId_after_cached_
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string archiveRouteComment = "Create archive route";
@@ -491,9 +491,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, checkAndGetNextArchiveFileId_requester_mou
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   const uint32_t copyNb = 1;
@@ -598,9 +598,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, getArchiveFileQueueCriteria_requester_moun
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string archiveRouteComment = "Create archive route";
@@ -661,9 +661,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, getArchiveFileQueueCriteria_requester_grou
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string archiveRouteComment = "Create archive route";
@@ -740,9 +740,9 @@ TEST_P(cta_catalogue_ArchiveFileTest, getArchiveFileQueueCriteria_requester_moun
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string archiveRouteComment = "Create archive route";
@@ -840,7 +840,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, getArchiveFiles_non_existent_vid) {
 TEST_P(cta_catalogue_ArchiveFileTest, updateDiskFileId) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -851,7 +851,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, updateDiskFileId) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
@@ -988,7 +988,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_many_archive_files) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -998,7 +998,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_many_archive_files) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -1015,7 +1015,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_many_archive_files) {
     ASSERT_EQ(0, pool.nbPhysicalFiles);
   }
 
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(2, pools.size());
@@ -2121,7 +2121,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, DISABLED_concurrent_filesWrittenToTape_man
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -2131,7 +2131,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, DISABLED_concurrent_filesWrittenToTape_man
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -2148,7 +2148,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, DISABLED_concurrent_filesWrittenToTape_man
     ASSERT_EQ(0, pool.nbPhysicalFiles);
   }
 
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(2, pools.size());
@@ -2815,7 +2815,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, DISABLED_concurrent_filesWrittenToTape_man
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_1_tape_copy) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -2824,7 +2824,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_1_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
   {
@@ -2932,7 +2932,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_1_tape_c
   const std::string diskInstance = m_diskInstance.name;
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   std::optional<std::string> physicalLibraryName;
 
@@ -2940,7 +2940,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_1_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -3053,7 +3053,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_file_recycle_log_dele
   const std::string diskInstance = m_diskInstance.name;
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   std::optional<std::string> physicalLibraryName;
 
@@ -3061,7 +3061,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_file_recycle_log_dele
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -3138,7 +3138,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_file_recycle_log_dele
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_copies) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -3147,7 +3147,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
@@ -3349,7 +3349,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_copies_same_copy_number) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -3358,7 +3358,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
 
@@ -3547,7 +3547,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_copies_same_copy_number_same_tape) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -3556,7 +3556,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -3721,7 +3721,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_copies_same_fseq_same_tape) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -3730,7 +3730,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
@@ -3855,7 +3855,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_copies_different_sizes) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -3864,7 +3864,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
@@ -4017,7 +4017,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_copies_different_checksum_types) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -4026,7 +4026,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
@@ -4179,7 +4179,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
 TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_copies_different_checksum_values) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -4188,7 +4188,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
@@ -4340,7 +4340,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, filesWrittenToTape_1_archive_file_2_tape_c
 TEST_P(cta_catalogue_ArchiveFileTest, deleteArchiveFile) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -4349,7 +4349,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, deleteArchiveFile) {
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
@@ -4625,7 +4625,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, deleteArchiveFile) {
 TEST_P(cta_catalogue_ArchiveFileTest, deleteArchiveFile_by_archive_file_id_of_another_disk_instance) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -4634,7 +4634,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, deleteArchiveFile_by_archive_file_id_of_an
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
@@ -4929,11 +4929,11 @@ TEST_P(cta_catalogue_ArchiveFileTest, getArchiveFileQueueCriteria_ignore_repack_
   const std::string tapePoolName_repack_1 = "tape_pool_repack_1";
   const std::string tapePoolName_default_2 = "tape_pool_default_2";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_default_1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool for default 1");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_repack_1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool for repack 1");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_default_2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool for default 2");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_default_1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool for default 1");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_repack_1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool for repack 1");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_default_2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool for default 2");
 
   ASSERT_TRUE(m_catalogue->ArchiveRoute()->getArchiveRoutes().empty());
 
@@ -4991,7 +4991,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, getArchiveFileQueueCriteria_ignore_repack_
 TEST_P(cta_catalogue_ArchiveFileTest, getTapesWithMissingTapeFileCopies) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -5000,7 +5000,7 @@ TEST_P(cta_catalogue_ArchiveFileTest, getTapesWithMissingTapeFileCopies) {
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
   m_catalogue->Tape()->createTape(m_admin, m_tape3);
diff --git a/catalogue/tests/modules/ArchiveRouteCatalogueTest.cpp b/catalogue/tests/modules/ArchiveRouteCatalogueTest.cpp
index b6ff1e11d2..84690c672b 100644
--- a/catalogue/tests/modules/ArchiveRouteCatalogueTest.cpp
+++ b/catalogue/tests/modules/ArchiveRouteCatalogueTest.cpp
@@ -54,9 +54,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute) {
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -111,9 +111,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute_emptyStringStorageClas
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const std::string storageClassName = "";
   const uint32_t copyNb = 1;
@@ -128,9 +128,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute_zeroCopyNb) {
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 0;
   const std::string comment = "Create archive route";
@@ -156,9 +156,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute_emptyStringComment) {
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "";
@@ -170,11 +170,11 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute_non_existent_storage_c
   const std::string storageClassName = "storage_class";
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -200,9 +200,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute_same_twice) {
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -216,9 +216,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute_two_routes_same_pool)
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb1 = 1;
   const std::string comment1 = "Create archive route for copy 1";
@@ -235,9 +235,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, deleteArchiveRoute) {
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -275,9 +275,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, createArchiveRoute_deleteStorageClass) {
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -310,12 +310,12 @@ TEST_P(cta_catalogue_ArchiveRouteTest, modifyArchiveRouteTapePoolName) {
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const std::string anotherTapePoolName = "another_tape_pool";
-  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create another tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create another tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -365,12 +365,12 @@ TEST_P(cta_catalogue_ArchiveRouteTest, modifyArchiveRouteTapePoolName_nonExisten
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const std::string anotherTapePoolName = "another_tape_pool";
-  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create another tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create another tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -404,9 +404,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, modifyArchiveRouteTapePoolName_nonExisten
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   ASSERT_THROW(m_catalogue->ArchiveRoute()->modifyArchiveRouteTapePoolName(m_admin, m_storageClassSingleCopy.name, copyNb, cta::common::dataStructures::ArchiveRouteType::DEFAULT, m_tape1.tapePoolName), cta::catalogue::UserSpecifiedANonExistentArchiveRoute);
@@ -418,9 +418,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, modifyArchiveRouteComment) {
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Create archive route";
@@ -471,9 +471,9 @@ TEST_P(cta_catalogue_ArchiveRouteTest, modifyArchiveRouteComment_nonExistentArch
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t copyNb = 1;
   const std::string comment = "Comment";
diff --git a/catalogue/tests/modules/FileRecycleLogCatalogueTest.cpp b/catalogue/tests/modules/FileRecycleLogCatalogueTest.cpp
index 9af572802f..611a22ae8d 100644
--- a/catalogue/tests/modules/FileRecycleLogCatalogueTest.cpp
+++ b/catalogue/tests/modules/FileRecycleLogCatalogueTest.cpp
@@ -71,7 +71,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, reclaimTapeRemovesFilesFromRecycleLog)
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   std::optional<std::string> physicalLibraryName;
@@ -81,12 +81,12 @@ TEST_P(cta_catalogue_FileRecycleLogTest, reclaimTapeRemovesFilesFromRecycleLog)
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
   const std::string tapeDrive = "tape_drive";
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   auto tape1 = m_tape1;
@@ -190,7 +190,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, filesArePutInTheFileRecycleLogInsteadOf
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -201,9 +201,9 @@ TEST_P(cta_catalogue_FileRecycleLogTest, filesArePutInTheFileRecycleLogInsteadOf
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -423,7 +423,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, sameFileWrittenToSameTapePutThePrevious
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -434,9 +434,9 @@ TEST_P(cta_catalogue_FileRecycleLogTest, sameFileWrittenToSameTapePutThePrevious
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -502,7 +502,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreTapeFileCopy) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -514,9 +514,9 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreTapeFileCopy) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
@@ -656,7 +656,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreRewrittenTapeFileCopyFails) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -668,9 +668,9 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreRewrittenTapeFileCopyFails) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
@@ -833,7 +833,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreTapeFileCopyDeletedTwice) {
   const std::string tapePoolNameA = "tape_pool_name_A";
   const std::string tapePoolNameB = "tape_pool_name_B";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -846,9 +846,9 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreTapeFileCopyDeletedTwice) {
                                                       "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolNameA, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolNameA, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
                                           "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolNameB, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolNameB, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
                                           "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
@@ -1055,7 +1055,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreVariousDeletedTapeFileCopies) {
   const std::string tapePoolName2 = "tape_pool_name_2";
   const std::string tapePoolName3 = "tape_pool_name_3";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -1067,11 +1067,11 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreVariousDeletedTapeFileCopies) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName3, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName3, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassTripleCopy);
 
@@ -1246,7 +1246,7 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreArchiveFileAndCopy) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -1257,8 +1257,8 @@ TEST_P(cta_catalogue_FileRecycleLogTest, RestoreArchiveFileAndCopy) {
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
   auto tape1 = m_tape1;
diff --git a/catalogue/tests/modules/LogicalLibraryCatalogueTest.cpp b/catalogue/tests/modules/LogicalLibraryCatalogueTest.cpp
index 08cfbef777..696f24bddd 100644
--- a/catalogue/tests/modules/LogicalLibraryCatalogueTest.cpp
+++ b/catalogue/tests/modules/LogicalLibraryCatalogueTest.cpp
@@ -289,7 +289,7 @@ TEST_P(cta_catalogue_LogicalLibraryTest, setLogicalLibraryDisabled_false) {
 TEST_P(cta_catalogue_LogicalLibraryTest, deleteLogicalLibrary) {
   const bool libNotToDeleteIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string libNotToDeleteComment = "Create logical library to NOT be deleted";
   std::optional<std::string> physicalLibraryName;
@@ -313,7 +313,7 @@ TEST_P(cta_catalogue_LogicalLibraryTest, deleteLogicalLibrary) {
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -425,7 +425,7 @@ TEST_P(cta_catalogue_LogicalLibraryTest, deleteLogicalLibrary_non_empty) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -434,7 +434,7 @@ TEST_P(cta_catalogue_LogicalLibraryTest, deleteLogicalLibrary_non_empty) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -816,7 +816,7 @@ TEST_P(cta_catalogue_LogicalLibraryTest, createTape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -825,7 +825,7 @@ TEST_P(cta_catalogue_LogicalLibraryTest, createTape) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
diff --git a/catalogue/tests/modules/MediaTypeCatalogueTest.cpp b/catalogue/tests/modules/MediaTypeCatalogueTest.cpp
index 9c4f91b634..45db3401de 100644
--- a/catalogue/tests/modules/MediaTypeCatalogueTest.cpp
+++ b/catalogue/tests/modules/MediaTypeCatalogueTest.cpp
@@ -166,7 +166,7 @@ TEST_P(cta_catalogue_MediaTypeTest, deleteMediaType_usedByTapes) {
   cta::log::LogContext dummyLc(m_dummyLog);
   const bool logicalLibraryIsDisabled = false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   std::optional<std::string> physicalLibraryName;
 
@@ -175,7 +175,7 @@ TEST_P(cta_catalogue_MediaTypeTest, deleteMediaType_usedByTapes) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -760,7 +760,7 @@ TEST_P(cta_catalogue_MediaTypeTest, getMediaTypeByVid_nonExistentTape) {
 TEST_P(cta_catalogue_MediaTypeTest, getMediaTypeByVid) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   std::optional<std::string> physicalLibraryName;
 
@@ -770,7 +770,7 @@ TEST_P(cta_catalogue_MediaTypeTest, getMediaTypeByVid) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
diff --git a/catalogue/tests/modules/TapeCatalogueTest.cpp b/catalogue/tests/modules/TapeCatalogueTest.cpp
index 66a60fd039..d5e44f8a4c 100644
--- a/catalogue/tests/modules/TapeCatalogueTest.cpp
+++ b/catalogue/tests/modules/TapeCatalogueTest.cpp
@@ -90,13 +90,13 @@ TEST_P(cta_catalogue_TapeTest, createTape_1_tape_with_write_log_1_tape_without)
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName,
     "Create logical library");
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   {
@@ -261,7 +261,7 @@ TEST_P(cta_catalogue_TapeTest, deleteTape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -269,7 +269,7 @@ TEST_P(cta_catalogue_TapeTest, deleteTape) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -315,14 +315,14 @@ TEST_P(cta_catalogue_TapeTest, writeToTapeAndCheckMasterBytesAndFiles) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName,
     "Create logical library");
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -443,14 +443,14 @@ TEST_P(cta_catalogue_TapeTest, deleteNonEmptyTape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName,
     "Create logical library");
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -577,7 +577,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeMediaType) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -592,7 +592,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeMediaType) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -662,7 +662,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeVendor) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -671,7 +671,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeVendor) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -740,7 +740,7 @@ TEST_P(cta_catalogue_TapeTest, modifyPurchaseOrder) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -749,7 +749,7 @@ TEST_P(cta_catalogue_TapeTest, modifyPurchaseOrder) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -773,7 +773,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesSearchCriteriaByEmptyPurchaseOrder) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -782,7 +782,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesSearchCriteriaByEmptyPurchaseOrder) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -806,7 +806,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesSearchCriteriaByPurchaseOrder) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -815,7 +815,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesSearchCriteriaByPurchaseOrder) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -839,7 +839,7 @@ TEST_P(cta_catalogue_TapeTest, modifyToEmptyPurchaseOrder) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -848,7 +848,7 @@ TEST_P(cta_catalogue_TapeTest, modifyToEmptyPurchaseOrder) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -873,7 +873,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeLogicalLibraryName) {
   std::optional<std::string> physicalLibraryName;
   const std::string anotherLogicalLibraryName = "another_logical_library_name";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -884,7 +884,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeLogicalLibraryName) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -962,7 +962,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeTapePoolName) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string anotherTapePoolName = "another_tape_pool_name";
 
@@ -972,9 +972,9 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeTapePoolName) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create another tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1041,14 +1041,14 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeTapePoolName_nonExistentTape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName,
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   ASSERT_THROW(m_catalogue->Tape()->modifyTapeTapePoolName(m_admin, m_tape1.vid, m_tape1.tapePoolName),
@@ -1059,7 +1059,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeEncryptionKeyName) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1068,7 +1068,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeEncryptionKeyName) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1137,7 +1137,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeEncryptionKeyName_emptyStringEncryption
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1146,7 +1146,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeEncryptionKeyName_emptyStringEncryption
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1215,7 +1215,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeVerificationStatus) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1224,7 +1224,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeVerificationStatus) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1319,7 +1319,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState_nonExistentState) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1328,7 +1328,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState_nonExistentState) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1342,14 +1342,14 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState_nonExistentPrevState) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName,
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   cta::common::dataStructures::Tape::State state = cta::common::dataStructures::Tape::State::ACTIVE;
@@ -1362,14 +1362,14 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState_wrongPrevState) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName,
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   cta::common::dataStructures::Tape::State prevState = cta::common::dataStructures::Tape::State::ACTIVE;
@@ -1386,7 +1386,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState_noReasonWhenNotActive) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1395,7 +1395,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState_noReasonWhenNotActive) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1414,7 +1414,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1423,7 +1423,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeState) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1475,7 +1475,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeStateResetReasonWhenBackToActiveState)
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1484,7 +1484,7 @@ TEST_P(cta_catalogue_TapeTest, modifyTapeStateResetReasonWhenBackToActiveState)
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1513,7 +1513,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesSearchCriteriaByState) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1522,7 +1522,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesSearchCriteriaByState) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1573,7 +1573,7 @@ TEST_P(cta_catalogue_TapeTest, tapeLabelled) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1582,7 +1582,7 @@ TEST_P(cta_catalogue_TapeTest, tapeLabelled) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1657,7 +1657,7 @@ TEST_P(cta_catalogue_TapeTest, tapeMountedForArchive) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1666,7 +1666,7 @@ TEST_P(cta_catalogue_TapeTest, tapeMountedForArchive) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1778,7 +1778,7 @@ TEST_P(cta_catalogue_TapeTest, tapeMountedForRetrieve) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1787,7 +1787,7 @@ TEST_P(cta_catalogue_TapeTest, tapeMountedForRetrieve) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1899,7 +1899,7 @@ TEST_P(cta_catalogue_TapeTest, setTapeFull) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1908,7 +1908,7 @@ TEST_P(cta_catalogue_TapeTest, setTapeFull) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -1979,7 +1979,7 @@ TEST_P(cta_catalogue_TapeTest, setTapeDirty) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1988,7 +1988,7 @@ TEST_P(cta_catalogue_TapeTest, setTapeDirty) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -2061,7 +2061,7 @@ TEST_P(cta_catalogue_TapeTest, noSpaceLeftOnTape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2070,7 +2070,7 @@ TEST_P(cta_catalogue_TapeTest, noSpaceLeftOnTape) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -2141,7 +2141,7 @@ TEST_P(cta_catalogue_TapeTest, setTapeIsFromCastorInUnitTests) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2150,7 +2150,7 @@ TEST_P(cta_catalogue_TapeTest, setTapeIsFromCastorInUnitTests) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -2250,7 +2250,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWriting) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2258,7 +2258,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWriting) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -2284,7 +2284,7 @@ TEST_P(cta_catalogue_TapeTest, getTapeLabelFormat) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2292,7 +2292,7 @@ TEST_P(cta_catalogue_TapeTest, getTapeLabelFormat) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -2311,7 +2311,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWritingOrderedByDataInBytesDesc) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2319,7 +2319,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWritingOrderedByDataInBytesDesc) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -2376,7 +2376,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWriting_disabled_tape) {
   const bool logicalLibraryIsDisabled = false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2384,7 +2384,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWriting_disabled_tape) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   auto tape = m_tape1;
@@ -2403,7 +2403,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWriting_full_tape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   auto tape1 = m_tape1;
@@ -2415,7 +2415,7 @@ TEST_P(cta_catalogue_TapeTest, getTapesForWriting_full_tape) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, tape1);
@@ -2431,7 +2431,7 @@ TEST_P(cta_catalogue_TapeTest, DISABLED_getTapesForWriting_no_labelled_tapes) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2439,7 +2439,7 @@ TEST_P(cta_catalogue_TapeTest, DISABLED_getTapesForWriting_no_labelled_tapes) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -2454,7 +2454,7 @@ TEST_P(cta_catalogue_TapeTest, reclaimTapeActiveState) {
   std::optional<std::string> physicalLibraryName;
   const std::string tapePoolName1 = "tape_pool_name_1";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
 
@@ -2465,7 +2465,7 @@ TEST_P(cta_catalogue_TapeTest, reclaimTapeActiveState) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -2486,7 +2486,7 @@ TEST_P(cta_catalogue_TapeTest, reclaimTapeDisabledState) {
   std::optional<std::string> physicalLibraryName;
   const std::string tapePoolName1 = "tape_pool_name_1";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
 
@@ -2497,7 +2497,7 @@ TEST_P(cta_catalogue_TapeTest, reclaimTapeDisabledState) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -2518,7 +2518,7 @@ TEST_P(cta_catalogue_TapeTest, reclaimTapeNotAllowedStates) {
   std::optional<std::string> physicalLibraryName;
   const std::string tapePoolName1 = "tape_pool_name_1";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
 
@@ -2529,7 +2529,7 @@ TEST_P(cta_catalogue_TapeTest, reclaimTapeNotAllowedStates) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -2580,14 +2580,14 @@ TEST_P(cta_catalogue_TapeTest, getTapes_non_existent_tape_pool) {
   const bool logicalLibraryIsDisabled = false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
   {
@@ -2608,14 +2608,14 @@ TEST_P(cta_catalogue_TapeTest, createTape_emptyStringVid) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -2638,12 +2638,12 @@ TEST_P(cta_catalogue_TapeTest, createTape_emptyStringVid) {
 
 TEST_P(cta_catalogue_TapeTest, createTape_emptyStringMediaType) {
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -2664,14 +2664,14 @@ TEST_P(cta_catalogue_TapeTest, createTape_emptyStringMediaType) {
 
 TEST_P(cta_catalogue_TapeTest, createTape_emptyStringVendor) {
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -2692,14 +2692,14 @@ TEST_P(cta_catalogue_TapeTest, createTape_emptyStringVendor) {
 
 TEST_P(cta_catalogue_TapeTest, createTape_emptyStringLogicalLibraryName) {
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -2731,13 +2731,13 @@ TEST_P(cta_catalogue_TapeTest, createTape_emptyStringTapePoolName) {
 
 TEST_P(cta_catalogue_TapeTest, createTape_non_existent_logical_library) {
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   ASSERT_THROW(m_catalogue->Tape()->createTape(m_admin, m_tape1), cta::exception::UserError);
 }
 
@@ -2753,7 +2753,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_9_exabytes_capacity) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2761,7 +2761,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_9_exabytes_capacity) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -2826,7 +2826,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_same_twice) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2834,7 +2834,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_same_twice) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -2883,7 +2883,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_StateDoesNotExist) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2891,7 +2891,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_StateDoesNotExist) {
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   auto tape = m_tape1;
   tape.state = (cta::common::dataStructures::Tape::State)42;
@@ -2902,7 +2902,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_StateNotActiveWithoutReasonShouldThrow
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -2910,7 +2910,7 @@ TEST_P(cta_catalogue_TapeTest, createTape_StateNotActiveWithoutReasonShouldThrow
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   auto tape1 = m_tape1;
   tape1.state = cta::common::dataStructures::Tape::DISABLED;
@@ -2938,14 +2938,14 @@ TEST_P(cta_catalogue_TapeTest, createTape_many_tapes) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
     ASSERT_EQ(1, pools.size());
@@ -3266,14 +3266,14 @@ TEST_P(cta_catalogue_TapeTest, getTapesByVid_1_tape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t nbTapes = 1;
   std::set<std::string, std::less<>> allVids;
@@ -3322,14 +3322,14 @@ TEST_P(cta_catalogue_TapeTest, getTapesByVid_350_tapes) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t nbTapes = 310;
   std::set<std::string, std::less<>> allVids;
@@ -3384,14 +3384,14 @@ TEST_P(cta_catalogue_TapeTest, getVidToLogicalLibrary_1_tape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t nbTapes = 1;
   std::set<std::string, std::less<>> allVids;
@@ -3427,14 +3427,14 @@ TEST_P(cta_catalogue_TapeTest, getVidToLogicalLibrary_310_tapes) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   const uint32_t nbTapes = 310;
   std::set<std::string, std::less<>> allVids;
@@ -3470,14 +3470,14 @@ TEST_P(cta_catalogue_TapeTest, getNbFilesOnTape_no_tape_files) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -3521,14 +3521,14 @@ TEST_P(cta_catalogue_TapeTest, getNbFilesOnTape_one_tape_file) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -3623,14 +3623,14 @@ TEST_P(cta_catalogue_TapeTest, checkTapeForLabel_no_tape_files) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -3674,14 +3674,14 @@ TEST_P(cta_catalogue_TapeTest, checkTapeForLabel_one_tape_file) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -3777,14 +3777,14 @@ TEST_P(cta_catalogue_TapeTest, checkTapeForLabel_one_tape_file_reclaimed_tape) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -3900,14 +3900,14 @@ TEST_P(cta_catalogue_TapeTest, reclaimTape_full_lastFSeq_0_no_tape_files) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -3981,14 +3981,14 @@ TEST_P(cta_catalogue_TapeTest, reclaimTape_not_full_lastFSeq_0_no_tape_files) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
 
@@ -4033,14 +4033,14 @@ TEST_P(cta_catalogue_TapeTest, reclaimTape_full_lastFSeq_1_no_tape_files) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -4237,14 +4237,14 @@ TEST_P(cta_catalogue_TapeTest, reclaimTape_full_lastFSeq_1_one_tape_file) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -4376,7 +4376,7 @@ TEST_P(cta_catalogue_TapeTest, reclaimTape_full_lastFSeq_1_one_tape_file) {
 TEST_P(cta_catalogue_TapeTest, get_tape_with_related_physical_library) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const auto physicalLibrary1 = CatalogueTestUtils::getPhysicalLibrary1();
 
@@ -4386,7 +4386,7 @@ TEST_P(cta_catalogue_TapeTest, get_tape_with_related_physical_library) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -4426,7 +4426,7 @@ TEST_P(cta_catalogue_TapeTest, get_tape_with_related_physical_library) {
 TEST_P(cta_catalogue_TapeTest, get_tape_with_physical_library_search_criteria) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const auto physicalLibrary1 = CatalogueTestUtils::getPhysicalLibrary1();
 
@@ -4436,7 +4436,7 @@ TEST_P(cta_catalogue_TapeTest, get_tape_with_physical_library_search_criteria) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -4478,7 +4478,7 @@ TEST_P(cta_catalogue_TapeTest, get_tape_with_physical_library_search_criteria) {
 TEST_P(cta_catalogue_TapeTest, get_no_tape_with_non_existent_physical_library_search_criteria) {
   const bool logicalLibraryIsDisabled= false;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   std::optional<std::string> physicalLibraryName;
 
@@ -4487,7 +4487,7 @@ TEST_P(cta_catalogue_TapeTest, get_no_tape_with_non_existent_physical_library_se
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
diff --git a/catalogue/tests/modules/TapeFileCatalogueTest.cpp b/catalogue/tests/modules/TapeFileCatalogueTest.cpp
index 4201697f8d..e38267333b 100644
--- a/catalogue/tests/modules/TapeFileCatalogueTest.cpp
+++ b/catalogue/tests/modules/TapeFileCatalogueTest.cpp
@@ -65,7 +65,7 @@ TEST_P(cta_catalogue_TapeFileTest, moveFilesToRecycleLog) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -75,9 +75,9 @@ TEST_P(cta_catalogue_TapeFileTest, moveFilesToRecycleLog) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassSingleCopy);
 
@@ -196,7 +196,7 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyUsingArchiveID) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -206,8 +206,8 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyUsingArchiveID) {
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
   auto tape1 = m_tape1;
@@ -338,7 +338,7 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyWithDisallowedTapeStates) {
   const std::string tapePoolName2 = "tape_pool_name_2";
   const std::string tapePoolName3 = "tape_pool_name_3";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -348,9 +348,9 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyWithDisallowedTapeStates) {
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName3, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName3, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
   auto tape1 = m_tape1;
@@ -539,7 +539,7 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyDoesNotExist) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -549,8 +549,8 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyDoesNotExist) {
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
   auto tape1 = m_tape1;
@@ -580,7 +580,7 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyUsingFXID) {
   const std::string tapePoolName1 = "tape_pool_name_1";
   const std::string tapePoolName2 = "tape_pool_name_2";
   const uint64_t nbPartialTapes = 1;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string diskInstance = m_diskInstance.name;
   const std::string tapeDrive = "tape_drive";
@@ -590,8 +590,8 @@ TEST_P(cta_catalogue_TapeFileTest, DeleteTapeFileCopyUsingFXID) {
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName1, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName2, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
   m_catalogue->StorageClass()->createStorageClass(m_admin, m_storageClassDualCopy);
 
   auto tape1 = m_tape1;
@@ -725,7 +725,7 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId_repac
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   std::string repackingReason = "repackingReason";
@@ -735,7 +735,7 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId_repac
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
@@ -998,7 +998,7 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -1006,7 +1006,7 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId) {
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, diskInstanceName1, "comment");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, diskInstanceName2, "comment");
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
@@ -1218,7 +1218,7 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId_disab
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   std::string disabledReason = "disabledReason";
@@ -1227,7 +1227,7 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId_disab
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
@@ -1492,14 +1492,14 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId_retur
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
@@ -1610,14 +1610,14 @@ TEST_P(cta_catalogue_TapeFileTest, prepareToRetrieveFileUsingArchiveFileId_Activ
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
   m_catalogue->LogicalLibrary()->createLogicalLibrary(m_admin, m_tape1.logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   m_catalogue->Tape()->createTape(m_admin, m_tape1);
   m_catalogue->Tape()->createTape(m_admin, m_tape2);
diff --git a/catalogue/tests/modules/TapePoolCatalogueTest.cpp b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
index b0ec5ac97c..bfc0953786 100644
--- a/catalogue/tests/modules/TapePoolCatalogueTest.cpp
+++ b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
@@ -76,12 +76,12 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool) {
   ASSERT_FALSE(m_catalogue->TapePool()->tapePoolExists(tapePoolName));
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
 
   ASSERT_TRUE(m_catalogue->TapePool()->tapePoolExists(tapePoolName));
@@ -95,7 +95,8 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -118,7 +119,8 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool) {
     ASSERT_EQ(tapePoolName, pool->name);
     ASSERT_EQ(m_vo.name, pool->vo.name);
     ASSERT_EQ(nbPartialTapes, pool->nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool->encryption);
+    ASSERT_EQ(true, pool->encryption);
+    ASSERT_EQ(encryptionKeyName, pool->encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool->supply);
     ASSERT_EQ(0, pool->nbTapes);
     ASSERT_EQ(0, pool->capacityBytes);
@@ -141,12 +143,12 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_null_supply) {
   ASSERT_FALSE(m_catalogue->TapePool()->tapePoolExists(tapePoolName));
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
 
   ASSERT_TRUE(m_catalogue->TapePool()->tapePoolExists(tapePoolName));
@@ -159,7 +161,8 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_null_supply) {
   ASSERT_EQ(tapePoolName, pool.name);
   ASSERT_EQ(m_vo.name, pool.vo.name);
   ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-  ASSERT_EQ(isEncrypted, pool.encryption);
+  ASSERT_EQ(true, pool.encryption);
+  ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
   ASSERT_EQ(std::nullopt, pool.supply);
   ASSERT_EQ(0, pool.nbTapes);
   ASSERT_EQ(0, pool.capacityBytes);
@@ -179,32 +182,32 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_null_supply) {
 TEST_P(cta_catalogue_TapePoolTest, createTapePool_same_twice) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   ASSERT_THROW(m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes,
-    isEncrypted, supply, comment), cta::exception::UserError);
+    encryptionKeyName, supply, comment), cta::exception::UserError);
 }
 
 TEST_P(cta_catalogue_TapePoolTest, createTapePool_vo_does_not_exist) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   ASSERT_THROW(m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes,
-    isEncrypted, supply, comment), cta::exception::UserError);
+    encryptionKeyName, supply, comment), cta::exception::UserError);
 }
 
 TEST_P(cta_catalogue_TapePoolTest, createTapePool_tapes_of_mixed_state) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -213,7 +216,7 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_tapes_of_mixed_state) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -341,14 +344,14 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_tapes_of_mixed_state) {
 
 TEST_P(cta_catalogue_TapePoolTest, deleteTapePool) {
   const uint64_t tapePoolNbPartialTapes = 2;
-  const bool tapePoolIsEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::string tapePoolComment = "Create tape pool";
   {
     const std::list<std::string> supply;
     m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
     m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
     m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, tapePoolNbPartialTapes,
-      tapePoolIsEncrypted, supply, tapePoolComment);
+      encryptionKeyName, supply, tapePoolComment);
   }
 
   {
@@ -360,7 +363,8 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool) {
     ASSERT_EQ(m_tape1.tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(tapePoolNbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(tapePoolIsEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -381,13 +385,13 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool) {
   const std::string anotherTapePoolName = "another_tape_pool";
   const uint64_t anotherNbPartialTapes = 4;
   const std::string anotherTapePoolComment = "Create another tape pool";
-  const bool anotherTapePoolIsEncrypted = false;
+  const std::optional<std::string> encryptionKeyNull = std::nullopt;
   {
     m_catalogue->StorageClass()->createStorageClass(m_admin, m_anotherStorageClass);
     const std::list<std::string> supply;
     m_catalogue->VO()->createVirtualOrganization(m_admin, m_anotherVo);
     m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePoolName, m_anotherVo.name, anotherNbPartialTapes,
-      anotherTapePoolIsEncrypted, supply, anotherTapePoolComment);
+      encryptionKeyNull, supply, anotherTapePoolComment);
     const uint32_t copyNb = 1;
     const std::string comment = "Create a separate archive route";
     m_catalogue->ArchiveRoute()->createArchiveRoute(m_admin, m_anotherStorageClass.name, copyNb, cta::common::dataStructures::ArchiveRouteType::DEFAULT, anotherTapePoolName, comment);
@@ -406,7 +410,8 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool) {
       ASSERT_EQ(m_tape1.tapePoolName, pool.name);
       ASSERT_EQ(m_vo.name, pool.vo.name);
       ASSERT_EQ(tapePoolNbPartialTapes, pool.nbPartialTapes);
-      ASSERT_EQ(tapePoolIsEncrypted, pool.encryption);
+      ASSERT_EQ(true, pool.encryption);
+      ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
       ASSERT_EQ(0, pool.nbTapes);
       ASSERT_EQ(0, pool.capacityBytes);
       ASSERT_EQ(0, pool.dataBytes);
@@ -429,7 +434,8 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool) {
       ASSERT_EQ(anotherTapePoolName, pool.name);
       ASSERT_EQ(m_anotherVo.name, pool.vo.name);
       ASSERT_EQ(anotherNbPartialTapes, pool.nbPartialTapes);
-      ASSERT_EQ(anotherTapePoolIsEncrypted, pool.encryption);
+      ASSERT_EQ(false, pool.encryption);
+      ASSERT_EQ(encryptionKeyNull, pool.encryptionKeyName);
       ASSERT_EQ(0, pool.nbTapes);
       ASSERT_EQ(0, pool.capacityBytes);
       ASSERT_EQ(0, pool.dataBytes);
@@ -454,7 +460,7 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool_notEmpty) {
   const bool logicalLibraryIsDisabled= false;
   std::optional<std::string> physicalLibraryName;
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   m_catalogue->MediaType()->createMediaType(m_admin, m_mediaType);
@@ -463,7 +469,7 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool_notEmpty) {
     "Create logical library");
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -532,22 +538,22 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool_notEmpty) {
 TEST_P(cta_catalogue_TapePoolTest, createTapePool_emptyStringTapePoolName) {
   const std::string tapePoolName = "";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  ASSERT_THROW(m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName, m_vo.name, nbPartialTapes, isEncrypted,
+  ASSERT_THROW(m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName,
     supply, comment), cta::catalogue::UserSpecifiedAnEmptyStringTapePoolName);
 }
 
 TEST_P(cta_catalogue_TapePoolTest, createTapePool_emptyStringVO) {
   const std::string vo = "";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
-  ASSERT_THROW(m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, "", nbPartialTapes, isEncrypted,
+  ASSERT_THROW(m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, "", nbPartialTapes, encryptionKeyName,
     supply, comment), cta::catalogue::UserSpecifiedAnEmptyStringVo);
 }
 
@@ -557,13 +563,13 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_emptyStringComment) {
   ASSERT_FALSE(m_catalogue->TapePool()->tapePoolExists(tapePoolName));
 
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
   ASSERT_THROW(m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes,
-    isEncrypted, supply, comment), cta::catalogue::UserSpecifiedAnEmptyStringComment);
+    encryptionKeyName, supply, comment), cta::catalogue::UserSpecifiedAnEmptyStringComment);
 }
 
 TEST_P(cta_catalogue_TapePoolTest, deleteTapePool_non_existent) {
@@ -577,9 +583,9 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool_used_in_an_archive_route) {
 
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   const uint32_t copyNb = 1;
@@ -632,13 +638,13 @@ TEST_P(cta_catalogue_TapePoolTest, deleteTapePool_used_in_an_archive_route) {
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
 
   {
@@ -650,7 +656,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -679,7 +686,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(modifiedVo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -702,13 +710,13 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo_emptyStringTapePool) {
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo_emptyStringVo) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -719,7 +727,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo_emptyStringVo) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -742,12 +751,12 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo_emptyStringVo) {
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo_VoDoesNotExist) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -758,7 +767,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo_VoDoesNotExist) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -781,12 +791,12 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolVo_VoDoesNotExist) {
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolNbPartialTapes) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -797,7 +807,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolNbPartialTapes) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -824,7 +835,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolNbPartialTapes) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(modifiedNbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -854,12 +866,12 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolNbPartialTapes_nonExistentTapeP
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolComment) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -870,7 +882,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolComment) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -897,7 +910,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolComment) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -920,12 +934,12 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolComment_emptyStringTapePoolName
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolComment_emptyStringComment) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -936,7 +950,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolComment_emptyStringComment) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -966,12 +981,12 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolComment_nonExistentTapePool) {
 TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -982,7 +997,8 @@ TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -997,8 +1013,8 @@ TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
     ASSERT_EQ(creationLog, lastModificationLog);
   }
 
-  const bool modifiedIsEncrypted = !isEncrypted;
-  m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, modifiedIsEncrypted);
+  const std::optional<std::string> encryptionKeyNull = std::nullopt;
+  m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, encryptionKeyNull);
 
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -1009,7 +1025,8 @@ TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(modifiedIsEncrypted, pool.encryption);
+    ASSERT_EQ(false, pool.encryption);
+    ASSERT_EQ(encryptionKeyNull, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -1024,8 +1041,8 @@ TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
 
 TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption_nonExistentTapePool) {
   const std::string tapePoolName = "tape_pool";
-  const bool isEncrypted = false;
-  ASSERT_THROW(m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, isEncrypted),
+  const std::optional<std::string> encryptionKeyNull = std::nullopt;
+  ASSERT_THROW(m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, encryptionKeyNull),
     cta::exception::UserError);
 }
 
@@ -1033,14 +1050,14 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolSupply) {
   const std::string tapePoolName_1 = "tape_pool_1";
   const std::string tapePoolName_2 = "tape_pool_2";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;  // empty string is acceptable value
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_1, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_1, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
-  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_2, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName_2, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
                                           comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -1098,12 +1115,12 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolSupply_emptyStringTapePoolName)
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolSupply_emptyStringSupply) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -1114,7 +1131,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolSupply_emptyStringSupply) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -1142,7 +1160,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolSupply_emptyStringSupply) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -1169,8 +1188,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterName) {
   const uint64_t nbFirstPoolPartialTapes = 2;
   const uint64_t nbSecondPoolPartialTapes = 3;
 
-  const bool firstPoolIsEncrypted = true;
-  const bool secondPoolIsEncrypted = false;
+  const std::optional<std::string> firstPoolEncryptionKeyName = "encryption_key_name";
+  const std::optional<std::string> secondPoolEncryptionKeyNull = std::nullopt;
 
   const std::list<std::string> firstPoolSupply;
   const std::list<std::string> secondPoolSupply;
@@ -1183,9 +1202,9 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterName) {
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_anotherVo);
 
   m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName, m_vo.name, nbFirstPoolPartialTapes,
-    firstPoolIsEncrypted, firstPoolSupply, firstPoolComment);
+    firstPoolEncryptionKeyName, firstPoolSupply, firstPoolComment);
   m_catalogue->TapePool()->createTapePool(m_admin, secondTapePoolName, m_anotherVo.name, nbSecondPoolPartialTapes,
-    secondPoolIsEncrypted, secondPoolSupply, secondPoolComment);
+    secondPoolEncryptionKeyNull, secondPoolSupply, secondPoolComment);
 
 
   {
@@ -1198,7 +1217,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterName) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbFirstPoolPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(firstPoolIsEncrypted, pool.encryption);
+    ASSERT_EQ(firstPoolEncryptionKeyName.has_value(), pool.encryption);
+    ASSERT_EQ(firstPoolEncryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -1221,8 +1241,9 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterName) {
     ASSERT_EQ(secondTapePoolName, pool.name);
     ASSERT_EQ(m_anotherVo.name, pool.vo.name);
     ASSERT_EQ(nbSecondPoolPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(secondPoolIsEncrypted, pool.encryption);
-    ASSERT_FALSE((bool) pool.supply);
+    ASSERT_EQ(secondPoolEncryptionKeyNull.has_value(), pool.encryption);
+    ASSERT_EQ(secondPoolEncryptionKeyNull, pool.encryptionKeyName);
+    ASSERT_FALSE(pool.supply.has_value());
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -1256,8 +1277,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterVO) {
   const uint64_t nbFirstPoolPartialTapes = 2;
   const uint64_t nbSecondPoolPartialTapes = 3;
 
-  const bool firstPoolIsEncrypted = true;
-  const bool secondPoolIsEncrypted = false;
+  const std::optional<std::string> firstPoolEncryptionKeyName = "encryption_key_name";
+  const std::optional<std::string> secondPoolEncryptionKeyNull = std::nullopt;
 
   const std::list<std::string> firstPoolSupply;
   const std::list<std::string> secondPoolSupply;
@@ -1270,9 +1291,9 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterVO) {
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_anotherVo);
 
   m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName, m_vo.name, nbFirstPoolPartialTapes,
-    firstPoolIsEncrypted, firstPoolSupply, firstPoolComment);
+    firstPoolEncryptionKeyName, firstPoolSupply, firstPoolComment);
   m_catalogue->TapePool()->createTapePool(m_admin, secondTapePoolName, m_anotherVo.name, nbSecondPoolPartialTapes,
-    secondPoolIsEncrypted, secondPoolSupply, secondPoolComment);
+    secondPoolEncryptionKeyNull, secondPoolSupply, secondPoolComment);
   {
     cta::catalogue::TapePoolSearchCriteria criteria;
     criteria.vo = m_vo.name;
@@ -1283,7 +1304,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterVO) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbFirstPoolPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(firstPoolIsEncrypted, pool.encryption);
+    ASSERT_EQ(firstPoolEncryptionKeyName.has_value(), pool.encryption);
+    ASSERT_EQ(firstPoolEncryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -1306,7 +1328,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterVO) {
     ASSERT_EQ(secondTapePoolName, pool.name);
     ASSERT_EQ(m_anotherVo.name, pool.vo.name);
     ASSERT_EQ(nbSecondPoolPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(secondPoolIsEncrypted, pool.encryption);
+    ASSERT_EQ(secondPoolEncryptionKeyNull.has_value(), pool.encryption);
+    ASSERT_EQ(secondPoolEncryptionKeyNull, pool.encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -1342,8 +1365,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
   const uint64_t nbFirstPoolPartialTapes = 2;
   const uint64_t nbSecondPoolPartialTapes = 3;
 
-  const bool firstPoolIsEncrypted = true;
-  const bool secondPoolIsEncrypted = false;
+  const std::optional<std::string> firstPoolEncryptionKeyName = "encryption_key_name";
+  const std::optional<std::string> secondPoolEncryptionKeyNull = std::nullopt;
 
   const std::list<std::string> firstPoolSupply;
   const std::list<std::string> secondPoolSupply;
@@ -1356,9 +1379,9 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_anotherVo);
 
   m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName, m_vo.name, nbFirstPoolPartialTapes,
-    firstPoolIsEncrypted, firstPoolSupply, firstPoolComment);
+    firstPoolEncryptionKeyName, firstPoolSupply, firstPoolComment);
   m_catalogue->TapePool()->createTapePool(m_admin, secondTapePoolName, m_anotherVo.name, nbSecondPoolPartialTapes,
-    secondPoolIsEncrypted, secondPoolSupply, secondPoolComment);
+    secondPoolEncryptionKeyNull, secondPoolSupply, secondPoolComment);
 
 
   {
@@ -1371,7 +1394,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbFirstPoolPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(firstPoolIsEncrypted, pool.encryption);
+    ASSERT_EQ(firstPoolEncryptionKeyName.has_value(), pool.encryption);
+    ASSERT_EQ(firstPoolEncryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(std::nullopt, pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -1394,7 +1418,8 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
     ASSERT_EQ(secondTapePoolName, pool.name);
     ASSERT_EQ(m_anotherVo.name, pool.vo.name);
     ASSERT_EQ(nbSecondPoolPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(secondPoolIsEncrypted, pool.encryption);
+    ASSERT_EQ(secondPoolEncryptionKeyNull.has_value(), pool.encryption);
+    ASSERT_EQ(secondPoolEncryptionKeyNull, pool.encryptionKeyName);
     ASSERT_FALSE((bool) pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
@@ -1411,12 +1436,12 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolName) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
 
   {
@@ -1428,7 +1453,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolName) {
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -1455,7 +1481,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolName) {
     ASSERT_EQ(newTapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -1478,12 +1505,12 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolName_emptyStringCurrentTapePool
 TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolName_emptyStringNewTapePoolName) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply,
     comment);
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -1494,7 +1521,8 @@ TEST_P(cta_catalogue_TapePoolTest, modifyTapePoolName_emptyStringNewTapePoolName
     ASSERT_EQ(tapePoolName, pool.name);
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
-    ASSERT_EQ(isEncrypted, pool.encryption);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(encryptionKeyName, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -1522,8 +1550,8 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_usingTapePoolSupplyTable) {
   const uint64_t nbFirstPoolPartialTapes = 2;
   const uint64_t nbSecondPoolPartialTapes = 3;
 
-  const bool firstPoolIsEncrypted = true;
-  const bool secondPoolIsEncrypted = false;
+  const std::optional<std::string> firstPoolEncryptionKeyName = "encryption_key_name";
+  const std::optional<std::string> secondPoolEncryptionKeyNull = std::nullopt;
 
   const std::list<std::string> firstPoolSupply;
   const std::list<std::string> secondPoolSupply = {"tape_pool"};
@@ -1536,10 +1564,10 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_usingTapePoolSupplyTable) {
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_anotherVo);
 
   m_catalogue->TapePool()->createTapePool(m_admin, firstTapePoolName, m_vo.name, nbFirstPoolPartialTapes,
-                                          firstPoolIsEncrypted, firstPoolSupply, firstPoolComment);
+                                          firstPoolEncryptionKeyName, firstPoolSupply, firstPoolComment);
 
   m_catalogue->TapePool()->createTapePool(m_admin, secondTapePoolName, m_anotherVo.name, nbSecondPoolPartialTapes,
-                                          secondPoolIsEncrypted, secondPoolSupply, secondPoolComment);
+                                          secondPoolEncryptionKeyNull, secondPoolSupply, secondPoolComment);
 
   auto pools_map = CatalogueTestUtils::tapePoolListToMap(m_catalogue->TapePool()->getTapePools());
   auto pools = m_catalogue->TapePool()->getTapePools();
@@ -1572,10 +1600,10 @@ TEST_P(cta_catalogue_TapePoolTest, createTapePool_usingTapePoolSupplyTable) {
   std::string thirdTapePoolName("tape_pool_3");
   std::list<std::string> thirdTapePoolSupply = {"tape_pool", "tape_pool_2"};
   const uint64_t nbThirdPoolPartialTapes = 3;
-  const bool thirdPoolIsEncrypted = false;
+  const std::optional<std::string> thirdPoolEncryptionKeyNull = std::nullopt;
   const std::string thirdPoolComment = "Create third tape pool";
   m_catalogue->TapePool()->createTapePool(m_admin, thirdTapePoolName, m_anotherVo.name, nbThirdPoolPartialTapes,
-                                          thirdPoolIsEncrypted, thirdTapePoolSupply, thirdPoolComment);
+                                          thirdPoolEncryptionKeyNull, thirdTapePoolSupply, thirdPoolComment);
 
   {
     const auto pools3_map = CatalogueTestUtils::tapePoolListToMap(m_catalogue->TapePool()->getTapePools());
diff --git a/catalogue/tests/modules/VirtualOrganizationCatalogueTest.cpp b/catalogue/tests/modules/VirtualOrganizationCatalogueTest.cpp
index d61602f4ce..24dea39cee 100644
--- a/catalogue/tests/modules/VirtualOrganizationCatalogueTest.cpp
+++ b/catalogue/tests/modules/VirtualOrganizationCatalogueTest.cpp
@@ -116,13 +116,13 @@ TEST_P(cta_catalogue_VirtualOrganizationTest, deleteVirtualOrganization) {
 TEST_P(cta_catalogue_VirtualOrganizationTest, deleteVirtualOrganizationUsedByTapePool) {
   const std::string tapePoolName = "tape_pool";
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
   const std::string comment = "Create tape pool";
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, isEncrypted, supply, comment);
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, m_vo.name, nbPartialTapes, encryptionKeyName, supply, comment);
 
   ASSERT_THROW(m_catalogue->VO()->deleteVirtualOrganization(m_vo.name), cta::exception::UserError);
 }
@@ -316,14 +316,14 @@ TEST_P(cta_catalogue_VirtualOrganizationTest, modifyVirtualOrganizationDiskInsta
 
 TEST_P(cta_catalogue_VirtualOrganizationTest, getVirtualOrganizationOfTapepool) {
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   cta::common::dataStructures::VirtualOrganization vo = CatalogueTestUtils::getVo();
 
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin,vo);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, vo.name, nbPartialTapes, isEncrypted, supply,
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, vo.name, nbPartialTapes, encryptionKeyName, supply,
     "Create tape pool");
 
   cta::common::dataStructures::VirtualOrganization voFromTapepool =
@@ -335,7 +335,7 @@ TEST_P(cta_catalogue_VirtualOrganizationTest, getVirtualOrganizationOfTapepool)
 
 TEST_P(cta_catalogue_VirtualOrganizationTest, getDefaultVirtualOrganizationForRepacking) {
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   cta::common::dataStructures::VirtualOrganization repackVo = CatalogueTestUtils::getDefaultRepackVo();
@@ -347,8 +347,8 @@ TEST_P(cta_catalogue_VirtualOrganizationTest, getDefaultVirtualOrganizationForRe
   m_catalogue->VO()->createVirtualOrganization(m_admin,userVo1);
   m_catalogue->VO()->createVirtualOrganization(m_admin,repackVo);
   m_catalogue->VO()->createVirtualOrganization(m_admin,userVo2);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, userVo1.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePool, userVo2.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, userVo1.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePool, userVo2.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   std::optional<cta::common::dataStructures::VirtualOrganization> defaultVoForRepacking =
           m_catalogue->VO()->getDefaultVirtualOrganizationForRepack();
@@ -362,7 +362,7 @@ TEST_P(cta_catalogue_VirtualOrganizationTest, getDefaultVirtualOrganizationForRe
 
 TEST_P(cta_catalogue_VirtualOrganizationTest, getDefaultVirtualOrganizationForRepackingNoValue) {
   const uint64_t nbPartialTapes = 2;
-  const bool isEncrypted = true;
+  const std::string encryptionKeyName = "encryption_key_name";
   const std::list<std::string> supply;
 
   cta::common::dataStructures::VirtualOrganization userVo1 = CatalogueTestUtils::getVo();
@@ -372,8 +372,8 @@ TEST_P(cta_catalogue_VirtualOrganizationTest, getDefaultVirtualOrganizationForRe
   m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
   m_catalogue->VO()->createVirtualOrganization(m_admin,userVo1);
   m_catalogue->VO()->createVirtualOrganization(m_admin,userVo2);
-  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, userVo1.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
-  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePool, userVo2.name, nbPartialTapes, isEncrypted, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, m_tape1.tapePoolName, userVo1.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
+  m_catalogue->TapePool()->createTapePool(m_admin, anotherTapePool, userVo2.name, nbPartialTapes, encryptionKeyName, supply, "Create tape pool");
 
   auto defaultVoForRepacking = m_catalogue->VO()->getDefaultVirtualOrganizationForRepack();
   ASSERT_FALSE(defaultVoForRepacking.has_value());
diff --git a/cmdline/CtaAdminCmdParse.hpp b/cmdline/CtaAdminCmdParse.hpp
index c73e72adf2..ad82fcfa24 100644
--- a/cmdline/CtaAdminCmdParse.hpp
+++ b/cmdline/CtaAdminCmdParse.hpp
@@ -1092,12 +1092,13 @@ tapepool (tp)
     **ls** shows statistics such as the total number of tapes in the pool and number of free tapes.
   */
   {{AdminCmd::CMD_TAPEPOOL, AdminCmd::SUBCMD_ADD},
-   {opt_tapepool_alias, opt_vo, opt_partialtapes, opt_encrypted, opt_supply.optional(), opt_comment}                         },
+   {opt_tapepool_alias, opt_vo, opt_partialtapes, opt_encrypted.optional(), opt_encryptionkeyname, opt_supply.optional(), opt_comment}                         },
   {{AdminCmd::CMD_TAPEPOOL, AdminCmd::SUBCMD_CH},
    {opt_tapepool_alias,
     opt_vo.optional(),
     opt_partialtapes.optional(),
     opt_encrypted.optional(),
+    opt_encryptionkeyname.optional(),
     opt_supply.optional(),
     opt_comment.optional()}                                                                                                  },
   {{AdminCmd::CMD_TAPEPOOL, AdminCmd::SUBCMD_RM},             {opt_tapepool_alias}                                           },
diff --git a/cmdline/blah b/cmdline/blah
new file mode 100644
index 0000000000..b6f22aee26
--- /dev/null
+++ b/cmdline/blah
@@ -0,0 +1,16 @@
+            type         tapepool        vo library vid files queued data queued oldest youngest priority min age read max drives write max drives cur. mounts cur. files cur. data tapes capacity files on tapes data on tapes full tapes writable tapes
+ArchiveForRepack systest2_default vo_repack       -   -         1153       17.7M    278      278        2       1               1                1           0          0         0          12.0T           1000         15.4M          0              1
+ArchiveForRepack       ctasystest vo_repack       -   -         1153       17.7M    279      279        2       1               1                1           0          0         0          24.0T           3153         48.4M          1              1
+ArchiveForRepack  systest3_repack vo_repack       -   -            0           0      0        0        0       0               1                1           1       2153     33.1M          12.0T           1000         15.4M          0              1
+Result of dr ls
+library   drive          host desired          request   status since    vid        tapepool        vo files  data MB/s session priority activity scheduler age reason
+VDSTK01 VDSTK01 cta-tpsrv01-0      Up                -     Free   286      -               -         -     -     -    -       -        0        -      ceph   2 -
+VDSTK02 VDSTK02 cta-tpsrv02-0      Up ArchiveForRepack Transfer   275 V00108 systest3_repack vo_repack  2153 33.1M  0.1      30        0        -      ceph   5 -
+Result of Repack ls
+          c.time repackTime    c.user    vid   tapepool providedFiles totalFiles totalBytes selectedFiles filesToRetrieve filesToArchive failed  status
+2025-03-04 11:37      5m12s ctaadmin2 V00101 ctasystest             0       2153      33.1M          6459               0           3679      0 Running
+DestinationVID  NbFiles  totalSize
+V00102          990      15206400
+V00106          990      15206400
+V00108          800      12288000
+command terminated with exit code 1
\ No newline at end of file
diff --git a/frontend/common/AdminCmd.cpp b/frontend/common/AdminCmd.cpp
index a5679aab01..4b189ac7d7 100644
--- a/frontend/common/AdminCmd.cpp
+++ b/frontend/common/AdminCmd.cpp
@@ -1222,19 +1222,25 @@ void AdminCmd::processTapeFile_Rm(xrd::Response& response) {
 void AdminCmd::processTapePool_Add(xrd::Response& response) {
   using namespace cta::admin;
 
-  auto& name      = getRequired(OptionString::TAPE_POOL);
-  auto& vo        = getRequired(OptionString::VO);
-  auto& ptn       = getRequired(OptionUInt64::PARTIAL_TAPES_NUMBER);
-  auto& comment   = getRequired(OptionString::COMMENT);
-  auto& encrypted = getRequired(OptionBoolean::ENCRYPTED);
-  auto  supply    = getOptional(OptionString::SUPPLY);
+  auto& name              = getRequired(OptionString::TAPE_POOL);
+  auto& vo                = getRequired(OptionString::VO);
+  auto& ptn               = getRequired(OptionUInt64::PARTIAL_TAPES_NUMBER);
+  auto& comment           = getRequired(OptionString::COMMENT);
+  auto encrypted          = getOptional(OptionBoolean::ENCRYPTED);
+  auto& encryptionKeyName = getRequired(OptionString::ENCRYPTION_KEY_NAME);
+  auto supply             = getOptional(OptionString::SUPPLY);
+
+  if(encrypted) {
+    throw exception::UserError("The parameter '--encrypted' has been deprecated. Use '--encryptionkeyname'.");
+  }
 
   std::list<std::string> supply_list;
   if (supply) {
     supply_list = cta::utils::commaSeparatedStringToList(supply.value());
   }
 
-  m_catalogue.TapePool()->createTapePool(m_cliIdentity, name, vo, ptn, encrypted, supply_list, comment);
+  std::optional<std::string> encryptionKeyNameOpt = encryptionKeyName.empty() ? std::nullopt : encryptionKeyName;
+  m_catalogue.TapePool()->createTapePool(m_cliIdentity, name, vo, ptn, encryptionKeyNameOpt, supply_list, comment);
 
   response.set_type(xrd::Response::RSP_SUCCESS);
 }
@@ -1242,13 +1248,17 @@ void AdminCmd::processTapePool_Add(xrd::Response& response) {
 void AdminCmd::processTapePool_Ch(xrd::Response& response) {
   using namespace cta::admin;
 
-  auto& name      = getRequired(OptionString::TAPE_POOL);
-  auto  vo        = getOptional(OptionString::VO);
-  auto  ptn       = getOptional(OptionUInt64::PARTIAL_TAPES_NUMBER);
-  auto  comment   = getOptional(OptionString::COMMENT);
-  auto  encrypted = getOptional(OptionBoolean::ENCRYPTED);
-  auto  supply    = getOptional(OptionString::SUPPLY);
+  auto& name              = getRequired(OptionString::TAPE_POOL);
+  auto  vo                = getOptional(OptionString::VO);
+  auto  ptn               = getOptional(OptionUInt64::PARTIAL_TAPES_NUMBER);
+  auto  comment           = getOptional(OptionString::COMMENT);
+  auto  encrypted         = getOptional(OptionBoolean::ENCRYPTED);
+  auto  encryptionKeyName = getOptional(OptionString::ENCRYPTION_KEY_NAME);
+  auto  supply            = getOptional(OptionString::SUPPLY);
 
+  if(encrypted) {
+    throw exception::UserError("The parameter '--encrypted' has been deprecated. Use '--encryptionkeyname'.");
+  }
   if(comment) {
     m_catalogue.TapePool()->modifyTapePoolComment(m_cliIdentity, name, comment.value());
   }
@@ -1258,10 +1268,12 @@ void AdminCmd::processTapePool_Ch(xrd::Response& response) {
   if(ptn) {
     m_catalogue.TapePool()->modifyTapePoolNbPartialTapes(m_cliIdentity, name, ptn.value());
   }
-  if(encrypted) {
-    m_catalogue.TapePool()->setTapePoolEncryption(m_cliIdentity, name, encrypted.value());
+  if(encryptionKeyName) {
+    if (encryptionKeyName.value().empty()) {
+      encryptionKeyName.reset();
+    }
+    m_catalogue.TapePool()->setTapePoolEncryption(m_cliIdentity, name, encryptionKeyName);
   }
-  modifyTapeEncryptionKeyName
   if(supply) {
     m_catalogue.TapePool()->modifyTapePoolSupply(m_cliIdentity, name,
                                                  cta::utils::commaSeparatedStringToList(supply.value()));
diff --git a/scheduler/SchedulerTest.cpp b/scheduler/SchedulerTest.cpp
index b0eae65fc4..a1af26d750 100644
--- a/scheduler/SchedulerTest.cpp
+++ b/scheduler/SchedulerTest.cpp
@@ -279,19 +279,19 @@ public:
 
     const uint16_t nbPartialTapes = 1;
     const std::string tapePoolComment = "Tape-pool comment";
-    const bool tapePoolEncryption = false;
+    const std::optional<std::string> encryptionKeyNull = std::nullopt;
     const std::list<std::string> tapePoolSupply;
     const uint32_t copyNb = 1;
 
     // Tape pool for default archive route
-    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, s_tapePoolName_default, vo.name, nbPartialTapes, tapePoolEncryption,
+    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, s_tapePoolName_default, vo.name, nbPartialTapes, encryptionKeyNull,
                                          tapePoolSupply, tapePoolComment);
     const std::string archiveRouteComment_default = "Archive-route comment - default";
     catalogue.ArchiveRoute()->createArchiveRoute(s_adminOnAdminHost, s_storageClassName, copyNb, cta::common::dataStructures::ArchiveRouteType::DEFAULT,
                                                  s_tapePoolName_default, archiveRouteComment_default);
 
     // Tape pool for repack archive route
-    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, s_tapePoolName_repack, vo.name, nbPartialTapes, tapePoolEncryption,
+    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, s_tapePoolName_repack, vo.name, nbPartialTapes, encryptionKeyNull,
                                          tapePoolSupply, tapePoolComment);
     const std::string archiveRouteComment_repack = "Archive-route comment - repack";
     catalogue.ArchiveRoute()->createArchiveRoute(s_adminOnAdminHost, s_storageClassName, copyNb, cta::common::dataStructures::ArchiveRouteType::REPACK,
@@ -1262,11 +1262,11 @@ TEST_P(SchedulerTest, archive_report_and_retrieve_new_dual_copy_file) {
     const uint16_t nbPartialTapes = 1;
     const std::string tapePool1Comment = "Tape-pool for copy number 1";
     const std::string tapePool2Comment = "Tape-pool for copy number 2";
-    const bool tapePoolEncryption = false;
+    const std::optional<std::string> encryptionKeyNull = std::nullopt;
     const std::list<std::string> tapePoolSupplyList;
-    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, tapePool1Name, vo.name, nbPartialTapes, tapePoolEncryption,
+    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, tapePool1Name, vo.name, nbPartialTapes, encryptionKeyNull,
                                          tapePoolSupplyList, tapePool1Comment);
-    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, tapePool2Name, vo.name, nbPartialTapes, tapePoolEncryption,
+    catalogue.TapePool()->createTapePool(s_adminOnAdminHost, tapePool2Name, vo.name, nbPartialTapes, encryptionKeyNull,
                                          tapePoolSupplyList, tapePool2Comment);
 
     const std::string archiveRoute1Comment = "Archive-route for copy number 1";
@@ -4692,10 +4692,10 @@ TEST_P(SchedulerTest, expandRepackRequestAddCopiesOnly) {
   //Create two different destination tapepool
   std::string tapepool2Name = "tapepool2";
   const std::list<std::string> supplyList;
-  catalogue.TapePool()->createTapePool(admin, tapepool2Name, "vo", 1, false, supplyList, "comment");
+  catalogue.TapePool()->createTapePool(admin, tapepool2Name, "vo", 1, std::nullopt, supplyList, "comment");
 
   std::string tapepool3Name = "tapepool3";
-  catalogue.TapePool()->createTapePool(admin, tapepool3Name, "vo", 1, false, supplyList, "comment");
+  catalogue.TapePool()->createTapePool(admin, tapepool3Name, "vo", 1, std::nullopt, supplyList, "comment");
 
   //Create a storage class in the catalogue
   common::dataStructures::StorageClass storageClass;
@@ -4945,7 +4945,7 @@ TEST_P(SchedulerTest, expandRepackRequestShouldFailIfArchiveRouteMissing) {
   //Create two different destination tapepool
   std::string tapepool2Name = "tapepool2";
   const std::list<std::string> supplyList;
-  catalogue.TapePool()->createTapePool(admin, tapepool2Name, "vo", 1, false, supplyList, "comment");
+  catalogue.TapePool()->createTapePool(admin, tapepool2Name, "vo", 1, std::nullopt, supplyList, "comment");
 
   //Create a storage class in the catalogue
   common::dataStructures::StorageClass storageClass;
@@ -5128,10 +5128,10 @@ TEST_P(SchedulerTest, expandRepackRequestMoveAndAddCopies){
   //Create two different destination tapepool
   std::string tapepool2Name = "tapepool2";
   const std::list<std::string> supplyList;
-  catalogue.TapePool()->createTapePool(admin, tapepool2Name, "vo", 1, false, supplyList, "comment");
+  catalogue.TapePool()->createTapePool(admin, tapepool2Name, "vo", 1, std::nullopt, supplyList, "comment");
 
   std::string tapepool3Name = "tapepool3";
-  catalogue.TapePool()->createTapePool(admin, tapepool3Name, "vo", 1, false, supplyList, "comment");
+  catalogue.TapePool()->createTapePool(admin, tapepool3Name, "vo", 1, std::nullopt, supplyList, "comment");
 
   //Create a storage class in the catalogue
   common::dataStructures::StorageClass storageClass;
@@ -6664,7 +6664,7 @@ TEST_P(SchedulerTest, retrieveArchiveAllTypesMaxDrivesVoInFlightChangeScheduleMo
 
   //Create a new tapepool on the same VO
   std::string newTapepool = "new_tapepool";
-  catalogue.TapePool()->createTapePool(s_adminOnAdminHost, newTapepool, s_vo, 1, false, std::list<std::string>(),
+  catalogue.TapePool()->createTapePool(s_adminOnAdminHost, newTapepool, s_vo, 1, std::nullopt, std::list<std::string>(),
                                        "Test");
 
   //Create the third tape in the new tapepool
diff --git a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSessionTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSessionTest.cpp
index 90e387658c..352e015b97 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSessionTest.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSessionTest.cpp
@@ -379,11 +379,11 @@ public:
 
     const uint16_t nbPartialTapes = 1;
     const std::string tapePoolComment = "Tape-pool comment";
-    const bool tapePoolEncryption = false;
+    const std::optional<std::string> encryptionKeyName = std::nullopt;
     const std::list<std::string> tapePoolSupplyList;
 
     ASSERT_NO_THROW(catalogue.TapePool()->createTapePool(s_adminOnAdminHost, s_tapePoolName, vo.name, nbPartialTapes,
-                                                         tapePoolEncryption, tapePoolSupplyList, tapePoolComment));
+                                                           encryptionKeyName, tapePoolSupplyList, tapePoolComment));
     const uint32_t copyNb = 1;
     const std::string archiveRouteComment = "Archive-route comment";
     catalogue.ArchiveRoute()->createArchiveRoute(s_adminOnAdminHost, s_storageClassName, copyNb, cta::common::dataStructures::ArchiveRouteType::DEFAULT,
diff --git a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp
index b727ba07e5..8fecc52e2e 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/MigrationReportPackerTest.cpp
@@ -154,6 +154,7 @@ const uint32_t TEST_GROUP_2 = 9754;
     const bool logicalLibraryIsDisabled = false;
     std::optional<std::string> physicalLibraryName;
     const std::string tapePoolName = "tape_pool_name";
+    const std::string encryptionKeyName = "encryption_key_name";
     const std::list<std::string> supply_list;
     const bool fullValue = false;
     const std::string createTapeComment = "Create tape";
@@ -164,7 +165,7 @@ const uint32_t TEST_GROUP_2 = 9754;
     m_catalogue->VO()->createVirtualOrganization(admin,vo);
 
     m_catalogue->LogicalLibrary()->createLogicalLibrary(admin, logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
-    m_catalogue->TapePool()->createTapePool(admin, tapePoolName, vo.name, 2, true, supply_list, "Create tape pool");
+    m_catalogue->TapePool()->createTapePool(admin, tapePoolName, vo.name, 2, encryptionKeyName, supply_list, "Create tape pool");
     createMediaType(mediaType);
 
     {
@@ -315,7 +316,7 @@ const uint32_t TEST_GROUP_2 = 9754;
     std::optional<std::string> physicalLibraryName;
     const std::string tapePoolName = "tape_pool_name";
     const uint64_t nbPartialTapes = 2;
-    const bool isEncrypted = true;
+    const std::string encryptionKeyName = "encryption_key_name";
     const std::list<std::string> supply_list;
     const bool fullValue = false;
     const std::string createTapeComment = "Create tape";
@@ -327,7 +328,7 @@ const uint32_t TEST_GROUP_2 = 9754;
     m_catalogue->VO()->createVirtualOrganization(admin,vo);
 
     m_catalogue->LogicalLibrary()->createLogicalLibrary(admin, logicalLibraryName, logicalLibraryIsDisabled, physicalLibraryName, "Create logical library");
-    m_catalogue->TapePool()->createTapePool(admin, tapePoolName, vo.name, nbPartialTapes, isEncrypted, supply_list,
+    m_catalogue->TapePool()->createTapePool(admin, tapePoolName, vo.name, nbPartialTapes, encryptionKeyName, supply_list,
                                             "Create tape pool");
     createMediaType(mediaType);
 
-- 
GitLab


From 8e4f7457a5656d4ce9a3bc4dcc132e698ff71c34 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Wed, 19 Mar 2025 16:38:28 +0100
Subject: [PATCH 03/12] Improving encryptionKeyName argument passing

---
 catalogue/dummy/DummyTapePoolCatalogue.cpp    |  2 +-
 catalogue/dummy/DummyTapePoolCatalogue.hpp    |  2 +-
 catalogue/interfaces/TapePoolCatalogue.hpp    |  2 +-
 catalogue/rdbms/RdbmsTapePoolCatalogue.cpp    | 15 +++++------
 catalogue/rdbms/RdbmsTapePoolCatalogue.hpp    |  2 +-
 .../TapePoolCatalogueRetryWrapper.hpp         |  2 +-
 .../TapePoolRetryCatalogueWrapper.cpp         |  6 ++---
 .../tests/modules/TapePoolCatalogueTest.cpp   |  8 +++---
 cmdline/CtaAdminCmdParse.hpp                  | 13 ++++++++--
 frontend/common/AdminCmd.cpp                  | 25 +++++++++----------
 10 files changed, 42 insertions(+), 35 deletions(-)

diff --git a/catalogue/dummy/DummyTapePoolCatalogue.cpp b/catalogue/dummy/DummyTapePoolCatalogue.cpp
index 3956871b91..cabadb114f 100644
--- a/catalogue/dummy/DummyTapePoolCatalogue.cpp
+++ b/catalogue/dummy/DummyTapePoolCatalogue.cpp
@@ -63,7 +63,7 @@ void DummyTapePoolCatalogue::modifyTapePoolComment(const common::dataStructures:
 }
 
 void DummyTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const std::optional<std::string>& encryptionKeyNameOpt) {
+                                                   const std::string &name, const std::string &encryptionKeyName) {
   throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented");
 }
 
diff --git a/catalogue/dummy/DummyTapePoolCatalogue.hpp b/catalogue/dummy/DummyTapePoolCatalogue.hpp
index c6c097fac0..f1527e3dba 100644
--- a/catalogue/dummy/DummyTapePoolCatalogue.hpp
+++ b/catalogue/dummy/DummyTapePoolCatalogue.hpp
@@ -50,7 +50,7 @@ public:
     const std::string &comment) override;
 
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const std::optional<std::string>& encryptionKeyNameOpt) override;
+                             const std::string &encryptionKeyName) override;
 
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
diff --git a/catalogue/interfaces/TapePoolCatalogue.hpp b/catalogue/interfaces/TapePoolCatalogue.hpp
index b7753a2060..955bbb7c08 100644
--- a/catalogue/interfaces/TapePoolCatalogue.hpp
+++ b/catalogue/interfaces/TapePoolCatalogue.hpp
@@ -68,7 +68,7 @@ public:
     const std::string &comment) = 0;
 
   virtual void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const std::optional<std::string>& encryptionKeyNameOpt) = 0;
+                                     const std::string &encryptionKeyName) = 0;
 
   virtual void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                                     const std::string& name,
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
index 2a1aead30b..04cf35b7bd 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
@@ -137,13 +137,11 @@ void RdbmsTapePoolCatalogue::createTapePool(const common::dataStructures::Securi
   )SQL";
   auto stmt = conn.createStmt(sql);
 
-  bool isEncrypted = encryptionKeyNameOpt.has_value();
-
   stmt.bindUint64(":TAPE_POOL_ID", tapePoolId);
   stmt.bindString(":TAPE_POOL_NAME", name);
   stmt.bindString(":VO", vo);
   stmt.bindUint64(":NB_PARTIAL_TAPES", nbPartialTapes);
-  stmt.bindBool(":IS_ENCRYPTED", isEncrypted);
+  stmt.bindBool(":IS_ENCRYPTED", encryptionKeyNameOpt.has_value());
   stmt.bindString(":ENCRYPTION_KEY_NAME", encryptionKeyNameOpt);
   stmt.bindString(":SUPPLY", optionalSupplyString);
 
@@ -638,8 +636,13 @@ void RdbmsTapePoolCatalogue::modifyTapePoolComment(const common::dataStructures:
 }
 
 void RdbmsTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const std::optional<std::string>& encryptionKeyNameOpt) {
+                                                   const std::string &name, const std::string &encryptionKeyName) {
+
   const time_t now = time(nullptr);
+  std::optional<std::string> encryptionKeyNameOpt;
+  if (!encryptionKeyName.empty()) {
+    encryptionKeyNameOpt = encryptionKeyName;
+  }
   const char* const sql = R"SQL(
     UPDATE TAPE_POOL SET
       ENCRYPTION_KEY_NAME = :ENCRYPTION_KEY_NAME,
@@ -651,12 +654,10 @@ void RdbmsTapePoolCatalogue::setTapePoolEncryption(const common::dataStructures:
       TAPE_POOL_NAME = :TAPE_POOL_NAME
   )SQL";
 
-  bool isEncrypted = encryptionKeyNameOpt.has_value();
-
   auto conn = m_connPool->getConn();
   auto stmt = conn.createStmt(sql);
   stmt.bindString(":ENCRYPTION_KEY_NAME", encryptionKeyNameOpt);
-  stmt.bindBool(":IS_ENCRYPTED", isEncrypted);
+  stmt.bindBool(":IS_ENCRYPTED", encryptionKeyNameOpt.has_value());
   stmt.bindString(":LAST_UPDATE_USER_NAME", admin.username);
   stmt.bindString(":LAST_UPDATE_HOST_NAME", admin.host);
   stmt.bindUint64(":LAST_UPDATE_TIME", now);
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
index 9908ee89f6..81bd574416 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.hpp
@@ -65,7 +65,7 @@ public:
     const std::string &comment) override;
 
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const std::optional<std::string>& encryptionKeyNameOpt) override;
+                             const std::string &encryptionKeyName) override;
 
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
diff --git a/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp b/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
index be1ccb1b0a..524ac6cf14 100644
--- a/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
+++ b/catalogue/retrywrappers/TapePoolCatalogueRetryWrapper.hpp
@@ -58,7 +58,7 @@ public:
     const std::string &comment) override;
 
   void setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin, const std::string &name,
-    const std::optional<std::string>& encryptionKeyNameOpt) override;
+                             const std::string &encryptionKeyName) override;
 
   void modifyTapePoolSupply(const common::dataStructures::SecurityIdentity& admin,
                             const std::string& name,
diff --git a/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp b/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
index e7c0cea655..5e99883862 100644
--- a/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
+++ b/catalogue/retrywrappers/TapePoolRetryCatalogueWrapper.cpp
@@ -85,9 +85,9 @@ void TapePoolCatalogueRetryWrapper::modifyTapePoolComment(const common::dataStru
 }
 
 void TapePoolCatalogueRetryWrapper::setTapePoolEncryption(const common::dataStructures::SecurityIdentity &admin,
-  const std::string &name, const std::optional<std::string>& encryptionKeyNameOpt) {
-  return retryOnLostConnection(m_log, [this,&admin,&name,&encryptionKeyNameOpt] {
-    return m_catalogue->TapePool()->setTapePoolEncryption(admin, name, encryptionKeyNameOpt);
+                                                          const std::string &name, const std::string &encryptionKeyName) {
+  return retryOnLostConnection(m_log, [this,&admin,&name,&encryptionKeyName] {
+    return m_catalogue->TapePool()->setTapePoolEncryption(admin, name, encryptionKeyName);
   }, m_maxTriesToConnect);
 }
 
diff --git a/catalogue/tests/modules/TapePoolCatalogueTest.cpp b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
index bfc0953786..7893f873bf 100644
--- a/catalogue/tests/modules/TapePoolCatalogueTest.cpp
+++ b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
@@ -1013,8 +1013,7 @@ TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
     ASSERT_EQ(creationLog, lastModificationLog);
   }
 
-  const std::optional<std::string> encryptionKeyNull = std::nullopt;
-  m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, encryptionKeyNull);
+  m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, "");
 
   {
     const auto pools = m_catalogue->TapePool()->getTapePools();
@@ -1026,7 +1025,7 @@ TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
     ASSERT_EQ(m_vo.name, pool.vo.name);
     ASSERT_EQ(nbPartialTapes, pool.nbPartialTapes);
     ASSERT_EQ(false, pool.encryption);
-    ASSERT_EQ(encryptionKeyNull, pool.encryptionKeyName);
+    ASSERT_EQ(std::nullopt, pool.encryptionKeyName);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
@@ -1041,8 +1040,7 @@ TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption) {
 
 TEST_P(cta_catalogue_TapePoolTest, setTapePoolEncryption_nonExistentTapePool) {
   const std::string tapePoolName = "tape_pool";
-  const std::optional<std::string> encryptionKeyNull = std::nullopt;
-  ASSERT_THROW(m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, encryptionKeyNull),
+  ASSERT_THROW(m_catalogue->TapePool()->setTapePoolEncryption(m_admin, tapePoolName, ""),
     cta::exception::UserError);
 }
 
diff --git a/cmdline/CtaAdminCmdParse.hpp b/cmdline/CtaAdminCmdParse.hpp
index ad82fcfa24..ce7350ccbc 100644
--- a/cmdline/CtaAdminCmdParse.hpp
+++ b/cmdline/CtaAdminCmdParse.hpp
@@ -1092,7 +1092,13 @@ tapepool (tp)
     **ls** shows statistics such as the total number of tapes in the pool and number of free tapes.
   */
   {{AdminCmd::CMD_TAPEPOOL, AdminCmd::SUBCMD_ADD},
-   {opt_tapepool_alias, opt_vo, opt_partialtapes, opt_encrypted.optional(), opt_encryptionkeyname, opt_supply.optional(), opt_comment}                         },
+   {opt_tapepool_alias,
+    opt_vo,
+    opt_partialtapes,
+    opt_encrypted.optional(),
+    opt_encryptionkeyname.optional(),
+    opt_supply.optional(),
+    opt_comment}                                                                                                             },
   {{AdminCmd::CMD_TAPEPOOL, AdminCmd::SUBCMD_CH},
    {opt_tapepool_alias,
     opt_vo.optional(),
@@ -1103,7 +1109,10 @@ tapepool (tp)
     opt_comment.optional()}                                                                                                  },
   {{AdminCmd::CMD_TAPEPOOL, AdminCmd::SUBCMD_RM},             {opt_tapepool_alias}                                           },
   {{AdminCmd::CMD_TAPEPOOL, AdminCmd::SUBCMD_LS},
-   {opt_tapepool_alias.optional(), opt_vo.optional(), opt_encrypted.optional()}                                              },
+   {opt_tapepool_alias.optional(),
+    opt_vo.optional(),
+    opt_encrypted.optional(),
+    opt_encryptionkeyname.optional()}                                                                                        },
 
   /**md
 version (v)
diff --git a/frontend/common/AdminCmd.cpp b/frontend/common/AdminCmd.cpp
index 4b189ac7d7..67d7ee6ee6 100644
--- a/frontend/common/AdminCmd.cpp
+++ b/frontend/common/AdminCmd.cpp
@@ -1222,13 +1222,13 @@ void AdminCmd::processTapeFile_Rm(xrd::Response& response) {
 void AdminCmd::processTapePool_Add(xrd::Response& response) {
   using namespace cta::admin;
 
-  auto& name              = getRequired(OptionString::TAPE_POOL);
-  auto& vo                = getRequired(OptionString::VO);
-  auto& ptn               = getRequired(OptionUInt64::PARTIAL_TAPES_NUMBER);
-  auto& comment           = getRequired(OptionString::COMMENT);
-  auto encrypted          = getOptional(OptionBoolean::ENCRYPTED);
-  auto& encryptionKeyName = getRequired(OptionString::ENCRYPTION_KEY_NAME);
-  auto supply             = getOptional(OptionString::SUPPLY);
+  auto& name             = getRequired(OptionString::TAPE_POOL);
+  auto& vo               = getRequired(OptionString::VO);
+  auto& ptn              = getRequired(OptionUInt64::PARTIAL_TAPES_NUMBER);
+  auto& comment          = getRequired(OptionString::COMMENT);
+  auto encrypted         = getOptional(OptionBoolean::ENCRYPTED);
+  auto encryptionKeyName = getOptional(OptionString::ENCRYPTION_KEY_NAME);
+  auto supply            = getOptional(OptionString::SUPPLY);
 
   if(encrypted) {
     throw exception::UserError("The parameter '--encrypted' has been deprecated. Use '--encryptionkeyname'.");
@@ -1239,8 +1239,10 @@ void AdminCmd::processTapePool_Add(xrd::Response& response) {
     supply_list = cta::utils::commaSeparatedStringToList(supply.value());
   }
 
-  std::optional<std::string> encryptionKeyNameOpt = encryptionKeyName.empty() ? std::nullopt : encryptionKeyName;
-  m_catalogue.TapePool()->createTapePool(m_cliIdentity, name, vo, ptn, encryptionKeyNameOpt, supply_list, comment);
+  if (encryptionKeyName && encryptionKeyName.value().empty()) {
+    encryptionKeyName = std::nullopt;
+  }
+  m_catalogue.TapePool()->createTapePool(m_cliIdentity, name, vo, ptn, encryptionKeyName, supply_list, comment);
 
   response.set_type(xrd::Response::RSP_SUCCESS);
 }
@@ -1269,10 +1271,7 @@ void AdminCmd::processTapePool_Ch(xrd::Response& response) {
     m_catalogue.TapePool()->modifyTapePoolNbPartialTapes(m_cliIdentity, name, ptn.value());
   }
   if(encryptionKeyName) {
-    if (encryptionKeyName.value().empty()) {
-      encryptionKeyName.reset();
-    }
-    m_catalogue.TapePool()->setTapePoolEncryption(m_cliIdentity, name, encryptionKeyName);
+    m_catalogue.TapePool()->setTapePoolEncryption(m_cliIdentity, name, encryptionKeyName.value());
   }
   if(supply) {
     m_catalogue.TapePool()->modifyTapePoolSupply(m_cliIdentity, name,
-- 
GitLab


From f5742ef3a0e9118d874b87321a35a415d6d3205d Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Wed, 19 Mar 2025 17:12:51 +0100
Subject: [PATCH 04/12] Adding encryption key name to tapepool ls

---
 catalogue/TapePoolSearchCriteria.hpp           |  2 +-
 catalogue/rdbms/RdbmsTapePoolCatalogue.cpp     | 18 ++++++++++++++----
 .../tests/modules/TapePoolCatalogueTest.cpp    |  6 +++---
 xroot_plugins/XrdCtaTapePoolLs.hpp             |  6 +++++-
 4 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/catalogue/TapePoolSearchCriteria.hpp b/catalogue/TapePoolSearchCriteria.hpp
index 4549665b1b..3c61dbd5f6 100644
--- a/catalogue/TapePoolSearchCriteria.hpp
+++ b/catalogue/TapePoolSearchCriteria.hpp
@@ -47,7 +47,7 @@ struct TapePoolSearchCriteria {
     /**
     * Set to true if searching for encrypted tape pools.
     */
-    std::optional<bool> encrypted;
+    std::optional<std::string> encryptionKeyName;
 
 }; // struct TapePoolSearchCriteria
 
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
index 04cf35b7bd..215133cdd7 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
@@ -313,7 +313,7 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
       TAPE.MEDIA_TYPE_ID = MEDIA_TYPE.MEDIA_TYPE_ID
   )SQL";
 
-  if (searchCriteria.name || searchCriteria.vo || searchCriteria.encrypted) {
+  if (searchCriteria.name || searchCriteria.vo || searchCriteria.encryptionKeyName) {
     sql += R"SQL(
       WHERE
     )SQL";
@@ -336,13 +336,20 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
     addedAWhereConstraint = true;
   }
 
-  if (searchCriteria.encrypted) {
+  if (searchCriteria.encryptionKeyName) {
     if (addedAWhereConstraint) {
       sql += R"SQL( AND )SQL";
     }
     sql += R"SQL(
       TAPE_POOL.IS_ENCRYPTED = :ENCRYPTED
     )SQL";
+
+    if (!searchCriteria.encryptionKeyName.value().empty()) {
+      sql += R"SQL( AND )SQL";
+      sql += R"SQL(
+      TAPE_POOL.ENCRYPTION_KEY_NAME = :ENCRYPTION_KEY_NAME
+    )SQL";
+    }
   }
 
   sql += R"SQL(
@@ -376,8 +383,11 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
     stmt.bindString(":VO", searchCriteria.vo.value());
   }
 
-  if(searchCriteria.encrypted) {
-    stmt.bindBool(":ENCRYPTED", searchCriteria.encrypted.value());
+  if(searchCriteria.encryptionKeyName) {
+    stmt.bindBool(":ENCRYPTED", !searchCriteria.encryptionKeyName.value().empty());
+    if(!searchCriteria.encryptionKeyName.value().empty()) {
+      stmt.bindString(":ENCRYPTION_KEY_NAME", searchCriteria.encryptionKeyName.value());
+    }
   }
 
   auto rset = stmt.executeQuery();
diff --git a/catalogue/tests/modules/TapePoolCatalogueTest.cpp b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
index 7893f873bf..0753ffe0e3 100644
--- a/catalogue/tests/modules/TapePoolCatalogueTest.cpp
+++ b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
@@ -1384,7 +1384,7 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
 
   {
     cta::catalogue::TapePoolSearchCriteria criteria;
-    criteria.encrypted = true;
+    criteria.encryptionKeyName = firstPoolEncryptionKeyName;
     const auto pools = m_catalogue->TapePool()->getTapePools(criteria);
     ASSERT_EQ(1, pools.size());
 
@@ -1408,7 +1408,7 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
 
   {
     cta::catalogue::TapePoolSearchCriteria criteria;
-    criteria.encrypted = false;
+    criteria.encryptionKeyName = "";
     const auto pools = m_catalogue->TapePool()->getTapePools(criteria);
     ASSERT_EQ(1, pools.size());
 
@@ -1418,7 +1418,7 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
     ASSERT_EQ(nbSecondPoolPartialTapes, pool.nbPartialTapes);
     ASSERT_EQ(secondPoolEncryptionKeyNull.has_value(), pool.encryption);
     ASSERT_EQ(secondPoolEncryptionKeyNull, pool.encryptionKeyName);
-    ASSERT_FALSE((bool) pool.supply);
+    ASSERT_FALSE(pool.supply);
     ASSERT_EQ(0, pool.nbTapes);
     ASSERT_EQ(0, pool.capacityBytes);
     ASSERT_EQ(0, pool.dataBytes);
diff --git a/xroot_plugins/XrdCtaTapePoolLs.hpp b/xroot_plugins/XrdCtaTapePoolLs.hpp
index e31707d020..a97431ab46 100644
--- a/xroot_plugins/XrdCtaTapePoolLs.hpp
+++ b/xroot_plugins/XrdCtaTapePoolLs.hpp
@@ -66,9 +66,13 @@ TapePoolLsStream::TapePoolLsStream(const frontend::AdminCmdStream& requestMsg, c
   XrdSsiPb::Log::Msg(XrdSsiPb::Log::DEBUG, LOG_SUFFIX, "TapePoolLsStream() constructor");
   cta::catalogue::TapePoolSearchCriteria searchCriteria;
 
+  if(requestMsg.getOptional(OptionBoolean::ENCRYPTED)) {
+    throw exception::UserError("The parameter '--encrypted' has been deprecated. Use '--encryptionkeyname'.");
+  }
+
   searchCriteria.name = requestMsg.getOptional(OptionString::TAPE_POOL);
   searchCriteria.vo = requestMsg.getOptional(OptionString::VO);
-  searchCriteria.encrypted = requestMsg.getOptional(OptionBoolean::ENCRYPTED);
+  searchCriteria.encryptionKeyName = requestMsg.getOptional(OptionString::ENCRYPTION_KEY_NAME);
 
   m_tapePoolList = m_catalogue.TapePool()->getTapePools(searchCriteria);
 }
-- 
GitLab


From b88e0d9f78c2826db4e6e2c1b304fd849a46d1c8 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Wed, 19 Mar 2025 17:54:52 +0100
Subject: [PATCH 05/12] Improving tape pool ls

---
 catalogue/TapePool.cpp                                     | 1 +
 .../castor/tape/tapeserver/daemon/EncryptionControl.cpp    | 7 ++++---
 xroot_plugins/XrdCtaTapePoolLs.hpp                         | 1 +
 xrootd-ssi-protobuf-interface                              | 2 +-
 4 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/catalogue/TapePool.cpp b/catalogue/TapePool.cpp
index cf17204aa1..869fa46ed9 100644
--- a/catalogue/TapePool.cpp
+++ b/catalogue/TapePool.cpp
@@ -42,6 +42,7 @@ std::ostream &operator<<(std::ostream &os, const TapePool &obj) {
      << " vo=" << obj.vo.name
      << " nbPartialTapes=" << obj.nbPartialTapes
      << " encryption=" << obj.encryption
+     << " encryptionKeyName=" << obj.encryptionKeyName.value_or("")
      << " nbTapes=" << obj.nbTapes
      << " nbEmptyTapes=" << obj.nbEmptyTapes
      << " nbDisabledTapes=" << obj.nbDisabledTapes
diff --git a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
index c7307ffc25..a23d19f3ca 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
@@ -68,15 +68,16 @@ auto EncryptionControl::enable(castor::tape::tapeserver::drive::DriveInterface &
 
   // Write session with no encryption key name and encryption is disabled for the tape pool
   // Tape is guaranteed to be unencrypted, no need to run external script
-  if (isWriteSession && !pool->encryption && !volInfo.encryptionKeyName.has_value()) {
+  if (isWriteSession && !pool->encryptionKeyName && !pool->encryption && !volInfo.encryptionKeyName.has_value()) {
     encStatus = {false, "", "", ""};
     disable(m_drive);
     return encStatus;
   }
 
   // In other cases we call external script to get the key value from the JSON data store
+  std::string encryptionKeyName = volInfo.encryptionKeyName ? volInfo.encryptionKeyName.value() : pool->encryptionKeyName.value_or("");
   std::list<std::string> args(
-    {m_path, "--encryption-key-name", volInfo.encryptionKeyName.value_or(""), "--pool-name", volInfo.tapePool});
+    {m_path, "--encryption-key-name", encryptionKeyName, "--pool-name", volInfo.tapePool});
 
   cta::threading::SubProcess sp(m_path, args);
   sp.wait();
@@ -98,7 +99,7 @@ auto EncryptionControl::enable(castor::tape::tapeserver::drive::DriveInterface &
 
   // In write session check if we need to set the key name for the new tape
   // If tape pool encryption is enabled and key name is empty, it means we are writing to the new tape
-  if (isWriteSession && pool->encryption && !volInfo.encryptionKeyName.has_value()) {
+  if (isWriteSession && (pool->encryptionKeyName || pool->encryption) && !volInfo.encryptionKeyName.has_value()) {
     catalogue.Tape()->modifyTapeEncryptionKeyName({"ctaops", cta::utils::getShortHostname()}, volInfo.vid,
                                                   encStatus.keyName);
     encStatus.on = true;
diff --git a/xroot_plugins/XrdCtaTapePoolLs.hpp b/xroot_plugins/XrdCtaTapePoolLs.hpp
index a97431ab46..8305cee17d 100644
--- a/xroot_plugins/XrdCtaTapePoolLs.hpp
+++ b/xroot_plugins/XrdCtaTapePoolLs.hpp
@@ -92,6 +92,7 @@ int TapePoolLsStream::fillBuffer(XrdSsiPb::OStreamBuffer<Data> *streambuf) {
     tp_item->set_capacity_bytes(tp.capacityBytes);
     tp_item->set_data_bytes(tp.dataBytes);
     tp_item->set_encrypt(tp.encryption);
+    tp_item->set_encryption_key_name(tp.encryptionKeyName.value_or(""));
     tp_item->set_supply(tp.supply ? tp.supply.value() : "");
     tp_item->mutable_created()->set_username(tp.creationLog.username);
     tp_item->mutable_created()->set_host(tp.creationLog.host);
diff --git a/xrootd-ssi-protobuf-interface b/xrootd-ssi-protobuf-interface
index f59e44742c..ad2bd6c391 160000
--- a/xrootd-ssi-protobuf-interface
+++ b/xrootd-ssi-protobuf-interface
@@ -1 +1 @@
-Subproject commit f59e44742c6436a421157e76e5ee062c88d813bf
+Subproject commit ad2bd6c3914bee772ec15b664e0863715d101d70
-- 
GitLab


From 23c0b6a433e7ec44f45bf14844b67a7b2679d924 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Wed, 19 Mar 2025 17:57:00 +0100
Subject: [PATCH 06/12] Removing --encrypted command from system tests

---
 continuousintegration/orchestration/tests/prepare_tests.sh | 4 ----
 continuousintegration/orchestration/tests/test_repack.sh   | 6 +++---
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/continuousintegration/orchestration/tests/prepare_tests.sh b/continuousintegration/orchestration/tests/prepare_tests.sh
index cdead1d00b..5c8d96196f 100755
--- a/continuousintegration/orchestration/tests/prepare_tests.sh
+++ b/continuousintegration/orchestration/tests/prepare_tests.sh
@@ -176,7 +176,6 @@ kubectl --namespace ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tap
   --name ctasystest                                                    \
   --vo vo                                                              \
   --partialtapesnumber 5                                               \
-  --encrypted false                                                    \
   --comment "ctasystest"
 
 kubectl --namespace ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin storageclass add \
@@ -195,19 +194,16 @@ kubectl --namespace ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tap
   --name ctasystest_A                                                  \
   --vo vo                                                              \
   --partialtapesnumber 5                                               \
-  --encrypted false                                                    \
   --comment "ctasystest_A"
 kubectl --namespace ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add \
   --name ctasystest_B                                                  \
   --vo vo                                                              \
   --partialtapesnumber 5                                               \
-  --encrypted false                                                    \
   --comment "ctasystest_B"
 kubectl --namespace ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add \
   --name ctasystest_C                                                  \
   --vo vo                                                              \
   --partialtapesnumber 5                                               \
-  --encrypted false                                                    \
   --comment "ctasystest_C"
 
 kubectl --namespace ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin storageclass add \
diff --git a/continuousintegration/orchestration/tests/test_repack.sh b/continuousintegration/orchestration/tests/test_repack.sh
index 35b9191b3c..b95bce5bfd 100755
--- a/continuousintegration/orchestration/tests/test_repack.sh
+++ b/continuousintegration/orchestration/tests/test_repack.sh
@@ -432,12 +432,12 @@ repackMoveAndAddCopies() {
   tapepoolDestination2_repack="systest3_repack"
 
   echo "Creating 2 destination tapepools : $tapepoolDestination1_default and $tapepoolDestination2_default"
-  kubectl -n ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add --name $tapepoolDestination1_default --vo vo --partialtapesnumber 2 --encrypted false --comment "$tapepoolDestination1_default tapepool"
-  kubectl -n ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add --name $tapepoolDestination2_default --vo vo --partialtapesnumber 2 --encrypted false --comment "$tapepoolDestination2_default tapepool"
+  kubectl -n ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add --name $tapepoolDestination1_default --vo vo --partialtapesnumber 2 --comment "$tapepoolDestination1_default tapepool"
+  kubectl -n ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add --name $tapepoolDestination2_default --vo vo --partialtapesnumber 2 --comment "$tapepoolDestination2_default tapepool"
   echo "OK"
 
   echo "Creating 1 destination tapepool for repack : $tapepoolDestination2_repack (will override $tapepoolDestination2_default)"
-  kubectl -n ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add --name $tapepoolDestination2_repack --vo vo --partialtapesnumber 2 --encrypted false --comment "$tapepoolDestination2_repack tapepool"
+  kubectl -n ${NAMESPACE} exec ${CTA_CLI_POD} -c cta-cli -- cta-admin tapepool add --name $tapepoolDestination2_repack --vo vo --partialtapesnumber 2 --comment "$tapepoolDestination2_repack tapepool"
   echo "OK"
 
   echo "Creating archive routes for adding two copies of the file"
-- 
GitLab


From 563a4c6bacbd57de4ed87a30da124d9e3feb9952 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Wed, 19 Mar 2025 18:37:40 +0100
Subject: [PATCH 07/12] Logging script path and adding review feedback

---
 catalogue/TapePool.hpp                           |  4 ++--
 catalogue/TapePoolSearchCriteria.hpp             |  2 +-
 cmdline/blah                                     | 16 ----------------
 .../tape/tapeserver/daemon/EncryptionControl.cpp |  4 ++++
 .../tape/tapeserver/daemon/EncryptionControl.hpp |  6 ++++++
 .../tapeserver/daemon/TapeReadSingleThread.cpp   |  1 +
 .../tapeserver/daemon/TapeWriteSingleThread.cpp  |  1 +
 tapeserver/readtp/ReadtpCmd.cpp                  |  1 +
 8 files changed, 16 insertions(+), 19 deletions(-)
 delete mode 100644 cmdline/blah

diff --git a/catalogue/TapePool.hpp b/catalogue/TapePool.hpp
index 0563c72fd3..0484a683ac 100644
--- a/catalogue/TapePool.hpp
+++ b/catalogue/TapePool.hpp
@@ -75,8 +75,8 @@ struct TapePool {
   bool encryption = false;
 
   /**
- * Tape pool encryption key name.
- */
+   * Tape pool encryption key name.
+   */
   std::optional<std::string> encryptionKeyName;
 
   /**
diff --git a/catalogue/TapePoolSearchCriteria.hpp b/catalogue/TapePoolSearchCriteria.hpp
index 3c61dbd5f6..3ea8bb9df5 100644
--- a/catalogue/TapePoolSearchCriteria.hpp
+++ b/catalogue/TapePoolSearchCriteria.hpp
@@ -45,7 +45,7 @@ struct TapePoolSearchCriteria {
     std::optional<std::string> vo;
 
     /**
-    * Set to true if searching for encrypted tape pools.
+    * The encryption key name.
     */
     std::optional<std::string> encryptionKeyName;
 
diff --git a/cmdline/blah b/cmdline/blah
deleted file mode 100644
index b6f22aee26..0000000000
--- a/cmdline/blah
+++ /dev/null
@@ -1,16 +0,0 @@
-            type         tapepool        vo library vid files queued data queued oldest youngest priority min age read max drives write max drives cur. mounts cur. files cur. data tapes capacity files on tapes data on tapes full tapes writable tapes
-ArchiveForRepack systest2_default vo_repack       -   -         1153       17.7M    278      278        2       1               1                1           0          0         0          12.0T           1000         15.4M          0              1
-ArchiveForRepack       ctasystest vo_repack       -   -         1153       17.7M    279      279        2       1               1                1           0          0         0          24.0T           3153         48.4M          1              1
-ArchiveForRepack  systest3_repack vo_repack       -   -            0           0      0        0        0       0               1                1           1       2153     33.1M          12.0T           1000         15.4M          0              1
-Result of dr ls
-library   drive          host desired          request   status since    vid        tapepool        vo files  data MB/s session priority activity scheduler age reason
-VDSTK01 VDSTK01 cta-tpsrv01-0      Up                -     Free   286      -               -         -     -     -    -       -        0        -      ceph   2 -
-VDSTK02 VDSTK02 cta-tpsrv02-0      Up ArchiveForRepack Transfer   275 V00108 systest3_repack vo_repack  2153 33.1M  0.1      30        0        -      ceph   5 -
-Result of Repack ls
-          c.time repackTime    c.user    vid   tapepool providedFiles totalFiles totalBytes selectedFiles filesToRetrieve filesToArchive failed  status
-2025-03-04 11:37      5m12s ctaadmin2 V00101 ctasystest             0       2153      33.1M          6459               0           3679      0 Running
-DestinationVID  NbFiles  totalSize
-V00102          990      15206400
-V00106          990      15206400
-V00108          800      12288000
-command terminated with exit code 1
\ No newline at end of file
diff --git a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
index a23d19f3ca..6c7c7ec0a6 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
@@ -125,6 +125,10 @@ bool EncryptionControl::disable(castor::tape::tapeserver::drive::DriveInterface&
   return m_drive.clearEncryptionKey();
 }
 
+std::string EncryptionControl::getScriptPath() const {
+  return m_path;
+};
+
 namespace {
 struct JsonObjectDeleter {
   void operator()(json_object *jo) { json_object_put(jo); }
diff --git a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp
index 4b6ad5101c..0d31154279 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp
@@ -66,6 +66,12 @@ class EncryptionControl {
    */
   bool disable(castor::tape::tapeserver::drive::DriveInterface &m_drive);
 
+  /**
+   * Get script path
+   * @return The script path.
+   */
+  std::string getScriptPath() const;
+
  private:
   bool m_useEncryption; // Wether encryption must be enabled for the tape
   
diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp
index b21ae7e1a1..6bfdec4d5f 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp
@@ -330,6 +330,7 @@ void castor::tape::tapeserver::daemon::TapeReadSingleThread::run() {
           if (encryptionStatus.on) {
             encryptionLogParams.add("encryption", "on")
                                .add("encryptionKeyName", encryptionStatus.keyName)
+                               .add("scriptPath", m_encryptionControl.getScriptPath())
                                .add("stdout", encryptionStatus.stdout);
             m_logContext.log(cta::log::INFO, "Drive encryption enabled for this mount");
           } else {
diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp b/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp
index d9de8ca114..ec15a5a056 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/TapeWriteSingleThread.cpp
@@ -369,6 +369,7 @@ void castor::tape::tapeserver::daemon::TapeWriteSingleThread::run() {
           if (encryptionStatus.on) {
             encryptionLogParams.add("encryption", "on")
               .add("encryptionKeyName", encryptionStatus.keyName)
+              .add("scriptPath", m_encryptionControl.getScriptPath())
               .add("stdout", encryptionStatus.stdout);
             m_logContext.log(cta::log::INFO, "Drive encryption enabled for this mount");
           } else {
diff --git a/tapeserver/readtp/ReadtpCmd.cpp b/tapeserver/readtp/ReadtpCmd.cpp
index f729af0ca6..8a9a8eaa23 100644
--- a/tapeserver/readtp/ReadtpCmd.cpp
+++ b/tapeserver/readtp/ReadtpCmd.cpp
@@ -583,6 +583,7 @@ void ReadtpCmd::configureEncryption(castor::tape::tapeserver::daemon::VolumeInfo
       if (encryptionStatus.on) {
         params.push_back(cta::log::Param("encryption", "on"));
         params.push_back(cta::log::Param("encryptionKeyName", encryptionStatus.keyName));
+        params.push_back(cta::log::Param("scriptPath", m_encryptionControl->getScriptPath()));
         params.push_back(cta::log::Param("stdout", encryptionStatus.stdout));
         m_log(cta::log::INFO, "Drive encryption enabled for this mount", params);
       } else {
-- 
GitLab


From 6cee4409f3c31cc75dfbbbe10b2f00887d9b0efb Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Thu, 20 Mar 2025 10:16:22 +0100
Subject: [PATCH 08/12] Keeping for '--encrypted' and '--encryptionkeyname' in
 'tp ls'

---
 catalogue/TapePoolSearchCriteria.hpp          |  5 ++
 catalogue/rdbms/RdbmsTapePoolCatalogue.cpp    | 30 +++++---
 .../tests/modules/TapePoolCatalogueTest.cpp   | 75 +++++++++++++++++++
 xroot_plugins/XrdCtaTapePoolLs.hpp            |  9 ++-
 4 files changed, 105 insertions(+), 14 deletions(-)

diff --git a/catalogue/TapePoolSearchCriteria.hpp b/catalogue/TapePoolSearchCriteria.hpp
index 3ea8bb9df5..41a409db12 100644
--- a/catalogue/TapePoolSearchCriteria.hpp
+++ b/catalogue/TapePoolSearchCriteria.hpp
@@ -44,6 +44,11 @@ struct TapePoolSearchCriteria {
     */
     std::optional<std::string> vo;
 
+    /**
+    * Set to true if searching for encrypted tape pools.
+    */
+    std::optional<bool> encrypted;
+
     /**
     * The encryption key name.
     */
diff --git a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
index 215133cdd7..980bdb50c9 100644
--- a/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
+++ b/catalogue/rdbms/RdbmsTapePoolCatalogue.cpp
@@ -313,7 +313,7 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
       TAPE.MEDIA_TYPE_ID = MEDIA_TYPE.MEDIA_TYPE_ID
   )SQL";
 
-  if (searchCriteria.name || searchCriteria.vo || searchCriteria.encryptionKeyName) {
+  if (searchCriteria.name || searchCriteria.vo || searchCriteria.encrypted || searchCriteria.encryptionKeyName) {
     sql += R"SQL(
       WHERE
     )SQL";
@@ -336,19 +336,28 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
     addedAWhereConstraint = true;
   }
 
-  if (searchCriteria.encryptionKeyName) {
+  if (searchCriteria.encrypted) {
     if (addedAWhereConstraint) {
       sql += R"SQL( AND )SQL";
     }
     sql += R"SQL(
       TAPE_POOL.IS_ENCRYPTED = :ENCRYPTED
     )SQL";
+    addedAWhereConstraint = true;
+  }
 
-    if (!searchCriteria.encryptionKeyName.value().empty()) {
+  if (searchCriteria.encryptionKeyName) {
+    if (addedAWhereConstraint) {
       sql += R"SQL( AND )SQL";
+    }
+    if (searchCriteria.encryptionKeyName.value().empty()) {
       sql += R"SQL(
-      TAPE_POOL.ENCRYPTION_KEY_NAME = :ENCRYPTION_KEY_NAME
-    )SQL";
+        TAPE_POOL.ENCRYPTION_KEY_NAME IS NULL
+      )SQL";
+    } else {
+      sql += R"SQL(
+        TAPE_POOL.ENCRYPTION_KEY_NAME = :ENCRYPTION_KEY_NAME
+      )SQL";
     }
   }
 
@@ -383,11 +392,12 @@ std::list<TapePool> RdbmsTapePoolCatalogue::getTapePools(rdbms::Conn &conn,
     stmt.bindString(":VO", searchCriteria.vo.value());
   }
 
-  if(searchCriteria.encryptionKeyName) {
-    stmt.bindBool(":ENCRYPTED", !searchCriteria.encryptionKeyName.value().empty());
-    if(!searchCriteria.encryptionKeyName.value().empty()) {
-      stmt.bindString(":ENCRYPTION_KEY_NAME", searchCriteria.encryptionKeyName.value());
-    }
+  if(searchCriteria.encrypted) {
+    stmt.bindBool(":ENCRYPTED", searchCriteria.encrypted.value());
+  }
+
+  if(searchCriteria.encryptionKeyName && !searchCriteria.encryptionKeyName.value().empty()) {
+    stmt.bindString(":ENCRYPTION_KEY_NAME", searchCriteria.encryptionKeyName.value());
   }
 
   auto rset = stmt.executeQuery();
diff --git a/catalogue/tests/modules/TapePoolCatalogueTest.cpp b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
index 0753ffe0e3..2b6500d062 100644
--- a/catalogue/tests/modules/TapePoolCatalogueTest.cpp
+++ b/catalogue/tests/modules/TapePoolCatalogueTest.cpp
@@ -1382,6 +1382,81 @@ TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncrypted) {
     secondPoolEncryptionKeyNull, secondPoolSupply, secondPoolComment);
 
 
+  {
+    cta::catalogue::TapePoolSearchCriteria criteria;
+    criteria.encrypted = true;
+    const auto pools = m_catalogue->TapePool()->getTapePools(criteria);
+    ASSERT_EQ(1, pools.size());
+
+    const auto &pool = pools.front();
+    ASSERT_EQ(tapePoolName, pool.name);
+    ASSERT_EQ(m_vo.name, pool.vo.name);
+    ASSERT_EQ(nbFirstPoolPartialTapes, pool.nbPartialTapes);
+    ASSERT_EQ(true, pool.encryption);
+    ASSERT_EQ(firstPoolEncryptionKeyName, pool.encryptionKeyName);
+    ASSERT_EQ(std::nullopt, pool.supply);
+    ASSERT_EQ(0, pool.nbTapes);
+    ASSERT_EQ(0, pool.capacityBytes);
+    ASSERT_EQ(0, pool.dataBytes);
+    ASSERT_EQ(0, pool.nbPhysicalFiles);
+    ASSERT_EQ(firstPoolComment, pool.comment);
+
+    const cta::common::dataStructures::EntryLog creationLog = pool.creationLog;
+    ASSERT_EQ(m_admin.username, creationLog.username);
+    ASSERT_EQ(m_admin.host, creationLog.host);
+  }
+
+  {
+    cta::catalogue::TapePoolSearchCriteria criteria;
+    criteria.encrypted = false;
+    const auto pools = m_catalogue->TapePool()->getTapePools(criteria);
+    ASSERT_EQ(1, pools.size());
+
+    const auto &pool = pools.front();
+    ASSERT_EQ(secondTapePoolName, pool.name);
+    ASSERT_EQ(m_anotherVo.name, pool.vo.name);
+    ASSERT_EQ(nbSecondPoolPartialTapes, pool.nbPartialTapes);
+    ASSERT_EQ(false, pool.encryption);
+    ASSERT_EQ(secondPoolEncryptionKeyNull, pool.encryptionKeyName);
+    ASSERT_FALSE(pool.supply);
+    ASSERT_EQ(0, pool.nbTapes);
+    ASSERT_EQ(0, pool.capacityBytes);
+    ASSERT_EQ(0, pool.dataBytes);
+    ASSERT_EQ(0, pool.nbPhysicalFiles);
+    ASSERT_EQ(secondPoolComment, pool.comment);
+
+    const cta::common::dataStructures::EntryLog creationLog = pool.creationLog;
+    ASSERT_EQ(m_admin.username, creationLog.username);
+    ASSERT_EQ(m_admin.host, creationLog.host);
+  }
+}
+
+TEST_P(cta_catalogue_TapePoolTest, getTapePools_filterEncryptionKeyName) {
+  const std::string tapePoolName = "tape_pool";
+  const std::string secondTapePoolName = "tape_pool_2";
+
+  const uint64_t nbFirstPoolPartialTapes = 2;
+  const uint64_t nbSecondPoolPartialTapes = 3;
+
+  const std::optional<std::string> firstPoolEncryptionKeyName = "encryption_key_name";
+  const std::optional<std::string> secondPoolEncryptionKeyNull = std::nullopt;
+
+  const std::list<std::string> firstPoolSupply;
+  const std::list<std::string> secondPoolSupply;
+
+  const std::string firstPoolComment = "Create first tape pool";
+  const std::string secondPoolComment = "Create second tape pool";
+
+  m_catalogue->DiskInstance()->createDiskInstance(m_admin, m_diskInstance.name, m_diskInstance.comment);
+  m_catalogue->VO()->createVirtualOrganization(m_admin, m_vo);
+  m_catalogue->VO()->createVirtualOrganization(m_admin, m_anotherVo);
+
+  m_catalogue->TapePool()->createTapePool(m_admin, tapePoolName, m_vo.name, nbFirstPoolPartialTapes,
+    firstPoolEncryptionKeyName, firstPoolSupply, firstPoolComment);
+  m_catalogue->TapePool()->createTapePool(m_admin, secondTapePoolName, m_anotherVo.name, nbSecondPoolPartialTapes,
+    secondPoolEncryptionKeyNull, secondPoolSupply, secondPoolComment);
+
+
   {
     cta::catalogue::TapePoolSearchCriteria criteria;
     criteria.encryptionKeyName = firstPoolEncryptionKeyName;
diff --git a/xroot_plugins/XrdCtaTapePoolLs.hpp b/xroot_plugins/XrdCtaTapePoolLs.hpp
index 8305cee17d..bde13c1068 100644
--- a/xroot_plugins/XrdCtaTapePoolLs.hpp
+++ b/xroot_plugins/XrdCtaTapePoolLs.hpp
@@ -66,14 +66,15 @@ TapePoolLsStream::TapePoolLsStream(const frontend::AdminCmdStream& requestMsg, c
   XrdSsiPb::Log::Msg(XrdSsiPb::Log::DEBUG, LOG_SUFFIX, "TapePoolLsStream() constructor");
   cta::catalogue::TapePoolSearchCriteria searchCriteria;
 
-  if(requestMsg.getOptional(OptionBoolean::ENCRYPTED)) {
-    throw exception::UserError("The parameter '--encrypted' has been deprecated. Use '--encryptionkeyname'.");
-  }
-
   searchCriteria.name = requestMsg.getOptional(OptionString::TAPE_POOL);
   searchCriteria.vo = requestMsg.getOptional(OptionString::VO);
+  searchCriteria.encrypted = requestMsg.getOptional(OptionBoolean::ENCRYPTED);
   searchCriteria.encryptionKeyName = requestMsg.getOptional(OptionString::ENCRYPTION_KEY_NAME);
 
+  if(searchCriteria.encrypted && searchCriteria.encryptionKeyName) {
+    throw exception::UserError("Do not request both '--encrypted' and '--encryptionkeyname' at same time.");
+  }
+
   m_tapePoolList = m_catalogue.TapePool()->getTapePools(searchCriteria);
 }
 
-- 
GitLab


From cb6b32698a970252c729eac1694a4c14a50d0f4f Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Thu, 20 Mar 2025 10:22:53 +0100
Subject: [PATCH 09/12] Fixing cppcheck error

---
 tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp | 2 +-
 tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
index 6c7c7ec0a6..5c742124ec 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.cpp
@@ -125,7 +125,7 @@ bool EncryptionControl::disable(castor::tape::tapeserver::drive::DriveInterface&
   return m_drive.clearEncryptionKey();
 }
 
-std::string EncryptionControl::getScriptPath() const {
+const std::string & EncryptionControl::getScriptPath() const {
   return m_path;
 };
 
diff --git a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp
index 0d31154279..a1ce9c69d7 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/EncryptionControl.hpp
@@ -70,7 +70,7 @@ class EncryptionControl {
    * Get script path
    * @return The script path.
    */
-  std::string getScriptPath() const;
+  const std::string & getScriptPath() const;
 
  private:
   bool m_useEncryption; // Wether encryption must be enabled for the tape
-- 
GitLab


From 8298f259168f74e0bd4be2b670de7dddc0b801d6 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Fri, 21 Mar 2025 10:31:32 +0100
Subject: [PATCH 10/12] Fixing cta-admin tests

---
 continuousintegration/orchestration/tests/cta_admin.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/continuousintegration/orchestration/tests/cta_admin.sh b/continuousintegration/orchestration/tests/cta_admin.sh
index e97113ef21..f8764a1c0f 100755
--- a/continuousintegration/orchestration/tests/cta_admin.sh
+++ b/continuousintegration/orchestration/tests/cta_admin.sh
@@ -336,11 +336,11 @@ test_assert || exit 1
 
 # Tape Pool (tp)
 test_start "tape pool" "tp"
-test_and_check_cmd "Adding tape pool 'cta_admin_test'" "${command}" "add" "-n 'cta_admin_test' --vo vo -p 0 -e false -m 'Test tp cmd'"\
-  'select(.name=="cta_admin_test" and .vo=="vo" and .numPartialTapes=="0" and .encrypt==false and .comment=="Test tp cmd") | .vo'\
+test_and_check_cmd "Adding tape pool 'cta_admin_test'" "${command}" "add" "-n 'cta_admin_test' --vo vo -p 0 -m 'Test tp cmd'"\
+  'select(.name=="cta_admin_test" and .vo=="vo" and .numPartialTapes=="0" and .encrypt==false and .encryptionKeyName="" and .comment=="Test tp cmd") | .vo'\
   "1" "adding tape pool 'cta_admin_test'" || exit 1
-test_and_check_cmd "Changing tape pool 'cta_admin_test'" "${command}" "ch" "-n 'cta_admin_test' -e true"\
-  'select(.name=="cta_admin_test" and .encrypt==true) | .vo'\
+test_and_check_cmd "Changing tape pool 'cta_admin_test'" "${command}" "ch" "-n 'cta_admin_test' -k encrypt_key_name"\
+  'select(.name=="cta_admin_test" and .encrypt==true and .encryptionKeyName="encrypt_key_name") | .vo'\
   "1" "changing tape pool 'cta_admin_test'" || exit 1
 test_command "Removing tape pool 'cta_admin_test'" "${command}" "rm" "-n 'cta_admin_test'" || exit 1
 test_assert|| exit 1
-- 
GitLab


From e2b0e6f035ef054d46291d3439d1afbfde999261 Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Fri, 21 Mar 2025 11:45:40 +0100
Subject: [PATCH 11/12] Minor fix in jq command

---
 continuousintegration/orchestration/tests/cta_admin.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/continuousintegration/orchestration/tests/cta_admin.sh b/continuousintegration/orchestration/tests/cta_admin.sh
index f8764a1c0f..17850dc4e7 100755
--- a/continuousintegration/orchestration/tests/cta_admin.sh
+++ b/continuousintegration/orchestration/tests/cta_admin.sh
@@ -337,10 +337,10 @@ test_assert || exit 1
 # Tape Pool (tp)
 test_start "tape pool" "tp"
 test_and_check_cmd "Adding tape pool 'cta_admin_test'" "${command}" "add" "-n 'cta_admin_test' --vo vo -p 0 -m 'Test tp cmd'"\
-  'select(.name=="cta_admin_test" and .vo=="vo" and .numPartialTapes=="0" and .encrypt==false and .encryptionKeyName="" and .comment=="Test tp cmd") | .vo'\
+  'select(.name=="cta_admin_test" and .vo=="vo" and .numPartialTapes=="0" and .encrypt==false and .encryptionKeyName=="" and .comment=="Test tp cmd") | .vo'\
   "1" "adding tape pool 'cta_admin_test'" || exit 1
 test_and_check_cmd "Changing tape pool 'cta_admin_test'" "${command}" "ch" "-n 'cta_admin_test' -k encrypt_key_name"\
-  'select(.name=="cta_admin_test" and .encrypt==true and .encryptionKeyName="encrypt_key_name") | .vo'\
+  'select(.name=="cta_admin_test" and .encrypt==true and .encryptionKeyName=="encrypt_key_name") | .vo'\
   "1" "changing tape pool 'cta_admin_test'" || exit 1
 test_command "Removing tape pool 'cta_admin_test'" "${command}" "rm" "-n 'cta_admin_test'" || exit 1
 test_assert|| exit 1
-- 
GitLab


From 5941edfcc693620ae7bd2270767db0803c7badfe Mon Sep 17 00:00:00 2001
From: Joao Afonso <joao.afonso@cern.ch>
Date: Fri, 21 Mar 2025 13:40:44 +0100
Subject: [PATCH 12/12] Minor fix in postrun script

---
 continuousintegration/orchestration/tests/postrun_checks.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/continuousintegration/orchestration/tests/postrun_checks.sh b/continuousintegration/orchestration/tests/postrun_checks.sh
index fc5ae637fe..a62601ce70 100755
--- a/continuousintegration/orchestration/tests/postrun_checks.sh
+++ b/continuousintegration/orchestration/tests/postrun_checks.sh
@@ -78,7 +78,7 @@ for pod in $(echo "${pods}" | jq -r '.metadata.name'); do
     # We ignore core dumps of xrdcp on the client pod (see #1113)
     coredumpfiles=$(kubectl --namespace "${NAMESPACE}" exec "${pod}" -c "${container}" -- \
                       bash -c "find /var/log/tmp/ -type f -name '*.core' 2>/dev/null \
-                               | grep -v -E 'client-0-[0-9]+-xrdcp-.*\.core$'
+                               | grep -v -E 'client-0-[0-9]+-xrdcp-.*\.core$' \
                                || true")
     if [ -n "${coredumpfiles}" ]; then
       num_files=$(wc -l <<< "${coredumpfiles}")
-- 
GitLab