diff --git a/invenio_utilities_tuw/cli/drafts.py b/invenio_utilities_tuw/cli/drafts.py
index f6f1ec95e379dbfc5c16d52b6eb855a9dc9ff43e..30025b81d0892f35e3323fab757a667d5954171b 100644
--- a/invenio_utilities_tuw/cli/drafts.py
+++ b/invenio_utilities_tuw/cli/drafts.py
@@ -18,7 +18,7 @@ from flask.cli import with_appcontext
 from invenio_access.permissions import system_identity
 from invenio_db import db
 
-from ..utils import get_record_service
+from ..utils import get_identity_for_user, get_record_service, get_user_by_identifier
 from .options import (
     option_as_user,
     option_owners,
@@ -31,8 +31,6 @@ from .options import (
 from .utils import (
     convert_to_recid,
     create_record_from_metadata,
-    get_identity_for_user,
-    get_user_by_identifier,
     patch_metadata,
     read_metadata,
     set_record_owners,
diff --git a/invenio_utilities_tuw/cli/files.py b/invenio_utilities_tuw/cli/files.py
index 9dc697171b2e198b7ead0e2c2cb0560b24b7f0e5..8b383dd2c8acf54a8458de38ddc2049fef6a490a 100644
--- a/invenio_utilities_tuw/cli/files.py
+++ b/invenio_utilities_tuw/cli/files.py
@@ -17,9 +17,9 @@ from invenio_access.permissions import system_identity
 from invenio_db import db
 from invenio_files_rest.models import Location, ObjectVersion
 
-from ..utils import get_record_service
+from ..utils import get_identity_for_user, get_record_service
 from .options import option_as_user, option_pid_type, option_pid_value
-from .utils import convert_to_recid, get_identity_for_user
+from .utils import convert_to_recid
 
 
 def remove_file(file_path, max_rmdir_depth=3):
diff --git a/invenio_utilities_tuw/cli/records.py b/invenio_utilities_tuw/cli/records.py
index 90412abf957e34bb61399dc42d7fa5872ebdce17..668923e560be3890af3f508966ef8035a86fa172 100644
--- a/invenio_utilities_tuw/cli/records.py
+++ b/invenio_utilities_tuw/cli/records.py
@@ -15,7 +15,7 @@ import click
 from flask.cli import with_appcontext
 from invenio_db import db
 
-from ..utils import get_record_service
+from ..utils import get_identity_for_user, get_record_service, get_user_by_identifier
 from .options import (
     option_as_user,
     option_owners,
@@ -25,14 +25,7 @@ from .options import (
     option_pretty_print,
     option_raw,
 )
-from .utils import (
-    convert_to_recid,
-    get_identity_for_user,
-    get_object_uuid,
-    get_user_by_identifier,
-    patch_metadata,
-    set_record_owners,
-)
+from .utils import convert_to_recid, get_object_uuid, patch_metadata, set_record_owners
 
 
 @click.group()
diff --git a/invenio_utilities_tuw/cli/users.py b/invenio_utilities_tuw/cli/users.py
index 9e21faabf5844de75320eeca1615981b221d5037..cc7e916f1da7a6d80a3bf2a48d362a9252ecaf35 100644
--- a/invenio_utilities_tuw/cli/users.py
+++ b/invenio_utilities_tuw/cli/users.py
@@ -12,8 +12,8 @@ import click
 from flask.cli import with_appcontext
 from invenio_accounts.models import User
 
+from ..utils import get_user_by_identifier, similarity
 from .options import option_hide_user_roles, option_only_list_active_users
-from .utils import get_user_by_identifier, similarity
 
 
 @click.group()
diff --git a/invenio_utilities_tuw/cli/utils.py b/invenio_utilities_tuw/cli/utils.py
index fd978efe6ff7b2dc9357cd14886066427f61c1d2..041ef6656483bbce297ba9783fe6fde75fc31436 100644
--- a/invenio_utilities_tuw/cli/utils.py
+++ b/invenio_utilities_tuw/cli/utils.py
@@ -9,11 +9,7 @@
 """Utilities for the CLI commands."""
 
 import json
-from difflib import SequenceMatcher
 
-from invenio_access.permissions import any_user, system_identity
-from invenio_access.utils import get_identity
-from invenio_accounts import current_accounts
 from invenio_db import db
 from invenio_pidstore.models import PersistentIdentifier
 
@@ -82,31 +78,6 @@ def patch_metadata(metadata: dict, patch: dict) -> dict:
     return metadata
 
 
-def get_user_by_identifier(id_or_email):
-    """Get the user specified via email or ID."""
-    if id_or_email is not None:
-        # note: this seems like the canonical way to go
-        #       'id_or_email' can be either an integer (id) or email address
-        u = current_accounts.datastore.get_user(id_or_email)
-        if u is not None:
-            return u
-        else:
-            raise LookupError("user not found: %s" % id_or_email)
-
-    raise ValueError("id_or_email cannot be None")
-
-
-def get_identity_for_user(user):
-    """Get the Identity for the user specified via email or ID."""
-    if user is not None:
-        found_user = get_user_by_identifier(user)
-        identity = get_identity(found_user)
-        identity.provides.add(any_user)
-        return identity
-
-    return system_identity
-
-
 def get_object_uuid(pid_value, pid_type):
     """Fetch the UUID of the referenced object."""
     uuid = (
@@ -142,8 +113,3 @@ def set_record_owners(record, owners, commit=True):
     if commit:
         parent.commit()
         db.session.commit()
-
-
-def similarity(a: str, b: str) -> float:
-    """Calculate the similarity between two strings."""
-    return SequenceMatcher(None, a, b).ratio()
diff --git a/invenio_utilities_tuw/utils.py b/invenio_utilities_tuw/utils.py
index b8220e3c7ad7028c15f238e668b8a64282fbdb13..24f960ce3cbd2b722257f9827cb131a7ddc4e97d 100644
--- a/invenio_utilities_tuw/utils.py
+++ b/invenio_utilities_tuw/utils.py
@@ -8,7 +8,12 @@
 
 """Utility functions for Invenio-Utilities-TUW."""
 
+from difflib import SequenceMatcher
+
 from flask import current_app
+from invenio_access.permissions import any_user, system_identity
+from invenio_access.utils import get_identity
+from invenio_accounts import current_accounts
 from invenio_rdm_records.proxies import current_rdm_records
 from werkzeug.utils import import_string
 
@@ -33,3 +38,33 @@ def get_record_service():
         factory = lambda: current_rdm_records.records_service
 
     return factory()
+
+
+def get_user_by_identifier(id_or_email):
+    """Get the user specified via email or ID."""
+    if id_or_email is not None:
+        # note: this seems like the canonical way to go
+        #       'id_or_email' can be either an integer (id) or email address
+        u = current_accounts.datastore.get_user(id_or_email)
+        if u is not None:
+            return u
+        else:
+            raise LookupError("user not found: %s" % id_or_email)
+
+    raise ValueError("id_or_email cannot be None")
+
+
+def get_identity_for_user(user):
+    """Get the Identity for the user specified via email or ID."""
+    if user is not None:
+        found_user = get_user_by_identifier(user)
+        identity = get_identity(found_user)
+        identity.provides.add(any_user)
+        return identity
+
+    return system_identity
+
+
+def similarity(a: str, b: str) -> float:
+    """Calculate the similarity between two strings."""
+    return SequenceMatcher(None, a, b).ratio()