diff --git a/xroot_plugins/XrdSsiCtaRequestMessage.cpp b/xroot_plugins/XrdSsiCtaRequestMessage.cpp
index 20691f7543233743b06d6b87bcf7adc4323ad4d3..ba8a9f97a53b6d453bf5933e81ebf361ec904880 100644
--- a/xroot_plugins/XrdSsiCtaRequestMessage.cpp
+++ b/xroot_plugins/XrdSsiCtaRequestMessage.cpp
@@ -1564,65 +1564,19 @@ void RequestMessage::processShowQueues(const cta::admin::AdminCmd &admincmd, cta
 
 
 
-#if 0
 void RequestMessage::processStorageClass_Add(const cta::admin::AdminCmd &admincmd, cta::xrd::Response &response)
 {
    using namespace cta::admin;
 
-   std::stringstream cmdlineOutput;
+   common::dataStructures::StorageClass storageClass;
 
-  if("add" == m_requestTokens.at(2) || "ch" == m_requestTokens.at(2) || "rm" == m_requestTokens.at(2)) {
-    optional<std::string> scn = getOptionStringValue("-n", "--name", true, false);
-    optional<std::string> in = getOptionStringValue("-i", "--instance", true, false);
-    if("add" == m_requestTokens.at(2)) { //add
-      optional<uint64_t> cn = getOptionUint64Value("-c", "--copynb", true, false);
-      optional<std::string> comment = getOptionStringValue("-m", "--comment", true, false);
-      checkOptions(help.str());
-      common::dataStructures::StorageClass storageClass;
-      storageClass.diskInstance = in.value();
-      storageClass.name = scn.value();
-      storageClass.nbCopies = cn.value();
-      storageClass.comment = comment.value();
-      m_catalogue.createStorageClass(m_cliIdentity, storageClass);
-    }
-    else if("ch" == m_requestTokens.at(2)) { //ch
-      optional<uint64_t> cn = getOptionUint64Value("-c", "--copynb", false, false);
-      optional<std::string> comment = getOptionStringValue("-m", "--comment", false, false);
-      checkOptions(help.str());
-      if(comment) {
-        m_catalogue.modifyStorageClassComment(m_cliIdentity, in.value(), scn.value(), comment.value());
-      }
-      if(cn) {
-        m_catalogue.modifyStorageClassNbCopies(m_cliIdentity, in.value(), scn.value(), cn.value());
-      }
-    }
-    else { //rm
-      checkOptions(help.str());
-      m_catalogue.deleteStorageClass(in.value(), scn.value());
-    }
-  }
-  else if("ls" == m_requestTokens.at(2)) { //ls
-    std::list<cta::common::dataStructures::StorageClass> list= m_catalogue.getStorageClasses();
-    if(list.size()>0) {
-      std::vector<std::vector<std::string>> responseTable;
-      std::vector<std::string> header = {
-         "instance","storage class","number of copies","c.user","c.host","c.time","m.user","m.host","m.time","comment"
-      };
-      if(has_flag(OptionBoolean::SHOW_HEADER)) responseTable.push_back(header);    
-      for(auto it = list.cbegin(); it != list.cend(); it++) {
-        std::vector<std::string> currentRow;
-        currentRow.push_back(it->diskInstance);
-        currentRow.push_back(it->name);
-        currentRow.push_back(std::to_string(static_cast<unsigned long long>(it->nbCopies)));
-        addLogInfoToResponseRow(currentRow, it->creationLog, it->lastModificationLog);
-        currentRow.push_back(it->comment);
-        responseTable.push_back(currentRow);
-      }
-      cmdlineOutput << formatResponse(responseTable);
-    }
-  }
+   storageClass.diskInstance = m_option_str.at   (OptionString::INSTANCE);
+   storageClass.name         = m_option_str.at   (OptionString::STORAGE_CLASS);
+   storageClass.nbCopies     = m_option_uint64.at(OptionUInt64::COPY_NUMBER);
+   storageClass.comment      = m_option_str.at   (OptionString::COMMENT);
+
+   m_catalogue.createStorageClass(m_cliIdentity, storageClass);
 
-   response.set_message_txt(cmdlineOutput.str());
    response.set_type(cta::xrd::Response::RSP_SUCCESS);
 }
 
@@ -1632,9 +1586,19 @@ void RequestMessage::processStorageClass_Ch(const cta::admin::AdminCmd &admincmd
 {
    using namespace cta::admin;
 
-   std::stringstream cmdlineOutput;
+   auto &in  = m_option_str.at(OptionString::INSTANCE);
+   auto &scn = m_option_str.at(OptionString::STORAGE_CLASS);
+
+   auto comment = getOptional(OptionString::COMMENT, m_option_str);
+   auto cn      = getOptional(OptionUInt64::COPY_NUMBER, m_option_uint64);
+
+   if(comment) {
+      m_catalogue.modifyStorageClassComment(m_cliIdentity, in, scn, comment.value());
+   }
+   if(cn) {
+      m_catalogue.modifyStorageClassNbCopies(m_cliIdentity, in, scn, cn.value());
+   }
 
-   response.set_message_txt(cmdlineOutput.str());
    response.set_type(cta::xrd::Response::RSP_SUCCESS);
 }
 
@@ -1644,9 +1608,11 @@ void RequestMessage::processStorageClass_Rm(const cta::admin::AdminCmd &admincmd
 {
    using namespace cta::admin;
 
-   std::stringstream cmdlineOutput;
+   auto &in  = m_option_str.at(OptionString::INSTANCE);
+   auto &scn = m_option_str.at(OptionString::STORAGE_CLASS);
+
+   m_catalogue.deleteStorageClass(in, scn);
 
-   response.set_message_txt(cmdlineOutput.str());
    response.set_type(cta::xrd::Response::RSP_SUCCESS);
 }
 
@@ -1658,12 +1624,34 @@ void RequestMessage::processStorageClass_Ls(const cta::admin::AdminCmd &admincmd
 
    std::stringstream cmdlineOutput;
 
+   std::list<cta::common::dataStructures::StorageClass> list = m_catalogue.getStorageClasses();
+
+   if(!list.empty())
+   {
+      std::vector<std::vector<std::string>> responseTable;
+      std::vector<std::string> header = {
+         "instance","storage class","number of copies","c.user","c.host","c.time","m.user","m.host","m.time","comment"
+      };
+      if(has_flag(OptionBoolean::SHOW_HEADER)) responseTable.push_back(header);    
+      for(auto it = list.cbegin(); it != list.cend(); it++) {
+         std::vector<std::string> currentRow;
+         currentRow.push_back(it->diskInstance);
+         currentRow.push_back(it->name);
+         currentRow.push_back(std::to_string(static_cast<unsigned long long>(it->nbCopies)));
+         addLogInfoToResponseRow(currentRow, it->creationLog, it->lastModificationLog);
+         currentRow.push_back(it->comment);
+         responseTable.push_back(currentRow);
+      }
+      cmdlineOutput << formatResponse(responseTable);
+   }
+
    response.set_message_txt(cmdlineOutput.str());
    response.set_type(cta::xrd::Response::RSP_SUCCESS);
 }
 
 
 
+#if 0
 void RequestMessage::processTape_Add(const cta::admin::AdminCmd &admincmd, cta::xrd::Response &response)
 {
    using namespace cta::admin;