diff --git a/src/data_transfer.cpp b/src/data_transfer.cpp
index 7e1b9d530b77e82f4aa105d832b55769b4b79f1d..61289b77d9d39b3e2e5ed9dd3284af037628b7ce 100644
--- a/src/data_transfer.cpp
+++ b/src/data_transfer.cpp
@@ -139,8 +139,6 @@ FileTransfer::FileTransfer(DRing::DataTransferId tid, const DRing::DataTransferI
     input_.seekg(0, std::ios_base::end);
     info_.totalSize = input_.tellg();
     input_.seekg(0, std::ios_base::beg);
-
-    emit(DRing::DataTransferEventCode::created);
 }
 
 bool
@@ -236,8 +234,6 @@ IncomingFileTransfer::IncomingFileTransfer(DRing::DataTransferId tid,
 
     info_ = info;
     info_.isOutgoing = false;
-
-    emit(DRing::DataTransferEventCode::created);
 }
 
 std::streamsize
@@ -355,8 +351,11 @@ DataTransferFacade::Impl::createFileTransfer(const DRing::DataTransferInfo& info
 {
     auto tid = generateUID();
     auto transfer = std::make_shared<FileTransfer>(tid, info);
-    std::lock_guard<std::mutex> lk {mapMutex_};
-    map_.emplace(tid, transfer);
+    {
+        std::lock_guard<std::mutex> lk {mapMutex_};
+        map_.emplace(tid, transfer);
+    }
+    transfer->emit(DRing::DataTransferEventCode::created);
     return transfer;
 }
 
@@ -365,8 +364,11 @@ DataTransferFacade::Impl::createIncomingFileTransfer(const DRing::DataTransferIn
 {
     auto tid = generateUID();
     auto transfer = std::make_shared<IncomingFileTransfer>(tid, info);
-    std::lock_guard<std::mutex> lk {mapMutex_};
-    map_.emplace(tid, transfer);
+    {
+        std::lock_guard<std::mutex> lk {mapMutex_};
+        map_.emplace(tid, transfer);
+    }
+    transfer->emit(DRing::DataTransferEventCode::created);
     return transfer;
 }