diff --git a/cmdline/CtaAdminCmd.cpp b/cmdline/CtaAdminCmd.cpp
index 8fac1605b1ae9bd4bb0b38977339ca90e275b0e6..30b8b780a1a5e1654b38f1ec570a8d5dda80ccaf 100644
--- a/cmdline/CtaAdminCmd.cpp
+++ b/cmdline/CtaAdminCmd.cpp
@@ -141,7 +141,6 @@ CtaAdminCmd::CtaAdminCmd(int argc, const char *const *const argv) :
 void CtaAdminCmd::send() const
 {
    // Validate the Protocol Buffer
-
    try {
       validateCmd(m_request.admincmd());
    } catch(std::runtime_error &ex) {
@@ -149,22 +148,23 @@ void CtaAdminCmd::send() const
    }
 
    // Get socket address of CTA Frontend endpoint
-
    cta::cmdline::Configuration cliConf("/etc/cta/cta-cli.conf");
    std::string endpoint = cliConf.getFrontendHostAndPort();
 
-   // Obtain a Service Provider
+   // Set configuration options
+   XrdSsiPb::Config config;
+   config.set("response_bufsize", StreamBufferSize);
+   config.set("request_timeout", DefaultRequestTimeout);
+   config.getEnv("request_timeout", "XRD_REQUESTTIMEOUT");
 
-   XrdSsiPbServiceType cta_service(endpoint, Resource, StreamBufferSize, GetRequestTimeout());
+   // Obtain a Service Provider
+   XrdSsiPbServiceType cta_service(endpoint, Resource, config);
 
    // Send the Request to the Service and get a Response
-
    cta::xrd::Response response;
-   
    auto stream_future = cta_service.Send(m_request, response);
 
    // Handle responses
-
    switch(response.type())
    {
       using namespace cta::xrd;
@@ -288,20 +288,6 @@ void CtaAdminCmd::throwUsage(const std::string &error_txt) const
    throw std::runtime_error(help.str());
 }
 
-
-
-int CtaAdminCmd::GetRequestTimeout() const
-{
-   const char *request_timeout_str = ::getenv("XRD_REQUESTTIMEOUT");
-
-   int request_timeout = request_timeout_str == nullptr ? DefaultRequestTimeout : atoi(request_timeout_str);
-
-   // Use default if XRD_REQUESTTIMEOUT is not a valid positive integer
-   if(request_timeout <= 0) request_timeout = DefaultRequestTimeout;
-
-   return request_timeout;
-}
-
 }} // namespace cta::admin
 
 
diff --git a/cmdline/CtaAdminCmd.hpp b/cmdline/CtaAdminCmd.hpp
index 24c5285c557ffb47a7b64d20b8ca90c3f47332e7..d3e331bfdf4058e6982e8454492eb5af5a7dabfb 100644
--- a/cmdline/CtaAdminCmd.hpp
+++ b/cmdline/CtaAdminCmd.hpp
@@ -58,13 +58,13 @@ private:
    /*
     * Member variables
     */
-   const std::string Resource      = "/ctafrontend";    //!< XRootD SSI Resource name
-   const int StreamBufferSize      = 1024;              //!< Buffer size for Data/Stream Responses
-   const int DefaultRequestTimeout = 10;                //!< Default Request Timeout. Can be overridden by
-                                                        //!< XRD_REQUESTTIMEOUT environment variable.
+   const std::string Resource              = "/ctafrontend";    //!< XRootD SSI Resource name
+   const std::string StreamBufferSize      = "1024";            //!< Buffer size for Data/Stream Responses
+   const std::string DefaultRequestTimeout = "10";              //!< Default Request Timeout. Can be overridden by
+                                                                //!< XRD_REQUESTTIMEOUT environment variable.
 
-   std::string       m_execname;                        //!< Executable name of this program
-   cta::xrd::Request m_request;                         //!< Protocol Buffer for the command and parameters
+   std::string       m_execname;    //!< Executable name of this program
+   cta::xrd::Request m_request;     //!< Protocol Buffer for the command and parameters
 
    static constexpr const char* const LOG_SUFFIX  = "CtaAdminCmd";    //!< Identifier for log messages
 };
diff --git a/xrootd-ssi-protobuf-interface b/xrootd-ssi-protobuf-interface
index bb95ae8b5acfc8424b6a5537a5738bd92b4dfb2a..abdb133901fb9451a27e941910a5a2228117ce99 160000
--- a/xrootd-ssi-protobuf-interface
+++ b/xrootd-ssi-protobuf-interface
@@ -1 +1 @@
-Subproject commit bb95ae8b5acfc8424b6a5537a5738bd92b4dfb2a
+Subproject commit abdb133901fb9451a27e941910a5a2228117ce99