diff --git a/receiver/src/connection.cpp b/receiver/src/connection.cpp
index eb4165f6a371ca7a409ba00b4e83c898aaa67dfe..678bef893b5856e1dd6717ad75cf6e2350fc151b 100644
--- a/receiver/src/connection.cpp
+++ b/receiver/src/connection.cpp
@@ -11,11 +11,14 @@ namespace asapo {
 size_t Connection::kRequestHandlerMaxBufferSize;
 std::atomic<uint32_t> Connection::kNetworkProducerPeerImplGlobalCounter(0);
 
-Connection::Connection(SocketDescriptor socket_fd, const std::string& address): request_factory__{new RequestFactory},
+Connection::Connection(SocketDescriptor socket_fd, const std::string& address,std::string receiver_tag): request_factory__{new RequestFactory},
 io__{GenerateDefaultIO()}, statistics__{new Statistics}, log__{GetDefaultReceiverLogger()} {
     socket_fd_ = socket_fd;
     connection_id_ = kNetworkProducerPeerImplGlobalCounter++;
     address_ = address;
+    statistics__->AddTag("connection_from",address);
+    statistics__->AddTag("receiver_tag",std::move(receiver_tag));
+
 }
 
 uint64_t Connection::GetId() const noexcept {
diff --git a/receiver/src/connection.h b/receiver/src/connection.h
index 11fdf1eff9fa62bb754f97df9851bd41e14a2d1e..bde002ae6eebfaecdff4e36afec09bd6c9b01c3d 100644
--- a/receiver/src/connection.h
+++ b/receiver/src/connection.h
@@ -29,7 +29,7 @@ class Connection {
     static size_t kRequestHandlerMaxBufferSize;
     static std::atomic<uint32_t> kNetworkProducerPeerImplGlobalCounter;
 
-    Connection(SocketDescriptor socket_fd, const std::string& address);
+    Connection(SocketDescriptor socket_fd, const std::string& address,std::string receiver_tag);
     ~Connection() = default;
 
     void Listen() const noexcept;
diff --git a/receiver/src/receiver.cpp b/receiver/src/receiver.cpp
index 8d2c1b1d0ddd1f8d67cbadff66603e5a08ddae79..568177a93b3c1024cf80690f821a103f87f6b664 100644
--- a/receiver/src/receiver.cpp
+++ b/receiver/src/receiver.cpp
@@ -56,7 +56,8 @@ void Receiver::ProcessConnections(Error* err) {
 void Receiver::StartNewConnectionInSeparateThread(int connection_socket_fd, const std::string& address)  {
     log__->Info("new connection from " + address);
     auto thread = io__->NewThread([connection_socket_fd, address] {
-        auto connection = std::unique_ptr<Connection>(new Connection(connection_socket_fd, address));
+      // todo: reveicer tag
+        auto connection = std::unique_ptr<Connection>(new Connection(connection_socket_fd, address,"1"));
         connection->Listen();
     });
 
diff --git a/receiver/src/statistics.cpp b/receiver/src/statistics.cpp
index 3f072331578c3ed093eaf37d8c920c3a0f6e3df8..4cb2a4c1b84e0c05677b9d7a09e9462d5474066e 100644
--- a/receiver/src/statistics.cpp
+++ b/receiver/src/statistics.cpp
@@ -23,6 +23,7 @@ StatisticsToSend Statistics::PrepareStatisticsToSend() const noexcept {
     stat.n_requests = nrequests_;
     stat.data_volume = volume_counter_;
     stat.elapsed_ms = std::max(uint64_t{1}, GetTotalElapsedMs());
+    stat.tags = tag_;
     for (auto i = 0; i < kNStatisticEntities; i++) {
         stat.entity_shares[i] =  double(GetElapsedMs(StatisticEntity(i))) / stat.elapsed_ms;
     }
@@ -76,5 +77,11 @@ void Statistics::StopTimer() noexcept {
     time_counters_[current_statistic_entity_] += elapsed;
 }
 
+void Statistics::AddTag(const std::string &name, const std::string &value) noexcept {
+    if (!tag_.empty()) {
+        tag_ += ",";
+    }
+    tag_ += name + "=" + value;
+}
 
 }
\ No newline at end of file
diff --git a/receiver/src/statistics.h b/receiver/src/statistics.h
index 35a3ef9b597ec6f5ac1204fb31028375b46c0a64..c52324c230ee79e8b73642ed176dcfe8b0963c05 100644
--- a/receiver/src/statistics.h
+++ b/receiver/src/statistics.h
@@ -3,6 +3,8 @@
 
 #include <chrono>
 #include <memory>
+#include <string>
+
 
 #include "statistics_sender.h"
 
@@ -20,6 +22,7 @@ struct StatisticsToSend {
     uint64_t elapsed_ms;
     uint64_t data_volume;
     uint64_t n_requests;
+    std::string tags;
 };
 
 #ifdef UNIT_TESTS
@@ -35,8 +38,10 @@ class Statistics {
     VIRTUAL void StartTimer(const StatisticEntity& entity) noexcept;
     VIRTUAL void IncreaseRequestDataVolume(uint64_t transferred_data_volume) noexcept;
     VIRTUAL void StopTimer() noexcept;
+    VIRTUAL void AddTag(const std::string& name,const std::string& value) noexcept;
+
 
-    void SetWriteInterval(uint64_t interval_ms);
+  void SetWriteInterval(uint64_t interval_ms);
     std::unique_ptr<StatisticsSender> statistics_sender__;
   private:
     uint64_t GetElapsedMs(StatisticEntity entity) const noexcept;
@@ -51,6 +56,7 @@ class Statistics {
     std::chrono::nanoseconds time_counters_[kNStatisticEntities];
     uint64_t volume_counter_;
     unsigned int write_interval_;
+    std::string tag_;
 
 };
 
diff --git a/receiver/src/statistics_sender_influx_db.cpp b/receiver/src/statistics_sender_influx_db.cpp
index 886b293130ec3e5086cb2138822d54f527e3574d..642f2aea9ae38126d85fe77b8b951330ab9346dc 100644
--- a/receiver/src/statistics_sender_influx_db.cpp
+++ b/receiver/src/statistics_sender_influx_db.cpp
@@ -41,8 +41,7 @@ void StatisticsSenderInfluxDb::SendStatistics(const StatisticsToSend& statistic)
 
 std::string StatisticsSenderInfluxDb::StatisticsToString(const StatisticsToSend& statistic) const noexcept {
     std::string str;
-    std::string tags = "receiver=1,connection=1";
-    str = "statistics," + tags + " elapsed_ms=" + string_format("%ld", statistic.elapsed_ms);
+    str = "statistics," + statistic.tags + " elapsed_ms=" + string_format("%ld", statistic.elapsed_ms);
     str += ",data_volume=" + string_format("%ld", statistic.data_volume);
     str += ",n_requests=" + string_format("%ld", statistic.n_requests);
     str += ",db_share=" + string_format("%.4f", statistic.entity_shares[StatisticEntity::kDatabase]);
diff --git a/receiver/unittests/test_connection.cpp b/receiver/unittests/test_connection.cpp
index 45634411d56d6707585cf7d486853b0caa312842..66dfdf13e75c95ebccdd0d9e981ee6a6c8d5f237 100644
--- a/receiver/unittests/test_connection.cpp
+++ b/receiver/unittests/test_connection.cpp
@@ -46,12 +46,12 @@ using asapo::MockStatistics;
 namespace {
 
 TEST(Connection, Constructor) {
-    Connection connection{0, "some_address"};
+    Connection connection{0, "some_address","some_tag"};
     ASSERT_THAT(dynamic_cast<asapo::Statistics*>(connection.statistics__.get()), Ne(nullptr));
+
     ASSERT_THAT(dynamic_cast<asapo::IO*>(connection.io__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<asapo::RequestFactory*>(connection.request_factory__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<const asapo::AbstractLogger*>(connection.log__), Ne(nullptr));
-
 }
 
 class MockRequestHandler: public Request {
@@ -85,7 +85,7 @@ class MockRequestFactory: public asapo::RequestFactory {
 class ConnectionTests : public Test {
   public:
     std::string connected_uri{"some_address"};
-    Connection connection{0, connected_uri};
+    Connection connection{0, connected_uri,"some_tag"};
     MockIO mock_io;
     MockRequestFactory mock_factory;
     NiceMock<MockStatistics> mock_statictics;
diff --git a/receiver/unittests/test_statistics.cpp b/receiver/unittests/test_statistics.cpp
index 01959339eef6dc832e477f1bf9afb65db4e21b21..9a011cc68d79d1076d5baf6c5bfc38593e2f067e 100644
--- a/receiver/unittests/test_statistics.cpp
+++ b/receiver/unittests/test_statistics.cpp
@@ -60,6 +60,7 @@ ACTION_P(SaveArg1ToSendStat, value) {
     value->n_requests = resp.n_requests;
     value->data_volume = resp.data_volume;
     value->elapsed_ms = resp.elapsed_ms;
+    value->tags = resp.tags;
     for (int i = 0; i < asapo::kNStatisticEntities; i++) {
         value->entity_shares[i] = resp.entity_shares[i];
     }
@@ -92,6 +93,26 @@ TEST_F(StatisticTests, IncreaseRequestCounter) {
     ASSERT_THAT(stat.n_requests, Eq(1));
 }
 
+TEST_F(StatisticTests, AddTag) {
+    statistics.AddTag("name","value");
+
+    auto stat = ExtractStat();
+
+    ASSERT_THAT(stat.tags, Eq("name=value"));
+}
+
+TEST_F(StatisticTests, AddTagTwice) {
+    statistics.AddTag("name1","value1");
+    statistics.AddTag("name2","value2");
+
+    auto stat = ExtractStat();
+
+    ASSERT_THAT(stat.tags, Eq("name1=value1,name2=value2"));
+}
+
+
+
+
 TEST_F(StatisticTests, StatisticsResetAfterSend) {
     statistics.IncreaseRequestCounter();
 
diff --git a/receiver/unittests/test_statistics_sender_influx_db.cpp b/receiver/unittests/test_statistics_sender_influx_db.cpp
index 6408099ceb964e362f4c9d9c8d3f7db029d0a8ca..48f7f704c54916a69230e4b82dcc1950791b6b8f 100644
--- a/receiver/unittests/test_statistics_sender_influx_db.cpp
+++ b/receiver/unittests/test_statistics_sender_influx_db.cpp
@@ -61,6 +61,7 @@ class SenderInfluxDbTests : public Test {
         statistics.entity_shares[asapo::StatisticEntity::kDatabase] = 0.1;
         statistics.elapsed_ms = 100;
         statistics.data_volume = 1000;
+        statistics.tags = "name1=value1,name2=value2";
 
         config.monitor_db_uri = "test_uri";
         config.monitor_db_name = "test_name";
@@ -76,7 +77,7 @@ class SenderInfluxDbTests : public Test {
 
 
 TEST_F(SenderInfluxDbTests, SendStatisticsCallsPost) {
-    std::string expect_string = "statistics,receiver=1,connection=1 elapsed_ms=100,data_volume=1000,"
+    std::string expect_string = "statistics,name1=value1,name2=value2 elapsed_ms=100,data_volume=1000,"
                                 "n_requests=4,db_share=0.1000,network_share=0.3000,disk_share=0.6000";
     EXPECT_CALL(mock_http_client, Post_t("test_uri/write?db=test_name", expect_string, _, _)).
     WillOnce(
diff --git a/tests/automatic/full_chain/simple_chain/CMakeLists.txt b/tests/automatic/full_chain/simple_chain/CMakeLists.txt
index 2d74dbc8403112ea4eafcc8edf45c677c0355ea2..a63811d4f4a90e4230614139ea1f403c28add8a7 100644
--- a/tests/automatic/full_chain/simple_chain/CMakeLists.txt
+++ b/tests/automatic/full_chain/simple_chain/CMakeLists.txt
@@ -4,4 +4,4 @@ set(TARGET_NAME full_chain_simple_chain)
 # Testing
 ################################
 prepare_asapo()
-add_script_test("${TARGET_NAME}" "$<TARGET_FILE:dummy-data-producer> $<TARGET_FILE:receiver-bin> $<TARGET_PROPERTY:asapo-broker,EXENAME> $<TARGET_FILE:getnext_broker>" nomem)
+add_script_test("${TARGET_NAME}" "$<TARGET_FILE:dummy-data-producer> $<TARGET_FILE:getnext_broker>" nomem)
diff --git a/tests/automatic/full_chain/simple_chain/check_linux.sh b/tests/automatic/full_chain/simple_chain/check_linux.sh
index dd1893765b7f8eb413b9868b2fd7a89238da0ee4..8640f1fa5ae1c4792a1f15513024ae58fef2c55e 100644
--- a/tests/automatic/full_chain/simple_chain/check_linux.sh
+++ b/tests/automatic/full_chain/simple_chain/check_linux.sh
@@ -34,4 +34,4 @@ $1 localhost:5006 100 100 4 0 &
 #producerrid=`echo $!`
 sleep 0.1
 
-$4 ${broker_address} ${broker_database_name} 2 | grep "Processed 100 file(s)"
+$2 ${broker_address} ${broker_database_name} 2 | grep "Processed 100 file(s)"
diff --git a/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt b/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt
index 45cadecbc453d59a38cbfa44307217a9456248d4..80b82ae8e85c275dbd132c72e2838c1cbc7f8545 100644
--- a/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt
+++ b/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt
@@ -5,4 +5,4 @@ set(TARGET_NAME receiver)
 ################################
 prepare_asapo()
 
-add_script_test("${TARGET_NAME}-monitoring" "$<TARGET_FILE:dummy-data-producer> $<TARGET_FILE:receiver-bin> $<TARGET_PROPERTY:asapo-discovery,EXENAME>" nomem)
+add_script_test("${TARGET_NAME}-monitoring" "$<TARGET_FILE:dummy-data-producer>" nomem)
diff --git a/tests/automatic/producer_receiver/check_monitoring/check_linux.sh b/tests/automatic/producer_receiver/check_monitoring/check_linux.sh
index 7c7e9eb0abfb16a6acdec205b69d0aa0b817a684..9c2ea042cf56821b5689b637fbd82966e892f223 100644
--- a/tests/automatic/producer_receiver/check_monitoring/check_linux.sh
+++ b/tests/automatic/producer_receiver/check_monitoring/check_linux.sh
@@ -29,4 +29,4 @@ $1 localhost:5006 100 112 4  0
 
 sleep 1
 
-influx -execute "select sum(n_requests) from statistics" -database=${database_name} -format=json | jq .results[0].series[0].values[0][1] | grep 112
+influx -execute "select sum(n_requests) from statistics" -database=${database_name} -format=json  jq .results[0].series[0].values[0][1] | grep 112
diff --git a/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt b/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt
index c74ddedc8f912a8ef481a6df1bf050c802ade55a..7b299ca60c8ad5d3df328007c44f62a58069de24 100644
--- a/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt
+++ b/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt
@@ -4,4 +4,4 @@ set(TARGET_NAME transfer-single-file)
 # Testing
 ################################
 prepare_asapo()
-add_script_test("${TARGET_NAME}" "$<TARGET_FILE:dummy-data-producer> $<TARGET_FILE:receiver-bin>" nomem)
+add_script_test("${TARGET_NAME}" "$<TARGET_FILE:dummy-data-producer>" nomem)
diff --git a/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh b/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh
index ae8edbf6cca3cfe8dd81a4176b38bb4e352a754e..07334882f797f3a8e27337fa305973e2469b1c3e 100644
--- a/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh
+++ b/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh
@@ -4,14 +4,17 @@ set -e
 
 trap Cleanup EXIT
 
-database_name=test_run
+database_name=db_test
+mongo_database_name=test_run
 
 Cleanup() {
 	echo cleanup
 	rm -rf files
     nomad stop receiver
     nomad stop discovery
-    echo "db.dropDatabase()" | mongo ${database_name}
+    echo "db.dropDatabase()" | mongo ${mongo_database_name}
+    influx -execute "drop database ${database_name}"
+
 }
 
 nomad run receiver.nmd
diff --git a/tests/automatic/settings/receiver.json.tpl b/tests/automatic/settings/receiver.json.tpl
index 0d0abd37e77fb3767c0aede509d8fb2bdb21831b..ca59f401bb4bb41a55062cffe510d2fcbe34f9da 100644
--- a/tests/automatic/settings/receiver.json.tpl
+++ b/tests/automatic/settings/receiver.json.tpl
@@ -6,5 +6,5 @@
   "ListenPort": {{ env "NOMAD_PORT_recv" }},
   "WriteToDisk":true,
   "WriteToDb":true,
-  "LogLevel" : "info"
+  "LogLevel" : "debug"
 }