diff --git a/continuousintegration/orchestration/helm/frontend/templates/configmaps/cta-frontend-xrootd.yaml b/continuousintegration/orchestration/helm/frontend/templates/configmaps/cta-frontend-xrootd.yaml
index 11378affea448f687d27116417c3d3cd72d2cdba..b1362725ea7472a6a93c6040bd1d0b21f7acaf07 100644
--- a/continuousintegration/orchestration/helm/frontend/templates/configmaps/cta-frontend-xrootd.yaml
+++ b/continuousintegration/orchestration/helm/frontend/templates/configmaps/cta-frontend-xrootd.yaml
@@ -20,8 +20,8 @@ data:
     cta.schedulerdb.scheduler_backend_name {{ $schedulerConfig.backend }}
     cta.schedulerdb.numberofthreads {{ .Values.conf.schedulerdb.numberOfThreads }}
     cta.schedulerdb.threadstacksize_mb {{ .Values.conf.schedulerdb.threadStackSizeMb }}
-    cta.schedulerdb.enable_repack_requests {{ .Values.conf.schedulerdb.enableRepackRequests }}
-    cta.schedulerdb.enable_user_requests {{ .Values.conf.schedulerdb.enableUserRequests }}
+    cta.schedulerdb.disable_repack_requests {{ .Values.conf.schedulerdb.disableRepackRequests }}
+    cta.schedulerdb.disable_user_requests {{ .Values.conf.schedulerdb.disableUserRequests }}
 
     # CTA Scheduler DB options - Cache timeout options (decreased for tests)
     cta.schedulerdb.tape_cache_max_age_secs {{ .Values.conf.schedulerdb.tapeCacheMaxAgeSecs }}
diff --git a/continuousintegration/orchestration/helm/frontend/values.yaml b/continuousintegration/orchestration/helm/frontend/values.yaml
index b1c985cf96574b01d0de69e853b8dc0284850822..282f530ea970d9af5524646edc94571199847ed8 100644
--- a/continuousintegration/orchestration/helm/frontend/values.yaml
+++ b/continuousintegration/orchestration/helm/frontend/values.yaml
@@ -25,8 +25,8 @@ conf:
   schedulerdb:
     numberOfThreads: 500
     threadStackSizeMb: 1
-    enableRepackRequests: "on"
-    enableUserRequests: "on"
+    disableRepackRequests: false
+    disableUserRequests: false
     tapeCacheMaxAgeSecs: 1
     retrieveQueueCacheMaxAgeSecs: 1
 
diff --git a/cta.spec.in b/cta.spec.in
index f2573c4630261fad83e06282771a084289380f19..c1c996f6b814f939636e6965c9b49fcd334870e8 100644
--- a/cta.spec.in
+++ b/cta.spec.in
@@ -206,6 +206,7 @@ dCache frontend
 %attr(0755,root,root) %{_bindir}/cta-frontend-grpc
 %attr(0644,root,root) /etc/systemd/system/cta-frontend-grpc.service
 %attr(0644,root,root) /etc/sysconfig/cta-frontend-grpc
+%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-frontend-grpc.conf.example
 %attr(0644,root,root) %doc /usr/share/man/man1/cta-frontend-grpc.1cta.gz
 
 %post -n cta-frontend-grpc
diff --git a/frontend/common/FrontendService.cpp b/frontend/common/FrontendService.cpp
index 803fa2e4e3e1a10282adadb3436d5e64947acf45..1d04598ec64f53362f1d45e4e0ebb3b92cb68b1f 100644
--- a/frontend/common/FrontendService.cpp
+++ b/frontend/common/FrontendService.cpp
@@ -324,23 +324,27 @@ FrontendService::FrontendService(const std::string& configFilename) : m_archiveF
 
   // Configure allowed requests
   {
-    m_acceptRepackRequests =
-      config.getOptionValueStr("cta.schedulerdb.enable_repack_requests").value() == "on" ? true : false;
+    // default value for both repack and user requests is "on"
+    std::optional<bool> disableRepackRequests = config.getOptionValueBool("cta.schedulerdb.disable_repack_requests");
+    m_acceptRepackRequests = disableRepackRequests.has_value() ? (!disableRepackRequests.value()) : true;
+
     std::list<log::Param> params;
-    params.push_back(log::Param("source", configFilename));
+    params.push_back(log::Param("source", disableRepackRequests.has_value() ? configFilename : "Compile time default"));
     params.push_back(log::Param("category", "cta.schedulerdb"));
-    params.push_back(log::Param("key", "enable_repack_requests"));
-    params.push_back(log::Param("value", config.getOptionValueStr("cta.schedulerdb.enable_repack_requests").value()));
+    params.push_back(log::Param("key", "disable_repack_requests"));
+    params.push_back(log::Param("value", config.getOptionValueStr("cta.schedulerdb.disable_repack_requests").value()));
     log(log::INFO, "Configuration entry", params);
   }
 
   {
-    m_acceptUserRequests = config.getOptionValueStr("cta.schedulerdb.enable_user_requests") == "on" ? true : false;
+    auto disableUserRequests = config.getOptionValueBool("cta.schedulerdb.disable_user_requests");
+    m_acceptUserRequests = disableUserRequests.has_value() ? (!disableUserRequests.value()) : true;
+
     std::list<log::Param> params;
-    params.push_back(log::Param("source", configFilename));
+    params.push_back(log::Param("source", disableUserRequests.has_value() ? configFilename : "Compile time default"));
     params.push_back(log::Param("category", "cta.schedulerdb"));
-    params.push_back(log::Param("key", "enable_user_requests"));
-    params.push_back(log::Param("value", config.getOptionValueStr("cta.schedulerdb.enable_user_requests").value()));
+    params.push_back(log::Param("key", "disable_user_requests"));
+    params.push_back(log::Param("value", config.getOptionValueStr("cta.schedulerdb.disable_user_requests").value()));
     log(log::INFO, "Configuration entry", params);
   }
 
