diff --git a/invenio_utilities_tuw/utils.py b/invenio_utilities_tuw/utils.py
index 7a84f6e66359fe57c87456d2fe2f504c537da914..27b28b4f9972f7e962e19f88e40a9ce672f5cfbe 100644
--- a/invenio_utilities_tuw/utils.py
+++ b/invenio_utilities_tuw/utils.py
@@ -8,6 +8,7 @@
 
 """Utility functions for Invenio-Utilities-TUW."""
 
+from contextlib import contextmanager
 from difflib import SequenceMatcher
 
 from invenio_access.permissions import any_user, system_identity
@@ -54,3 +55,12 @@ def get_identity_for_user(user):
 def similarity(a: str, b: str) -> float:
     """Calculate the similarity between two strings."""
     return SequenceMatcher(None, a, b).ratio()
+
+
+@contextmanager
+def monkey_patch_temp(object_, method_name, new_method):
+    """Temporarily monkey patch an object's method."""
+    x = getattr(object_, method_name)
+    setattr(object_, method_name, new_method.__get__(object_, type(object_)))
+    yield object_
+    setattr(object_, method_name, x)