diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp
index e09fefd4d19eb96abd4af1b1b0f39b1e63266974..01e44e8c40ef17941a6b59226245c5dcb62e88c6 100644
--- a/receiver/src/main.cpp
+++ b/receiver/src/main.cpp
@@ -10,6 +10,7 @@
 
 #include "receiver_data_server/receiver_data_server.h"
 #include "receiver_data_server/net_server/rds_tcp_server.h"
+#include "receiver_data_server/net_server/rds_fabric_server.h"
 
 asapo::Error ReadConfigFile(int argc, char* argv[]) {
     if (argc != 2) {
@@ -22,8 +23,17 @@ asapo::Error ReadConfigFile(int argc, char* argv[]) {
 
 void AddDataServers(const asapo::ReceiverConfig* config, asapo::SharedCache cache,
                     std::vector<asapo::RdsNetServerPtr>& netServers) {
-    // Add TCP
-    netServers.emplace_back(new asapo::RdsTcpServer("0.0.0.0:" + std::to_string(config->dataserver.listen_port)));
+    auto ds_config = config->dataserver;
+    auto networkingMode = ds_config.network_mode;
+    if (std::find(networkingMode.begin(), networkingMode.end(), "tcp") != networkingMode.end()) {
+        // Add TCP
+        netServers.emplace_back(new asapo::RdsTcpServer("0.0.0.0:" + std::to_string(ds_config.listen_port)));
+    }
+
+    if (std::find(networkingMode.begin(), networkingMode.end(), "fabric") != networkingMode.end()) {
+        // Add Fabric
+        netServers.emplace_back(new asapo::RdsFabricServer(ds_config.advertise_uri));
+    }
 }
 
 std::vector<std::thread> StartDataServers(const asapo::ReceiverConfig* config, asapo::SharedCache cache,
diff --git a/receiver/src/receiver_config.cpp b/receiver/src/receiver_config.cpp
index f0dffeef0455e5de6c090d99b193ca14747672f8..a3334cbe2f0ef282aace6d2621894e61342863b0 100644
--- a/receiver/src/receiver_config.cpp
+++ b/receiver/src/receiver_config.cpp
@@ -35,6 +35,7 @@ Error ReceiverConfigFactory::SetConfig(std::string file_name) {
     (err = parser.GetUInt64("AuthorizationInterval", &config.authorization_interval_ms)) ||
     (err = parser.GetString("PerformanceDbName", &config.performance_db_name)) ||
     (err = parser.Embedded("DataServer").GetString("AdvertiseURI", &config.dataserver.advertise_uri)) ||
+    (err = parser.Embedded("DataServer").GetArrayString("NetworkMode", &config.dataserver.network_mode)) ||
     (err = parser.GetString("LogLevel", &log_level));
 
     if (err) {
diff --git a/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp b/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp
index 43fa3b758de86ca129b2baa3bf408f86622a9075..a559456e5eacdaaded33a5c629f661939eeda05b 100644
--- a/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp
+++ b/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp
@@ -29,6 +29,8 @@ Error RdsFabricServer::Initialize() {
         return err;
     }
 
+    log__->Info("Started Fabric ReceiverDataServer at '" + server__->GetAddress() + "'");
+
     return err;
 }
 
diff --git a/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
index 8d681e9f400213dd9cdd7e354b2c393a7c861717..14c6cc84c69a1e7ab5592b59f41da20daa0528de 100644
--- a/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
+++ b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
@@ -14,9 +14,9 @@ Error RdsTcpServer::Initialize() {
     if (master_socket_ == kDisconnectedSocketDescriptor) {
         master_socket_ = io__->CreateAndBindIPTCPSocketListener(address_, kMaxPendingConnections, &err);
         if (!err) {
-            log__->Info("data server listening on " + address_);
+            log__->Info("Started TCP ReceiverDataServer at '" + address_ + "'");
         } else {
-            log__->Error("dataserver cannot listen on " + address_ + ": " + err->Explain());
+            log__->Error("TCP ReceiverDataServer cannot listen on " + address_ + ": " + err->Explain());
         }
     } else {
         err = TextError("Server was already initialized");
diff --git a/receiver/src/receiver_data_server/receiver_data_server_config.h b/receiver/src/receiver_data_server/receiver_data_server_config.h
index 46a3594dd645bbe61a4e59753974aeeceb7bdba5..208c87d96eeeb61e2cebaf6ecbb170ac42b518d4 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_config.h
+++ b/receiver/src/receiver_data_server/receiver_data_server_config.h
@@ -10,6 +10,7 @@ struct ReceiverDataServerConfig {
     uint64_t nthreads = 0;
     std::string tag;
     std::string advertise_uri;
+    std::vector<std::string> network_mode;
 };
 
 }