@@ -374,25 +378,25 @@ FrontendService::FrontendService(const std::string& configFilename) : m_archiveF
   // Get the mount policy name for verification requests
 
   // Get the gRPC-specific values, if they are set (getOptionValue returns an std::optional)
-  std::optional<bool> TLS = config.getOptionValueBool("TLS");
-  m_Tls = TLS.has_value() ? TLS.value() : false;  // default value is false
-  auto TlsKey = config.getOptionValueStr("TlsKey");
+  std::optional<bool> tls = config.getOptionValueBool("grpc.tls");
+  m_tls = tls.has_value() ? tls.value() : false;  // default value is false
+  auto TlsKey = config.getOptionValueStr("grpc.tls.key");
   if (TlsKey.has_value()) {
-    m_TlsKey = TlsKey.value();
+    m_tlsKey = TlsKey.value();
   }
-  auto TlsCert = config.getOptionValueStr("TlsCert");
+  auto TlsCert = config.getOptionValueStr("grpc.tls.cert");
   if (TlsCert.has_value()) {
-    m_TlsCert = TlsCert.value();
+    m_tlsCert = TlsCert.value();
   }
-  auto TlsChain = config.getOptionValueStr("TlsChain");
+  auto TlsChain = config.getOptionValueStr("grpc.tls.chain");
   if (TlsChain.has_value()) {
-    m_TlsChain = TlsChain.value();
+    m_tlsChain = TlsChain.value();
   }
-  auto port = config.getOptionValueStr("port");
+  auto port = config.getOptionValueStr("grpc.port");
   if (port.has_value()) {
     m_port = port.value();
   }
-  auto threads = config.getOptionValueInt("threads");
+  auto threads = config.getOptionValueInt("grpc.numberofthreads");
   if (threads.has_value()) {
     m_threads = threads.value();
   }
diff --git a/frontend/common/FrontendService.hpp b/frontend/common/FrontendService.hpp
index 83a5e5acb543bf6f247a6930c4f7b95bd7c31032..04d13f1dab17c7380be2a935911d0b1fe9ab1812 100644
--- a/frontend/common/FrontendService.hpp
+++ b/frontend/common/FrontendService.hpp
@@ -119,22 +119,22 @@ public:
   /*
    * Get the TLS value
    */
-  bool getTls() const { return m_Tls; }
+  bool getTls() const { return m_tls; }
 
   /*
    * Get the TlsKey
    */
-  const std::optional<std::string> getTlsKey() const { return m_TlsKey; }
+  const std::optional<std::string> getTlsKey() const { return m_tlsKey; }
 
   /*
    * Get the TlsCert
    */
-  const std::optional<std::string> getTlsCert() const { return m_TlsCert; }
+  const std::optional<std::string> getTlsCert() const { return m_tlsCert; }
 
   /*
    * Get the TlsChain
    */
