diff --git a/common/cpp/include/asapo/common/data_structs.h b/common/cpp/include/asapo/common/data_structs.h
index b864e310da8a0180d8bb5eab9543a7941a8703f6..1460af10bd07e7bf4abe0343988311e3cef53a95 100644
--- a/common/cpp/include/asapo/common/data_structs.h
+++ b/common/cpp/include/asapo/common/data_structs.h
@@ -22,6 +22,9 @@ std::chrono::system_clock::time_point TimePointfromNanosec(uint64_t nanoseconds_
 std::string IsoDateFromEpochNanosecs(uint64_t time_from_epoch_nanosec);
 uint64_t NanosecsEpochFromISODate(std::string date_time);
 
+std::string HostFromUri(const std::string& uri);
+
+
 bool TimeFromJson(const JsonStringParser& parser, const std::string& name, std::chrono::system_clock::time_point* val);
 
 class MessageMeta {
diff --git a/common/cpp/include/asapo/common/networking.h b/common/cpp/include/asapo/common/networking.h
index ca2c2f8e81fb6b788581e1d1cfe13cdbc816ca39..09009e49c59f33a42285d84bcd6be6007561bd34 100644
--- a/common/cpp/include/asapo/common/networking.h
+++ b/common/cpp/include/asapo/common/networking.h
@@ -18,7 +18,6 @@ enum class NetworkConnectionType : uint32_t {
     kFabric, // Fabric connection (Primarily used for InfiniBand verbs)
 };
 
-
 // do not forget to add new codes to the end!
 enum Opcode : uint8_t {
     kOpcodeUnknownOp = 1,
@@ -34,6 +33,30 @@ enum Opcode : uint8_t {
     kOpcodeCount,
 };
 
+inline std::string OpcodeToString(uint8_t code) {
+    switch (code) {
+    case kOpcodeTransferData:
+        return "transfer data";
+    case kOpcodeTransferDatasetData:
+        return "transfer dataset data";
+    case kOpcodeStreamInfo:
+        return "stream info";
+    case kOpcodeLastStream:
+        return "last stream";
+    case kOpcodeGetBufferData:
+        return "get buffer data";
+    case kOpcodeAuthorize:
+        return "authorize";
+    case kOpcodeTransferMetaData:
+        return "transfer metadata";
+    case kOpcodeDeleteStream:
+        return "delete stream";
+    case kOpcodeGetMeta:
+        return "get meta";
+    default:
+        return "unknown op";
+    }
+}
 
 enum NetworkErrorCode : uint16_t {
     kNetErrorNoError,
@@ -69,40 +92,38 @@ struct GenericRequestHeader {
     /* Keep in mind that the message here is just strncpy'ed, you can change the message later */
     GenericRequestHeader(Opcode i_op_code = kOpcodeUnknownOp, uint64_t i_data_id = 0,
                          uint64_t i_data_size = 0, uint64_t i_meta_size = 0, const std::string& i_message = "",
-                         const std::string& i_stream = ""):
+                         const std::string& i_stream = "") :
         op_code{i_op_code}, data_id{i_data_id}, data_size{i_data_size}, meta_size{i_meta_size} {
         strncpy(message, i_message.c_str(), kMaxMessageSize);
         strncpy(stream, i_stream.c_str(), kMaxMessageSize);
         strncpy(api_version, "v0.0", kMaxVersionSize);
     }
 
-    Opcode      op_code;
-    uint64_t    data_id;
-    uint64_t    data_size;
-    uint64_t    meta_size;
-    CustomRequestData    custom_data;
-    char        message[kMaxMessageSize]; /* Can also be a binary message (e.g. MemoryRegionDetails) */
-    char        stream[kMaxMessageSize]; /* Must be a string (strcpy is used) */
-    char        api_version[kMaxVersionSize]; /* Must be a string (strcpy is used) */
+    Opcode op_code;
+    uint64_t data_id;
+    uint64_t data_size;
+    uint64_t meta_size;
+    CustomRequestData custom_data;
+    char message[kMaxMessageSize]; /* Can also be a binary message (e.g. MemoryRegionDetails) */
+    char stream[kMaxMessageSize]; /* Must be a string (strcpy is used) */
+    char api_version[kMaxVersionSize]; /* Must be a string (strcpy is used) */
     std::string Json() {
         std::string s = "{\"id\":" + std::to_string(data_id) + ","
                         "\"buffer\":\"" + std::string(message) + "\"" + ","
-                        "\"stream\":\"" + std::string(stream) + "\""
+                        "\"stream\":\""
+                        + std::string(stream) + "\""
                         + "}";
         return s;
     };
 };
 
-
-
 struct GenericNetworkResponse {
-    Opcode              op_code;
-    NetworkErrorCode    error_code;
-    char        message[kMaxMessageSize];
+    Opcode op_code;
+    NetworkErrorCode error_code;
+    char message[kMaxMessageSize];
 };
 
-
-struct SendResponse :  GenericNetworkResponse {
+struct SendResponse : GenericNetworkResponse {
 };
 
 }
diff --git a/common/cpp/include/asapo/logger/logger.h b/common/cpp/include/asapo/logger/logger.h
index 030c39184b4e43d8dbfa364ad3b6f3798fbb2495..75fdc958bad0930d3fee00e7a6597190c9df88ec 100644
--- a/common/cpp/include/asapo/logger/logger.h
+++ b/common/cpp/include/asapo/logger/logger.h
@@ -20,6 +20,7 @@ class LogMessageWithFields {
   public:
     LogMessageWithFields(std::string key, uint64_t val);
     LogMessageWithFields(std::string key, double val, int precision);
+    LogMessageWithFields(std::string val);
     LogMessageWithFields(std::string key, std::string val);
     LogMessageWithFields& Append(std::string key, uint64_t val);
     LogMessageWithFields& Append(std::string key, double val, int precision);
diff --git a/common/cpp/src/data_structs/data_structs.cpp b/common/cpp/src/data_structs/data_structs.cpp
index c55d6017629b2c3ba24dfa9b59303e70b411968b..ae9712325530084b0759929d58acf764a7307d44 100644
--- a/common/cpp/src/data_structs/data_structs.cpp
+++ b/common/cpp/src/data_structs/data_structs.cpp
@@ -234,4 +234,9 @@ uint64_t NanosecsEpochFromISODate(std::string date_time) {
     return ns > 0 ? ns : 1;
 }
 
+std::string HostFromUri(const std::string& uri) {
+    return uri.substr(0, uri.find(':'));
+}
+
+
 }
diff --git a/common/cpp/src/logger/logger.cpp b/common/cpp/src/logger/logger.cpp
index 7e09a5da12289bab67f0a27a455019059fb7132a..6cb0fbe7c14570d1edc59f3eca69a18cab640ce4 100644
--- a/common/cpp/src/logger/logger.cpp
+++ b/common/cpp/src/logger/logger.cpp
@@ -1,3 +1,6 @@
+
+#include <asapo/logger/logger.h>
+
 #include "spd_logger.h"
 
 namespace asapo {
@@ -57,8 +60,12 @@ LogMessageWithFields::LogMessageWithFields(std::string key, double val, int prec
     log_string_ = EncloseQuotes(key) + ":" + string_format("%." + std::to_string(precision) + "f", val);
 }
 
+LogMessageWithFields::LogMessageWithFields(std::string val) {
+    log_string_ = EncloseQuotes("message") + ":" + EncloseQuotes(escape_json(val));
+}
+
 LogMessageWithFields::LogMessageWithFields(std::string key, std::string val) {
-    log_string_ = EncloseQuotes(key) + ":" + EncloseQuotes(val);
+    log_string_ = EncloseQuotes(key) + ":" + EncloseQuotes(escape_json(val));
 }
 
 LogMessageWithFields& LogMessageWithFields::Append(std::string key, uint64_t val) {
@@ -72,11 +79,12 @@ LogMessageWithFields& LogMessageWithFields::Append(std::string key, double val,
 }
 
 LogMessageWithFields& LogMessageWithFields::Append(std::string key, std::string val) {
-    log_string_ += "," + EncloseQuotes(key) + ":" + EncloseQuotes(val);
+    log_string_ += "," + EncloseQuotes(key) + ":" + EncloseQuotes(escape_json(val));
     return *this;
 }
 
 std::string LogMessageWithFields::LogString() const {
     return log_string_;
 }
+
 }
diff --git a/common/cpp/src/logger/spd_logger.h b/common/cpp/src/logger/spd_logger.h
index db0d6ee63c12eca8be3c3e9b37e15c63b63e7097..e623b27dfe5c9ee5b41ab99bbaab5e4f8241469f 100644
--- a/common/cpp/src/logger/spd_logger.h
+++ b/common/cpp/src/logger/spd_logger.h
@@ -34,6 +34,7 @@ class SpdLogger : public AbstractLogger {
 };
 
 std::string EncloseMsg(std::string msg);
+std::string escape_json(const std::string& s);
 
 }
 
diff --git a/common/cpp/unittests/data_structs/test_data_structs.cpp b/common/cpp/unittests/data_structs/test_data_structs.cpp
index d1a35ea664ca66a5cfb91510e4d4feaa31813378..a8bb9c468085b9126edaa19021bb240891b9158d 100644
--- a/common/cpp/unittests/data_structs/test_data_structs.cpp
+++ b/common/cpp/unittests/data_structs/test_data_structs.cpp
@@ -305,4 +305,23 @@ TEST(DeletaStreamOpt, EncodeDecode) {
 
 }
 
+
+struct TestUri {
+    std::string uri;
+    std::string host;
+};
+
+
+auto testsUri = std::vector<TestUri> {
+    TestUri{"123.234.24.13:123", "123.234.24.13"},
+    TestUri{"1.1.1.1", "1.1.1.1"},
+};
+
+TEST(HostFromUri, HostFromUri) {
+    for (auto test : testsUri) {
+        auto res = asapo::HostFromUri(test.uri);
+        ASSERT_THAT(res, Eq(test.host));
+    }
+}
+
 }
diff --git a/receiver/CMakeLists.txt b/receiver/CMakeLists.txt
index 5dd1bde163c50e9cdd81cd325526d39d847fdfaf..c0c8366e39a83c975767e9ebf9818a6f160f27ae 100644
--- a/receiver/CMakeLists.txt
+++ b/receiver/CMakeLists.txt
@@ -25,9 +25,9 @@ set(RECEIVER_CORE_FILES
         src/request_handler/request_handler_db_get_meta.cpp
         src/request_handler/request_factory.cpp
         src/request_handler/request_handler_db.cpp
-        src/file_processors/write_file_processor.cpp
-        src/file_processors/file_processor.cpp
-        src/file_processors/receive_file_processor.cpp
+        src/request_handler/file_processors/write_file_processor.cpp
+        src/request_handler/file_processors/file_processor.cpp
+        src/request_handler/file_processors/receive_file_processor.cpp
         src/metrics/receiver_prometheus_metrics.cpp
         src/metrics/receiver_mongoose_server.cpp
         )
@@ -109,9 +109,9 @@ set(TEST_SOURCE_FILES
         unittests/mock_receiver_config.cpp
         unittests/request_handler/test_requests_dispatcher.cpp
         unittests/test_datacache.cpp
-        unittests/file_processors/test_write_file_processor.cpp
-        unittests/file_processors/test_file_processor.cpp
-        unittests/file_processors/test_receive_file_processor.cpp
+        unittests/request_handler/file_processors/test_write_file_processor.cpp
+        unittests/request_handler/file_processors/test_file_processor.cpp
+        unittests/request_handler/file_processors/test_receive_file_processor.cpp
         )
 #
 set(TEST_LIBRARIES "${TARGET_NAME};system_io")
diff --git a/receiver/src/connection.cpp b/receiver/src/connection.cpp
index ad8b30d09471d2af42ea5a6e8eda9b99731636e1..2770d0d89ef5bed286f27f3446164f47f19b5331 100644
--- a/receiver/src/connection.cpp
+++ b/receiver/src/connection.cpp
@@ -44,7 +44,7 @@ void Connection::Listen() const noexcept {
     }
     io__->CloseSocket(socket_fd_, nullptr);
     statistics__->SendIfNeeded(true);
-    log__->Info("disconnected from " + address_);
+    log__->Info(LogMessageWithFields("disconnected from ").Append("origin", HostFromUri(address_)));
 }
 
 
diff --git a/receiver/src/data_cache.cpp b/receiver/src/data_cache.cpp
index f6765f46fac8db9a24e5b76b9f8dae40dfffffa5..f2fa932569370559feaace38be2f179c5fa25eac 100644
--- a/receiver/src/data_cache.cpp
+++ b/receiver/src/data_cache.cpp
@@ -13,7 +13,7 @@ DataCache::DataCache(uint64_t cache_size, float keepunlocked_ratio) : cache_size
     try {
         cache_.reset(new uint8_t[cache_size]);
     } catch (std::exception& e) {
-        std::cout << "Cannot allocate data cache: " << e.what() << std::endl;
+        std::cout << "cannot allocate data cache: " << e.what() << std::endl;
         exit(1);
     }
 
diff --git a/receiver/src/metrics/receiver_mongoose_server.cpp b/receiver/src/metrics/receiver_mongoose_server.cpp
index fa601ed71667d22345edf649bae959e9464bc9e3..cce3b191873ca15b54cff465971a43fce469cb88 100644
--- a/receiver/src/metrics/receiver_mongoose_server.cpp
+++ b/receiver/src/metrics/receiver_mongoose_server.cpp
@@ -32,10 +32,11 @@ static void fn(struct mg_connection* c, int ev, void* ev_data, void* fn_data) {
 void asapo::ReceiverMongooseServer::ListenAndServe(std::string port,
         std::unique_ptr<ReceiverMetricsProvider> provider) {
     struct mg_mgr mgr;                            // Event manager
+    mg_log_set(0);
     mg_mgr_init(&mgr);                            // Initialise event manager
     auto uri = "0.0.0.0:" + port;
     if (mg_http_listen(&mgr, uri.c_str(), fn, (void*) provider.get()) == NULL) {
-        log__->Error("cannot listen on port " + port);
+        log__->Error("metrics server: cannot listen on port " + port);
         mg_mgr_free(&mgr);
         return;
     }
diff --git a/receiver/src/receiver.cpp b/receiver/src/receiver.cpp
index f28976609bd09ecd04ae959a191143040313b5ff..203eb13ac90ffdd6901071bfc847059fdedfec90 100644
--- a/receiver/src/receiver.cpp
+++ b/receiver/src/receiver.cpp
@@ -54,7 +54,7 @@ void Receiver::ProcessConnections(Error* err) {
 }
 
 void Receiver::StartNewConnectionInSeparateThread(int connection_socket_fd, const std::string& address)  {
-    log__->Info("new connection from " + address);
+    log__->Info(LogMessageWithFields("new connection").Append("origin", HostFromUri(address)));
     auto thread = io__->NewThread("ConFd:" + std::to_string(connection_socket_fd),
     [connection_socket_fd, address, this] {
         auto connection = std::unique_ptr<Connection>(new Connection(connection_socket_fd, address, cache_, GetReceiverConfig()->tag));
diff --git a/receiver/src/receiver_logger.cpp b/receiver/src/receiver_logger.cpp
index 1f297a68073f4d0863a9be0a1f0f69af149cafcd..85945ae94b4eada91432077a0372f7fc92c04cb8 100644
--- a/receiver/src/receiver_logger.cpp
+++ b/receiver/src/receiver_logger.cpp
@@ -1,11 +1,35 @@
 #include "receiver_logger.h"
 
-namespace asapo {
+#include "request.h"
 
+namespace asapo {
 
 AbstractLogger* GetDefaultReceiverLogger() {
     static Logger logger = asapo::CreateDefaultLoggerBin("receiver");
     return logger.get();
 }
 
+LogMessageWithFields RequestLog(std::string message, const Request* request) {
+    LogMessageWithFields msg{std::move(message)};
+    msg.Append("beamtime", request->GetBeamtimeId())
+    .Append("dataSource", request->GetDataSource())
+    .Append("stream", request->GetStream())
+    .Append("origin", request->GetOriginHost())
+    .Append("operation", OpcodeToString(request->GetOpCode()));
+
+    switch (request->GetOpCode()) {
+    case Opcode::kOpcodeTransferData:
+        msg.Append("id", request->GetDataID());
+        break;
+    case Opcode::kOpcodeTransferDatasetData:
+        msg.Append("id", request->GetDataID());
+        msg.Append("substream", request->GetCustomData()[1]);
+        break;
+    default:
+        break;
+    }
+
+    return msg;
+}
+
 }
diff --git a/receiver/src/receiver_logger.h b/receiver/src/receiver_logger.h
index 75ce25072555f98d10aca9195355cb50598e22ab..9df4e29433a25720da29eebc1d4f4eb531dabca4 100644
--- a/receiver/src/receiver_logger.h
+++ b/receiver/src/receiver_logger.h
@@ -5,8 +5,10 @@
 
 namespace asapo {
 
+class Request;
 
 AbstractLogger* GetDefaultReceiverLogger();
+LogMessageWithFields RequestLog(std::string message, const Request* request, std::string origin);
 
 }
 
diff --git a/receiver/src/request.cpp b/receiver/src/request.cpp
index f6aa6223bc30f08ca8b651ebb35cd7d4476d1fc0..07c9fb609db6f60e47381773fb679cc2440a91eb 100644
--- a/receiver/src/request.cpp
+++ b/receiver/src/request.cpp
@@ -10,6 +10,7 @@ Request::Request(const GenericRequestHeader& header,
     cache__{cache}, request_header_(header),
     socket_fd_{socket_fd}, origin_uri_{std::move(origin_uri)},
     check_duplicate_request_handler_{db_check_handler} {
+    origin_host_ = HostFromUri(origin_uri_);
 }
 
 Error Request::PrepareDataBufferAndLockIfNeeded() {
@@ -205,4 +206,8 @@ SourceType Request::GetSourceType() const {
     return source_type_;
 }
 
+const std::string& Request::GetOriginHost() const {
+    return origin_host_;
+}
+
 }
diff --git a/receiver/src/request.h b/receiver/src/request.h
index 916a04358932d82dfe8de23386edead3ebf26eb4..83b930f04540bf471bc6c970e1ef129708a43f4c 100644
--- a/receiver/src/request.h
+++ b/receiver/src/request.h
@@ -19,7 +19,6 @@
 #include "data_cache.h"
 
 #include "asapo/preprocessor/definitions.h"
-#include "file_processors/file_processor.h"
 
 namespace asapo {
 
@@ -50,6 +49,7 @@ class Request {
     VIRTUAL const char* GetMessage() const;
 
     const std::string& GetOriginUri() const;
+    const std::string& GetOriginHost() const;
     VIRTUAL const std::string& GetMetaData() const;
     VIRTUAL const std::string& GetBeamtimeId() const;
     VIRTUAL void SetBeamtimeId(std::string beamtime_id);
@@ -88,6 +88,7 @@ class Request {
     void* data_ptr;
     RequestHandlerList handlers_;
     std::string origin_uri_;
+    std::string origin_host_;
     std::string beamtime_id_;
     std::string data_source_;
     std::string beamline_;
diff --git a/receiver/src/file_processors/file_processor.cpp b/receiver/src/request_handler/file_processors/file_processor.cpp
similarity index 94%
rename from receiver/src/file_processors/file_processor.cpp
rename to receiver/src/request_handler/file_processors/file_processor.cpp
index 422f6dfe96937ab9e756bcc195806cdf65161ce9..52dd708c236de585ceddde0af0e17d6919425dae 100644
--- a/receiver/src/file_processors/file_processor.cpp
+++ b/receiver/src/request_handler/file_processors/file_processor.cpp
@@ -1,9 +1,8 @@
 #include "file_processor.h"
 
 #include "asapo/io/io_factory.h"
-#include "../receiver_logger.h"
-#include "../receiver_config.h"
-#include "../request.h"
+#include "../../receiver_logger.h"
+#include "../../request.h"
 
 namespace asapo {
 
diff --git a/receiver/src/file_processors/file_processor.h b/receiver/src/request_handler/file_processors/file_processor.h
similarity index 100%
rename from receiver/src/file_processors/file_processor.h
rename to receiver/src/request_handler/file_processors/file_processor.h
diff --git a/receiver/src/file_processors/receive_file_processor.cpp b/receiver/src/request_handler/file_processors/receive_file_processor.cpp
similarity index 89%
rename from receiver/src/file_processors/receive_file_processor.cpp
rename to receiver/src/request_handler/file_processors/receive_file_processor.cpp
index 676c82a14e430c5ad02f1683d053eb48edad2828..3ff0d607e6c98e7d30d9f5dcc0e0e4cc12d0ae08 100644
--- a/receiver/src/file_processors/receive_file_processor.cpp
+++ b/receiver/src/request_handler/file_processors/receive_file_processor.cpp
@@ -1,10 +1,10 @@
 #include "receive_file_processor.h"
 
 #include "asapo/io/io_factory.h"
-#include "../receiver_error.h"
 #include "asapo/preprocessor/definitions.h"
-#include "../request.h"
-#include "../receiver_config.h"
+#include "../../receiver_error.h"
+#include "../../request.h"
+#include "../../receiver_config.h"
 
 namespace asapo {
 
diff --git a/receiver/src/file_processors/receive_file_processor.h b/receiver/src/request_handler/file_processors/receive_file_processor.h
similarity index 100%
rename from receiver/src/file_processors/receive_file_processor.h
rename to receiver/src/request_handler/file_processors/receive_file_processor.h
diff --git a/receiver/src/file_processors/write_file_processor.cpp b/receiver/src/request_handler/file_processors/write_file_processor.cpp
similarity index 87%
rename from receiver/src/file_processors/write_file_processor.cpp
rename to receiver/src/request_handler/file_processors/write_file_processor.cpp
index c995179237e550f6c64200884c691eb00264e7b4..3dcc5ae0076116e780f2d4ebc76e0bdaebfab68f 100644
--- a/receiver/src/file_processors/write_file_processor.cpp
+++ b/receiver/src/request_handler/file_processors/write_file_processor.cpp
@@ -1,10 +1,8 @@
 #include "write_file_processor.h"
 
-#include "asapo/io/io_factory.h"
-#include "../receiver_error.h"
 #include "asapo/preprocessor/definitions.h"
-#include "../request.h"
-#include "../receiver_config.h"
+#include "../../receiver_error.h"
+#include "../../request.h"
 
 namespace asapo {
 
diff --git a/receiver/src/file_processors/write_file_processor.h b/receiver/src/request_handler/file_processors/write_file_processor.h
similarity index 100%
rename from receiver/src/file_processors/write_file_processor.h
rename to receiver/src/request_handler/file_processors/write_file_processor.h
diff --git a/receiver/src/request_handler/request_factory.h b/receiver/src/request_handler/request_factory.h
index edb2981cecda8b64743d868325ea09f774e43a19..c85af414fcfa0ca5701be278a41cb1d6df259edc 100644
--- a/receiver/src/request_handler/request_factory.h
+++ b/receiver/src/request_handler/request_factory.h
@@ -2,8 +2,8 @@
 #define ASAPO_REQUEST_FACTORY_H
 
 #include "../request.h"
-#include "../file_processors/write_file_processor.h"
-#include "../file_processors/receive_file_processor.h"
+#include "./file_processors/write_file_processor.h"
+#include "./file_processors/receive_file_processor.h"
 #include "request_handler_db_stream_info.h"
 #include "request_handler_db_last_stream.h"
 #include "request_handler_db_delete_stream.h"
diff --git a/receiver/src/request_handler/request_handler_file_process.h b/receiver/src/request_handler/request_handler_file_process.h
index 84b26e3083a78c68716c6bdef2883fe4e09666b1..490eb18ac2dbe5b03c2929a5a9b93748a02b03b1 100644
--- a/receiver/src/request_handler/request_handler_file_process.h
+++ b/receiver/src/request_handler/request_handler_file_process.h
@@ -3,7 +3,7 @@
 
 #include "request_handler.h"
 #include "asapo/logger/logger.h"
-#include "../file_processors/file_processor.h"
+#include "./file_processors/file_processor.h"
 #include "asapo/io/io.h"
 
 namespace asapo {
diff --git a/receiver/unittests/receiver_mocking.h b/receiver/unittests/receiver_mocking.h
index 74894756165b86e11e83b226cd020bce958752ff..35b5cffc4ece43a1589c78c75080cfa9c7ee86fd 100644
--- a/receiver/unittests/receiver_mocking.h
+++ b/receiver/unittests/receiver_mocking.h
@@ -7,7 +7,7 @@
 #include "../src/statistics/receiver_statistics.h"
 #include "../src/request.h"
 #include "../src/data_cache.h"
-#include "../src/file_processors/file_processor.h"
+#include "../src/request_handler/file_processors/file_processor.h"
 
 namespace asapo {
 
diff --git a/receiver/unittests/file_processors/test_file_processor.cpp b/receiver/unittests/request_handler/file_processors/test_file_processor.cpp
similarity index 95%
rename from receiver/unittests/file_processors/test_file_processor.cpp
rename to receiver/unittests/request_handler/file_processors/test_file_processor.cpp
index 992d9dd5d7e7fe1ca756730a5ff15c862be75b69..5f2ac6d6acea527875fdebbfa45b8cd0e166d0c9 100644
--- a/receiver/unittests/file_processors/test_file_processor.cpp
+++ b/receiver/unittests/request_handler/file_processors/test_file_processor.cpp
@@ -4,12 +4,12 @@
 #include "asapo/unittests/MockIO.h"
 #include "asapo/unittests/MockLogger.h"
 
-#include "../../src/file_processors/receive_file_processor.h"
+#include "../../../src/request_handler/file_processors/receive_file_processor.h"
 #include "asapo/common/networking.h"
 #include "asapo/preprocessor/definitions.h"
-#include "../mock_receiver_config.h"
+#include "../../mock_receiver_config.h"
 
-#include "../receiver_mocking.h"
+#include "../../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Return;
diff --git a/receiver/unittests/file_processors/test_receive_file_processor.cpp b/receiver/unittests/request_handler/file_processors/test_receive_file_processor.cpp
similarity index 97%
rename from receiver/unittests/file_processors/test_receive_file_processor.cpp
rename to receiver/unittests/request_handler/file_processors/test_receive_file_processor.cpp
index 66c7eec1bdc12fd1fe23f6a607b3f5f4279e7c3f..cea42b7e8e821c791ff523244c845495f2e28d67 100644
--- a/receiver/unittests/file_processors/test_receive_file_processor.cpp
+++ b/receiver/unittests/request_handler/file_processors/test_receive_file_processor.cpp
@@ -4,12 +4,12 @@
 #include "asapo/unittests/MockIO.h"
 #include "asapo/unittests/MockLogger.h"
 
-#include "../../src/file_processors/receive_file_processor.h"
+#include "../../../src/request_handler/file_processors/receive_file_processor.h"
 #include "asapo/common/networking.h"
 #include "asapo/preprocessor/definitions.h"
-#include "../mock_receiver_config.h"
+#include "../../mock_receiver_config.h"
 
-#include "../receiver_mocking.h"
+#include "../../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Return;
diff --git a/receiver/unittests/file_processors/test_write_file_processor.cpp b/receiver/unittests/request_handler/file_processors/test_write_file_processor.cpp
similarity index 97%
rename from receiver/unittests/file_processors/test_write_file_processor.cpp
rename to receiver/unittests/request_handler/file_processors/test_write_file_processor.cpp
index a4df078b7872ba9d347c84d4e0455ca10f71a3f8..a8be95300f31785aff4a1cfb7fb7d7cc144d41e3 100644
--- a/receiver/unittests/file_processors/test_write_file_processor.cpp
+++ b/receiver/unittests/request_handler/file_processors/test_write_file_processor.cpp
@@ -4,12 +4,12 @@
 #include "asapo/unittests/MockIO.h"
 #include "asapo/unittests/MockLogger.h"
 
-#include "../../src/file_processors/write_file_processor.h"
+#include "../../../src/request_handler/file_processors/write_file_processor.h"
 #include "asapo/common/networking.h"
 #include "asapo/preprocessor/definitions.h"
-#include "../mock_receiver_config.h"
+#include "../../mock_receiver_config.h"
 
-#include "../receiver_mocking.h"
+#include "../../receiver_mocking.h"
 
 using ::testing::Test;
 using ::testing::Return;
diff --git a/receiver/unittests/test_receiver.cpp b/receiver/unittests/test_receiver.cpp
index 512eca149db0f0ffbe8cfd3bd0bb247c011cf742..ff2f8c00f80e636beeb5fe041aafe8bc1d8f91d5 100644
--- a/receiver/unittests/test_receiver.cpp
+++ b/receiver/unittests/test_receiver.cpp
@@ -39,6 +39,7 @@ class StartListenerFixture : public testing::Test {
     const asapo::SocketDescriptor expected_socket_descriptor = 20;
     const asapo::SocketDescriptor expected_socket_descriptor_client = 23;
     const std::string expected_address = "somehost:13579";
+    const std::string expected_host = "somehost";
     const uint64_t expected_file_id = 314322;
     const uint64_t expected_file_size = 784387;
     const FileDescriptor expected_fd = 12643;
@@ -103,7 +104,7 @@ TEST_F(StartListenerFixture, Ok) {
         Return(nullptr)
     );
 
-    EXPECT_CALL(mock_logger, Info(HasSubstr("new connection from " + expected_address)));
+    EXPECT_CALL(mock_logger, Info(AllOf(HasSubstr("new connection"), HasSubstr(expected_host))));
 
 
     receiver.Listen(expected_address, &err, true);