diff --git a/CHANGES.rst b/CHANGES.rst
index 18584b287a1d605e4e9651f42e8161f0e992b2c4..8dbd14520a9309cb97d555e8e8700ee0cbb50180 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -12,6 +12,7 @@ Changes
 Version <next>
 
 - Allow secondary email address to be removed again
+- Add "id" to the fake entity created by `SystemEntityProxy._resolve()`
 
 
 Version 2025.1.8 (released 2025-02-13)
diff --git a/invenio_config_tuw/notifications/entity_resolvers.py b/invenio_config_tuw/notifications/entity_resolvers.py
index e6fc90ad6c2157bdbaa8303f524249077ed6a78d..5d2c0430887655dbed8063a28550881dd638d45b 100644
--- a/invenio_config_tuw/notifications/entity_resolvers.py
+++ b/invenio_config_tuw/notifications/entity_resolvers.py
@@ -27,7 +27,11 @@ class SystemEntityProxy(EntityProxy):
         Since this will mostly be used in Jinja templates, it being a dictionary
         and not an actual object is fine.
         """
-        return {"username": "system", "user_profile": {"full_name": "System"}}
+        return {
+            "id": "system",
+            "username": "system",
+            "user_profile": {"full_name": "System"},
+        }
 
     def pick_resolved_fields(self, identity, resolved_dict):
         """Select which fields to return when resolving the reference."""