-  const std::optional<std::string> getTlsChain() const { return m_TlsChain; }
+  const std::optional<std::string> getTlsChain() const { return m_tlsChain; }
 
   /*
    * Get the gRPC server port
@@ -182,10 +182,10 @@ private:
   cta::NamespaceMap_t                           m_namespaceMap;                 //!< Endpoints for namespace queries  // gRPC-frontend specific variables
   std::optional<std::string>                    m_port;                         //!< The port for the gRPC server
   std::optional<int>                            m_threads;                      //!< The number of threads used by the gRPC server
-  bool                                          m_Tls;                          //!< Use TLS encryption for gRPC
-  std::optional<std::string>                    m_TlsKey;                       //!< The TLS service key file
-  std::optional<std::string>                    m_TlsCert;                      //!< The TLS service certificate file
-  std::optional<std::string>                    m_TlsChain;                     //!< The TLS CA chain file
+  bool                                          m_tls;                          //!< Use TLS encryption for gRPC
+  std::optional<std::string>                    m_tlsKey;                       //!< The TLS service key file
+  std::optional<std::string>                    m_tlsCert;                      //!< The TLS service certificate file
+  std::optional<std::string>                    m_tlsChain;                     //!< The TLS CA chain file
   // clang-format on
 };
 
diff --git a/frontend/grpc/CMakeLists.txt b/frontend/grpc/CMakeLists.txt
index d1578650f90ece7e59fffe8fcb410a55f0878002..e04c0983ee5fcf362ae400350cead1d7083ccb1f 100644
--- a/frontend/grpc/CMakeLists.txt
+++ b/frontend/grpc/CMakeLists.txt
@@ -44,6 +44,7 @@ install(TARGETS cta-frontend-grpc DESTINATION usr/bin)
 install (FILES cta-frontend-grpc.service DESTINATION etc/systemd/system)
 install (FILES cta-frontend-grpc.sysconfig DESTINATION /etc/sysconfig RENAME cta-frontend-grpc)
 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/cta-frontend-grpc.1cta DESTINATION /usr/share/man/man1)
+install (FILES cta-frontend-grpc.conf.example DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/cta)
 
 ##
 ## cta-frontend-grpc-stream-server
diff --git a/frontend/grpc/FrontendCmd.cpp b/frontend/grpc/FrontendCmd.cpp
index 097b391ced36edcded2ec562fed47e15eb3f92fe..9d162b23e3ab5a69700e70e286b84ff5023ff9b2 100644
--- a/frontend/grpc/FrontendCmd.cpp
+++ b/frontend/grpc/FrontendCmd.cpp
@@ -185,11 +185,11 @@ int cta::frontend::grpc::server::FrontendCmd::main(const int argc, char** argv)
   cta::common::Config config(strConFile);
   try {
     if (!uiPort) {
-      uiPort = config.getOptionValueUInt("port").value_or(DEFAULT_PORT);
+      uiPort = config.getOptionValueUInt("grpc.port").value_or(DEFAULT_PORT);
     }
-    strSslRoot = config.getOptionValueStr("SslRoot").value();
-    strSslKey = config.getOptionValueStr("SslKey").value();
-    strSslCert = config.getOptionValueStr("SslCert").value();
+    strSslRoot = config.getOptionValueStr("grpc.ssl.root").value();
+    strSslKey = config.getOptionValueStr("grpc.ssl.key").value();
+    strSslCert = config.getOptionValueStr("grpc.ssl.cert").value();
   } catch(const cta::exception::Exception &ex) {
     m_err << m_strExecName << ": problem while reading a configuration file - " << ex.getMessage().str() << std::endl;
     return EXIT_FAILURE;
@@ -200,7 +200,7 @@ int cta::frontend::grpc::server::FrontendCmd::main(const int argc, char** argv)
   }
 
   if(strKeytab.empty()) {
-    strKeytab = config.getOptionValueStr("Keytab").value_or("");
+    strKeytab = config.getOptionValueStr("grpc.keytab").value_or("");
     // and check again
     if(strKeytab.empty()) {
       m_err << m_strExecName << ": the keytab file is unspecified" << std::endl
diff --git a/frontend/grpc/cta-frontend-grpc.conf.example b/frontend/grpc/cta-frontend-grpc.conf.example
index 62d4d7e977822671a00a3ab8867e7651259e32cd..bddb45e40e18f921a8213b3f007db8ff61641405 100644
--- a/frontend/grpc/cta-frontend-grpc.conf.example
+++ b/frontend/grpc/cta-frontend-grpc.conf.example
@@ -20,55 +20,101 @@
 #
 # Unique string to identify CTA's instance the frontend is serving (i.e: production, preproduction).
 # Each of these instances should be associated with a specific CTA catalogue instance.
-InstanceName CI_local
+cta.instance_name CI_local
 
 # Unique string to identify the backend scheduler resources. As an exmple, it can be structured as:
 # "[ceph|postgres|vfs][User|Repack]".
-SchedulerBackendName vfsCI
+cta.schedulerdb.scheduler_backend_name vfsCI
 
+# CTA ObjectStore options
 # Scheduler endpoint
-BackendPath /path/to/local/objectstore
+#cta.objectstore.backendpath /path/to/local/objectstore
+
+# CTA Scheduler DB - thread options
+cta.schedulerdb.numberofthreads 500
+cta.schedulerdb.threadstacksize_mb 1
+
+# Maximum file size (in GB) that the CTA Frontend will accept for archiving
+# cta.archivefile.max_size_gb 1000
+
+# Disallow 0-length files
+# cta.archivefile.zero_length_files_forbidden on
+# Tapepools exempted from this check (if enabled)
+# cta.archivefile.zero_length_files_forbidden_vo_exception_list vo1 vo2 vo3
+
+# CTA Repack buffer URL
+# cta.repack.repack_buffer_url root://ctaeos//eos/ctaeos/repack
+
+# cta.repack.repack_max_files_to_select 100
+
+# CTA Verification Mount Policy
+# cta.verification.mount_policy verification
+
+# Keytab containing gRPC endpoints and tokens for each disk instance
+#cta.ns.config /etc/cta/eos.grpc.keytab
+
+
+# CTA Frontend log URL
+cta.log.url file:/var/log/cta/cta-frontend.log
+
+# CTA Logger log level
+# Valid log levels are EMERG, ALERT, CRIT, ERR, WARNING, NOTICE (==USERERR), INFO, DEBUG
+# cta.log.level DEBUG
+
+# CTA Logger log format
+# Valid formats are default, json
+# cta.log.format json
+
+# CTA Log header
+# cta.log.log_header true
 
 
 ####################################
 #  TLS related variables. Only used when TLS is true
 ####################################
 # Use TLS (previously the command-line option --tls)
-#TLS true/false
+#grpc.tls true/false
 #  TLS service key file
-#TlsKey /path/to/key
+#grpc.tls.key /path/to/key
 #
 #  TLS service certificate file
-#TlsCert /path/to/cert
+#grpc.tls.cert /path/to/cert
 #
 #  TLS CA chain file
-#TlsChain /path/to/CA/chain
+#grpc.tls.chain /path/to/CA/chain
 #
 
 # gRPC number of threads
-#threads nthreads
+#grpc.numberofthreads nthreads
 
 ####################################
 # CTA Scheduler DB cache timeout options
 ####################################
-#SchedulerDB TapeCacheMaxAgeSecs 600
-#SchedulerDB RetrieveQueueCacheMaxAgeSecs 10
+# cta.schedulerdb.tape_cache_max_age_secs 600
+# cta.schedulerdb.retrieve_queue_cache_max_age_secs 10
+
+# CTA Scheduler DB - enable requests for user or repack
+# cta.schedulerdb.disable_repack_requests false
+# cta.schedulerdb.disable_user_requests false
+
+# CTA Catalogue options
+cta.catalogue.numberofconnections 10
 
 
 ####################################
 # Variables used by cta-frontend-async-grpc
 ####################################
-# The port the gRPC frotnend is listening to
-#port 17017
+# The port the gRPC frontend is listening to
+#grpc.port 17017
 
 # The ca-cert file path
-#SslRoot /path/to/ca/cert
+#grpc.ssl.root /path/to/ca/cert
 
 # Ssl Key file
-#SslKey /path/to/ssl/key
+#grpc.ssl.key /path/to/ssl/key
 
 # Ssl certificate file
-#SslCert /path/to/ssl/cert
+#grpc.ssl.cert /path/to/ssl/cert
 
 # keytab file
-#Keytab /path/to/keytab
+#grpc.keytab /path/to/keytab
diff --git a/frontend/grpc/cta-frontend-grpc.service b/frontend/grpc/cta-frontend-grpc.service
index a1f0304e5785b98237823a9fc1b241b6d341b7dd..8441813b100a94bd04197c230aec819893c7ea9f 100644
--- a/frontend/grpc/cta-frontend-grpc.service
+++ b/frontend/grpc/cta-frontend-grpc.service
@@ -4,7 +4,7 @@ After=syslog.target network-online.target
 
 [Service]
 EnvironmentFile=/etc/sysconfig/cta-frontend-grpc
-ExecStart=/usr/bin/cta-frontend-grpc --no-log-header ${GRPC_USE_TLS} --port ${GRPC_PORT}
+ExecStart=/usr/bin/cta-frontend-grpc
 Type=simple
 Restart=always
 User=cta
diff --git a/xroot_plugins/cta-frontend-xrootd.conf.example b/xroot_plugins/cta-frontend-xrootd.conf.example
index 96a8004e18579cdf1e8cb1ddd7d0e4493f24267f..1c2f62d647fbebecc5763a302342ef3955b0daba 100644
--- a/xroot_plugins/cta-frontend-xrootd.conf.example
+++ b/xroot_plugins/cta-frontend-xrootd.conf.example
@@ -19,8 +19,8 @@ cta.schedulerdb.numberofthreads 500
 cta.schedulerdb.threadstacksize_mb 1
 
 # CTA Scheduler DB - enable requests for user or repack
-cta.schedulerdb.enable_repack_requests on
-cta.schedulerdb.enable_user_requests on
+# cta.schedulerdb.disable_repack_requests false
+# cta.schedulerdb.disable_user_requests false
 
 # CTA Scheduler DB - cache timeout options
 # cta.schedulerdb.tape_cache_max_age_secs 600