diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp
index 9d54658f43af71418e1ad5693ab6eeff145fc94c..ab20bd80aec5855814a3670b54edea2edb3a8f0d 100644
--- a/common/cpp/src/database/mongodb_client.cpp
+++ b/common/cpp/src/database/mongodb_client.cpp
@@ -238,7 +238,7 @@ Error MongoDBClient::AddBsonDocumentToArray(bson_t* query, bson_t* update, bool
 }
 
 Error MongoDBClient::InsertAsSubset(const std::string &collection, const FileInfo &file,
-                                    uint64_t id_in_subset,
+                                    uint64_t subset_id,
                                     uint64_t subset_size,
                                     bool ignore_duplicates) const {
     if (!connected_) {
@@ -248,14 +248,12 @@ Error MongoDBClient::InsertAsSubset(const std::string &collection, const FileInf
     UpdateCurrentCollectionIfNeeded(collection);
 
     Error err;
-    auto new_fi = file;
-    new_fi.id = id_in_subset;
-    auto document = PrepareBsonDocument(new_fi, &err);
+    auto document = PrepareBsonDocument(file, &err);
     if (err) {
         return err;
     }
-    auto query = BCON_NEW ("$and", "[", "{", "_id", BCON_INT64(file.id), "}", "{", "images._id", "{", "$ne",
-                           BCON_INT64(id_in_subset), "}", "}", "]");
+    auto query = BCON_NEW ("$and", "[", "{", "_id", BCON_INT64(subset_id), "}", "{", "images._id", "{", "$ne",
+                           BCON_INT64(file.id), "}", "}", "]");
     auto update = BCON_NEW ("$setOnInsert", "{",
                             "size", BCON_INT64(subset_size),
                             "timestamp", BCON_INT64((int64_t) NanosecsEpochFromTimePoint(file.timestamp)),
@@ -337,9 +335,9 @@ Error MongoDBClient::GetById(const std::string &collection, uint64_t id, FileInf
     return nullptr;
 }
 
-Error MongoDBClient::GetDataSetById(const std::string &collection, uint64_t set_id, uint64_t id, FileInfo* file) const {
+Error MongoDBClient::GetDataSetById(const std::string &collection, uint64_t id_in_set, uint64_t id, FileInfo* file) const {
     std::string record_str;
-    auto err = GetRecordFromDb(collection, set_id, GetRecordMode::kById, &record_str);
+    auto err = GetRecordFromDb(collection, id, GetRecordMode::kById, &record_str);
     if (err) {
         return err;
     }
@@ -350,7 +348,7 @@ Error MongoDBClient::GetDataSetById(const std::string &collection, uint64_t set_
     }
 
     for (const auto &fileinfo : dataset.content) {
-        if (fileinfo.id == id) {
+        if (fileinfo.id == id_in_set) {
             *file = fileinfo;
             return nullptr;
         }
diff --git a/common/cpp/src/database/mongodb_client.h b/common/cpp/src/database/mongodb_client.h
index c932760f0b215d815ac4e97989aeff257d248520..f06b4f9479e33a6b54ef9c7d497e2b1f3c2e6b8d 100644
--- a/common/cpp/src/database/mongodb_client.h
+++ b/common/cpp/src/database/mongodb_client.h
@@ -44,11 +44,11 @@ class MongoDBClient final : public Database {
     MongoDBClient();
     Error Connect(const std::string& address, const std::string& database) override;
     Error Insert(const std::string& collection, const FileInfo& file, bool ignore_duplicates) const override;
-    Error InsertAsSubset(const std::string& collection, const FileInfo& file, uint64_t id_in_subset, uint64_t subset_size,
+    Error InsertAsSubset(const std::string& collection, const FileInfo& file, uint64_t subset_id, uint64_t subset_size,
                          bool ignore_duplicates) const override;
     Error Upsert(const std::string& collection, uint64_t id, const uint8_t* data, uint64_t size) const override;
     Error GetById(const std::string& collection, uint64_t id, FileInfo* file) const override;
-    Error GetDataSetById(const std::string& collection, uint64_t set_id, uint64_t id, FileInfo* file) const override;
+    Error GetDataSetById(const std::string& collection, uint64_t id_in_set, uint64_t id, FileInfo* file) const override;
     Error GetStreamInfo(const std::string& collection, StreamInfo* info) const override;
     Error GetLastStream(StreamInfo* info) const override;
     ~MongoDBClient() override;
diff --git a/receiver/src/request_handler/request_handler_db_check_request.cpp b/receiver/src/request_handler/request_handler_db_check_request.cpp
index 23d88c10f215498c7d37afbe1eb0decb17d117bb..f2d6f0b9df1494e1fda3ab4b347e35ed5eb36774 100644
--- a/receiver/src/request_handler/request_handler_db_check_request.cpp
+++ b/receiver/src/request_handler/request_handler_db_check_request.cpp
@@ -29,10 +29,10 @@ Error RequestHandlerDbCheckRequest::GetRecordFromDb(const Request* request, File
         }
         return err;
     } else {
-        auto subset_id = request->GetCustomData()[1];
-        err = db_client__->GetDataSetById(col_name, subset_id, id, record);
+        auto id_in_set = request->GetCustomData()[1];
+        err = db_client__->GetDataSetById(col_name, id_in_set, id, record);
         if (!err) {
-            log__->Debug(std::string{"get subset record id "} + std::to_string(subset_id) + " from " + col_name + " in " +
+            log__->Debug(std::string{"get subset record id "} + std::to_string(id) + " from " + col_name + " in " +
                          db_name_ + " at " + GetReceiverConfig()->database_uri);
         }
         return err;
diff --git a/receiver/src/request_handler/request_handler_db_write.cpp b/receiver/src/request_handler/request_handler_db_write.cpp
index 9a8aaa64f5ee371f828c723a194eff70fecdf38f..6477b8fe4eb29cbb853f2b0513831995de0ba0cf 100644
--- a/receiver/src/request_handler/request_handler_db_write.cpp
+++ b/receiver/src/request_handler/request_handler_db_write.cpp
@@ -65,12 +65,13 @@ Error RequestHandlerDbWrite::InsertRecordToDb(const Request* request) const {
                          " at " + GetReceiverConfig()->database_uri);
         }
     } else {
-        auto id_in_subset = request->GetCustomData()[1];
+        auto subset_id = file_info.id;
+        file_info.id = request->GetCustomData()[1];
         auto subset_size = request->GetCustomData()[2];
-        err =  db_client__->InsertAsSubset(col_name, file_info, id_in_subset, subset_size, false);
+        err =  db_client__->InsertAsSubset(col_name, file_info, subset_id, subset_size, false);
         if (!err) {
             log__->Debug(std::string{"insert record as subset id "} + std::to_string(file_info.id) + ", id in subset: " +
-                         std::to_string(id_in_subset) + " to " + col_name + " in " +
+                         std::to_string(subset_id) + " to " + col_name + " in " +
                          db_name_ +
                          " at " + GetReceiverConfig()->database_uri);
         }
diff --git a/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp b/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp
index d54e63487b1af0a26be2d1170d2a2ca207db81b5..8e04f6e4790e39145b3217d6438b0db8a4104606 100644
--- a/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp
+++ b/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp
@@ -17,8 +17,8 @@ void Assert(const Error& error, const std::string& expect) {
 }
 
 struct Args {
-    std::string keyword;
-    int file_id;
+  std::string keyword;
+  int file_id;
 };
 
 Args GetArgs(int argc, char* argv[]) {
@@ -64,7 +64,7 @@ int main(int argc, char* argv[]) {
 
     if (args.keyword == "OK") { // check retrieve
         asapo::FileInfo fi_db;
-        err = db.GetDataSetById("test", subset_id, fi.id, &fi_db);
+        err = db.GetDataSetById("test", fi.id,subset_id, &fi_db);
         M_AssertTrue(fi_db == fi, "get record from db");
         M_AssertEq(nullptr, err);
         err = db.GetDataSetById("test", 0, 0, &fi_db);