diff --git a/mypy.ini b/mypy.ini
--- a/mypy.ini
+++ b/mypy.ini
@@ -40,3 +40,6 @@
 [mypy-swh.deposit.*]
 ignore_missing_imports = True
 
+[mypy-swh.model.*]
+ignore_missing_imports = True
+
diff --git a/requirements-swh.txt b/requirements-swh.txt
--- a/requirements-swh.txt
+++ b/requirements-swh.txt
@@ -1,4 +1,4 @@
 swh.core >= 0.0.75
-swh.model >= 0.3.7
+swh.model >= 0.5.0
 swh.scheduler >= 0.4.0
 swh.storage >= 0.10.1
diff --git a/swh/loader/package/loader.py b/swh/loader/package/loader.py
--- a/swh/loader/package/loader.py
+++ b/swh/loader/package/loader.py
@@ -16,6 +16,7 @@
 from swh.core.tarball import uncompress
 from swh.core.config import SWHConfig
 from swh.model import from_disk
+from swh.model.collections import ImmutableDict
 from swh.model.hashutil import hash_to_hex
 from swh.model.model import (
     BaseModel,
@@ -422,11 +423,16 @@
                 # skipping those
                 return None
 
-        metadata = revision.metadata or {}
-        metadata.update(
-            {"original_artifact": [hashes for _, hashes in dl_artifacts],}
+        extra_metadata: Tuple[str, Any] = (
+            "original_artifact",
+            [hashes for _, hashes in dl_artifacts],
         )
-        revision = attr.evolve(revision, metadata=metadata)
+        if revision.metadata is not None:
+            full_metadata = list(revision.metadata.items()) + [extra_metadata]
+        else:
+            full_metadata = [extra_metadata]
+
+        revision = attr.evolve(revision, metadata=ImmutableDict(full_metadata))
 
         logger.debug("Revision: %s", revision)