diff --git a/receiver/src/receiver_data_server/net_server.h b/receiver/src/receiver_data_server/net_server.h
index c07d06b4948a2aeb6df4897962861dcf84d77256..7275889211b14357da801b7eee1a7b5bcee02874 100644
--- a/receiver/src/receiver_data_server/net_server.h
+++ b/receiver/src/receiver_data_server/net_server.h
@@ -13,7 +13,7 @@ class NetServer {
     virtual GenericRequests GetNewRequests(Error* err) const noexcept = 0;
     virtual Error SendResponse(uint64_t source_id, GenericNetworkResponse* response) const noexcept = 0;
     virtual Error SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response,
-                                          GenericRequestHeader* request, CacheMeta* cache_slot) const noexcept = 0;
+                                          GenericRequestHeader* request, const CacheMeta* cache_slot) const noexcept = 0;
     virtual void HandleAfterError(uint64_t source_id) const noexcept = 0;
     virtual ~NetServer() = default;
 };
diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp b/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
index 63b1db2d06e23eda12edb727deddbc1724b00e8f..2d911b111579bd7af6926c3fa5500d347fb58f82 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
+++ b/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
@@ -23,7 +23,7 @@ Error ReceiverDataServerRequestHandler::SendResponse(const ReceiverDataServerReq
 }
 
 Error ReceiverDataServerRequestHandler::SendResponseAndSlotData(const ReceiverDataServerRequest* request,
-        CacheMeta* meta) {
+        const CacheMeta* meta) {
     GenericNetworkResponse response{};
     response.op_code = kOpcodeGetBufferData;
     response.error_code = kNetErrorNoError;
@@ -41,14 +41,11 @@ CacheMeta* ReceiverDataServerRequestHandler::GetSlotAndLock(const ReceiverDataSe
     return meta;
 }
 
-
 bool ReceiverDataServerRequestHandler::ProcessRequestUnlocked(GenericRequest* request, bool* retry) {
     *retry = false;
     auto receiver_request = dynamic_cast<ReceiverDataServerRequest*>(request);
     if (!CheckRequest(receiver_request)) {
-        SendResponse(receiver_request, kNetErrorWrongRequest);
-        server_->HandleAfterError(receiver_request->source_id);
-        log__->Error("wrong request, code:" + std::to_string(receiver_request->header.op_code));
+        HandleInvalidRequest(receiver_request);
         return true;
     }
 
@@ -58,19 +55,12 @@ bool ReceiverDataServerRequestHandler::ProcessRequestUnlocked(GenericRequest* re
         return true;
     }
 
-    auto err = SendResponseAndSlotData(receiver_request, meta);
+    HandleValidRequest(receiver_request, meta);
     data_cache_->UnlockSlot(meta);
-    if (err) {
-        log__->Error("failed to send slot:" + err->Explain());
-        server_->HandleAfterError(receiver_request->source_id);
-        return true;
-    }
-
-    statistics__->IncreaseRequestCounter();
-    statistics__->IncreaseRequestDataVolume(receiver_request->header.data_size);
     return true;
 }
 
+
 bool ReceiverDataServerRequestHandler::ReadyProcessRequest() {
     return true; // always ready
 }
@@ -87,4 +77,22 @@ void ReceiverDataServerRequestHandler::ProcessRequestTimeout(GenericRequest* /*r
 // do nothing
 }
 
+void ReceiverDataServerRequestHandler::HandleInvalidRequest(const ReceiverDataServerRequest* receiver_request) {
+    SendResponse(receiver_request, kNetErrorWrongRequest);
+    server_->HandleAfterError(receiver_request->source_id);
+    log__->Error("wrong request, code:" + std::to_string(receiver_request->header.op_code));
+}
+
+void ReceiverDataServerRequestHandler::HandleValidRequest(const ReceiverDataServerRequest* receiver_request,
+        const CacheMeta* meta) {
+    auto err = SendResponseAndSlotData(receiver_request, meta);
+    if (err) {
+        log__->Error("failed to send slot:" + err->Explain());
+        server_->HandleAfterError(receiver_request->source_id);
+    } else {
+        statistics__->IncreaseRequestCounter();
+        statistics__->IncreaseRequestDataVolume(receiver_request->header.data_size);
+    }
+}
+
 }
diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler.h b/receiver/src/receiver_data_server/receiver_data_server_request_handler.h
index 34b0cd0b074d7a05b2e44740022a76df26ebc9af..7452d2e26ca2330b7a7d3eac6348fa953bf1d312 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_request_handler.h
+++ b/receiver/src/receiver_data_server/receiver_data_server_request_handler.h
@@ -26,8 +26,12 @@ class ReceiverDataServerRequestHandler: public RequestHandler {
     DataCache* data_cache_;
     bool CheckRequest(const ReceiverDataServerRequest* request);
     Error SendResponse(const ReceiverDataServerRequest* request, NetworkErrorCode code);
-    Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, CacheMeta* meta);
+    Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, const CacheMeta* meta);
     CacheMeta* GetSlotAndLock(const ReceiverDataServerRequest* request);
+
+    void HandleInvalidRequest(const ReceiverDataServerRequest* receiver_request);
+
+    void HandleValidRequest(const ReceiverDataServerRequest* receiver_request, const CacheMeta* meta);
 };
 
 }
diff --git a/receiver/src/receiver_data_server/tcp_server.cpp b/receiver/src/receiver_data_server/tcp_server.cpp
index fa1d61afa01645adfe2b248c9946b9e623584f22..f8f52b507e237be2dd70213fed42715267a79d0f 100644
--- a/receiver/src/receiver_data_server/tcp_server.cpp
+++ b/receiver/src/receiver_data_server/tcp_server.cpp
@@ -104,7 +104,7 @@ Error TcpServer::SendResponse(uint64_t source_id, GenericNetworkResponse* respon
 }
 
 Error TcpServer::SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response,
-                                         GenericRequestHeader* /*request*/, CacheMeta* cache_slot) const noexcept {
+                                         GenericRequestHeader* /*request*/, const CacheMeta* cache_slot) const noexcept {
     Error err;
 
     err = SendResponse(source_id, response);
diff --git a/receiver/src/receiver_data_server/tcp_server.h b/receiver/src/receiver_data_server/tcp_server.h
index 4166f49ec43c555b2884b34a279da366f56a204c..337b8bdb15d3a8788bd29fa9c7b408f12e71712f 100644
--- a/receiver/src/receiver_data_server/tcp_server.h
+++ b/receiver/src/receiver_data_server/tcp_server.h
@@ -16,7 +16,7 @@ class TcpServer : public NetServer {
     GenericRequests GetNewRequests(Error* err) const noexcept override ;
     Error SendResponse(uint64_t source_id, GenericNetworkResponse* response) const noexcept override;
     Error SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response,
-                                  GenericRequestHeader* request, CacheMeta* cache_slot) const noexcept override;
+                                  GenericRequestHeader* request, const CacheMeta* cache_slot) const noexcept override;
     void HandleAfterError(uint64_t source_id) const noexcept override;
     std::unique_ptr<IO> io__;
     const AbstractLogger* log__;
diff --git a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
index 09c337123dca60650199d25460471f2a201289ae..49cb7539a3defd651c96e7bb503f1609bcfccebe 100644
--- a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
+++ b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
@@ -33,11 +33,11 @@ class MockNetServer : public NetServer {
     MOCK_CONST_METHOD2(SendResponse_t, ErrorInterface * (uint64_t source_id, GenericNetworkResponse* response));
 
     Error SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response, GenericRequestHeader* request,
-                                  CacheMeta* cache_slot) const noexcept override {
+                                  const CacheMeta* cache_slot) const noexcept override {
         return  Error{SendResponseAndSlotData_t(source_id, response, request, cache_slot)};
     };
     MOCK_CONST_METHOD4(SendResponseAndSlotData_t, ErrorInterface * (uint64_t source_id, GenericNetworkResponse* response,
-                       GenericRequestHeader* request, CacheMeta* cache_slot));
+                       GenericRequestHeader* request, const CacheMeta* cache_slot));
 
     void  HandleAfterError(uint64_t source_id) const noexcept override {
         HandleAfterError_t(source_id);