diff --git a/ATxService/AutoTx.cs b/ATxService/AutoTx.cs
index b85f3c62e3a8b80ee073481f8c48e6f57efa5748..1bfd61b1297ad80aaad8e337456a9b949f00665d 100644
--- a/ATxService/AutoTx.cs
+++ b/ATxService/AutoTx.cs
@@ -689,6 +689,33 @@ namespace ATxService
             }
 
             if (_status.CurrentTransferSrc.Length > 0) {
+                if (_transferredFiles.Count == 0) {
+                    var msg = "FinalizeTransfers: CurrentTransferSrc is set to " +
+                              $"[{_status.CurrentTransferSrc}], but the list of transferred " +
+                              "files is empty!\nThis indicates something went wrong during the " +
+                              "transfer, maybe a local permission problem?";
+                    Log.Warn(msg);
+                    SendAdminEmail(msg, "Error in FinalizeTransfers()");
+                    try {
+                        var preserve = _status.CurrentTransferSrc
+                            .Replace(_config.ManagedPath, "")
+                            .Replace(@"\", "___");
+                        preserve = Path.Combine(_config.ErrorPath, preserve);
+                        var stale = new DirectoryInfo(_status.CurrentTransferSrc);
+                        stale.MoveTo(preserve);
+                        Log.Warn("Moved stale transfer source to [{0}]!", preserve);
+                    }
+                    catch (Exception ex) {
+                        Log.Error("Preserving the stale transfer source [{0}] in [{1}] failed: {2}",
+                            _status.CurrentTransferSrc, _config.ErrorPath, ex.Message);
+                    }
+
+                    // reset current transfer variables:
+                    _status.CurrentTransferSrc = "";
+                    _status.CurrentTransferSize = 0;
+
+                    return;
+                }
                 Log.Debug("Finalizing transfer, moving local data to grace location...");
                 MoveToGraceLocation();
                 SendTransferCompletedMail();