diff --git a/portal/model/UtcDateTime.py b/portal/model/UtcDateTime.py
index fb180926f393853310d8d5db7c4b76df67829389..64c022021ff8ab7262d25c06fa03834fd0c351be 100644
--- a/portal/model/UtcDateTime.py
+++ b/portal/model/UtcDateTime.py
@@ -28,12 +28,12 @@ class UtcDateTime(types.TypeDecorator):
         return types.String(32)
 
     def process_bind_param(
-        self, value: Any | None, dialect: Dialect
+        self, value: datetime | None, dialect: Dialect
     ) -> Optional[str | datetime]:
-        if isinstance(value, datetime):
-            return value.astimezone(timezone.utc).isoformat()
+        if value is None:
+            return None
 
-        return None
+        return value.astimezone(timezone.utc).isoformat()
 
     def process_result_value(
         self, value: str | None, dialect: Dialect
diff --git a/portal/model/Uuid.py b/portal/model/Uuid.py
index 452b477c43486cd69e02d15b0b3512e32da9f584..ebb8625c6904517e134fec5094bb2c8ff697ae5c 100644
--- a/portal/model/Uuid.py
+++ b/portal/model/Uuid.py
@@ -26,12 +26,14 @@ class Uuid(types.TypeDecorator):
     def load_dialect_impl(self, dialect: Dialect) -> types.TypeEngine[Any]:
         return types.String(UUID_LENGTH)
 
-    def process_bind_param(self, value: Any | None, dialect: Dialect) -> Optional[str]:
+    def process_bind_param(
+        self, value: None | str | UUID, dialect: Dialect
+    ) -> Optional[str]:
         if isinstance(value, str):
             # Manually create UUID from string, to raise an error if the string is malformed
             UUID(value)
 
-        return str(value) if isinstance(value, UUID) else None
+        return str(value) if value else None
 
     def process_result_value(
         self, value: Optional[str], dialect: Dialect