diff --git a/src/agora/io/metadata.py b/src/agora/io/metadata.py
index 949a5ce6f3640bef3492efa5e54424d15438e4bb..cc047cc6afc3f6ee0124a2989c5febf4aae4760e 100644
--- a/src/agora/io/metadata.py
+++ b/src/agora/io/metadata.py
@@ -9,6 +9,7 @@ ALIBY decides on using different metadata parsers based on two elements:
 If parameters is a string pointing to a metadata file, ALIBY picks a parser based on the file format.
 If parameters is True (as a boolean), ALIBY searches for any available file and uses the first valid one.
 If there are no metadata files, ALIBY requires indicating indices for tiler, segmentation and extraction.
+
 """
 import glob
 import os
@@ -67,7 +68,9 @@ def flatten_dict(nested_dict, separator="/"):
     Flattens nested dictionary
     """
     df = pd.json_normalize(nested_dict, sep=separator)
-    return df.to_dict(orient="records")[0]
+
+    flattened = df.to_dict(orient="records") or {}
+    return flattened
 
 
 # Needed because HDF5 attributes do not support datetime objects
@@ -109,22 +112,20 @@ def parse_logfiles(
     # ACQ_FILE = 'flavin_htb2_glucose_long_ramp_DelftAcq.txt'
     # LOG_FILE = 'flavin_htb2_glucose_long_ramp_Delftlog.txt'
     log_parser = Parser(log_grammar)
-    try:
-        log_file = find_file(root_dir, "*log.txt")
-    except FileNotFoundError:
-        raise ValueError("Experiment log file not found.")
-    with open(log_file, "r") as f:
-        log_parsed = log_parser.parse(f)
-
     acq_parser = Parser(acq_grammar)
-    try:
-        acq_file = find_file(root_dir, "*[Aa]cq.txt")
-    except FileNotFoundError:
-        raise ValueError("Experiment acq file not found.")
-    with open(acq_file, "r") as f:
-        acq_parsed = acq_parser.parse(f)
 
-    parsed = {**acq_parsed, **log_parsed}
+    log_file = find_file(root_dir, "*log.txt")
+    acq_file = find_file(root_dir, "*[Aa]cq.txt")
+
+    parsed = {}
+    if log_file and acq_file:
+        with open(log_file, "r") as f:
+            log_parsed = log_parser.parse(f)
+
+        with open(acq_file, "r") as f:
+            acq_parsed = acq_parser.parse(f)
+
+        parsed = {**acq_parsed, **log_parsed}
 
     for key, value in parsed.items():
         if isinstance(value, datetime):
@@ -186,7 +187,9 @@ def parse_swainlab_metadata(filedir: t.Union[str, PosixPath]):
         if filedir.is_file():
             filedir = filedir.parent
         legacy_parse = parse_logfiles(filedir)
-        minimal_meta = get_meta_from_legacy(legacy_parse)
+        minimal_meta = (
+            get_meta_from_legacy(legacy_parse) if legacy_parse else {}
+        )
 
     return minimal_meta
 
@@ -195,5 +198,11 @@ def dispatch_metadata_parser(filepath: t.Union[str, PosixPath]):
     """
     Function to dispatch different metadata parsers that convert logfiles into a
     basic metadata dictionary. Currently only contains the swainlab log parsers.
+
+    Input:
+    --------
+    filepath: str existing file containing metadata, or folder containing naming conventions
     """
-    return parse_swainlab_metadata(filepath)
+    parsed_meta = parse_swainlab_metadata(filepath)
+
+    return parsed_meta