diff --git a/webservice/webservice.py b/webservice/webservice.py
index ffcdb21a9a9b20a770e3fdb765f73d5f233d100f..57644a00a165b4878ec9f640ab63de7191fd1bf6 100644
--- a/webservice/webservice.py
+++ b/webservice/webservice.py
@@ -586,19 +586,21 @@ async def wait_on_transfer(
         # Resolving is done here in case the symlink target changed during the loop
         run_dir = run_dir.resolve()
 
-        # TODO: this should use path.is_relative_to, but that is isn't available
-        # in python 3.8
-        gpfs_transfer_done = (
-            str(run_dir).startswith("/gpfs/exfel/d")
-            and any("XFEL_GPFS_OFFLINE" in r for r in repositories)
-        )
+        required_repository = None
+        logging.debug(f"{run_dir.parts}")
+        if run_dir.parts[1:4] == ("pnfs", "xfel.eu", "exfel"):
+            required_repository = "DESY_DCACHE_RAW"
+        elif run_dir.parts[1:4] == ("gpfs", "exfel", "d"):
+            required_repository = "XFEL_GPFS_OFFLINE"
+        else:
+            logging.warning(
+                f"Proposal {proposal} run {run} resolved path is not relative to"
+                f"`/pnfs/xfel.eu/exfel` or `/gpfs/exfel/d`: {run_dir}"
+            )
 
-        dcache_transfer_done = (
-            str(run_dir).startswith("/pnfs")
-            and any("DESY_DCACHE" in r for r in repositories)
-        )
+        logging.debug(f"{required_repository=}")
 
-        if gpfs_transfer_done or dcache_transfer_done:
+        if any(required_repository in r for r in repositories):
             return repositories
 
         logging.info(