diff --git a/invenio_utilities_tuw/cli/drafts.py b/invenio_utilities_tuw/cli/drafts.py
index 014f27d6cdc9184e63e75a551db240a0cb00e89a..dcc616fb563ca9174b832751106e25c63fb166c6 100644
--- a/invenio_utilities_tuw/cli/drafts.py
+++ b/invenio_utilities_tuw/cli/drafts.py
@@ -32,6 +32,7 @@ from .utils import (
     get_identity_for_user,
     patch_metadata,
     read_metadata,
+    set_creatibutor_names,
     set_record_owners,
 )
 
@@ -99,6 +100,7 @@ def create_draft(metadata_path, publish, user, owners, vanity_pid):
         if owners:
             metadata = set_record_owners(metadata, owners)
 
+        metadata = set_creatibutor_names(metadata)
         draft = create_record_from_metadata(metadata, identity, vanity_pid=vanity_pid)
         recid = draft["id"]
 
@@ -112,6 +114,7 @@ def create_draft(metadata_path, publish, user, owners, vanity_pid):
         if owners:
             metadata = set_record_owners(metadata, owners)
 
+        metadata = set_creatibutor_names(metadata)
         draft = create_record_from_metadata(metadata, identity)
         recid = draft["id"]
         file_names = []
@@ -196,6 +199,7 @@ def update_draft(metadata_file, pid, pid_type, user, patch, owners):
         owners = [get_identity_for_user(owner) for owner in owners]
         metadata = set_record_owners(metadata, owners)
 
+    metadata = set_creatibutor_names(metadata)
     service.update_draft(id_=pid, identity=identity, data=metadata)
     click.secho(pid, fg="green")
 
diff --git a/invenio_utilities_tuw/cli/records.py b/invenio_utilities_tuw/cli/records.py
index 319e12d88a6ac445f5e72d4892c6f4e7e6741e7e..ec2ca0cf46bc4770de29b29199b554f21db2237d 100644
--- a/invenio_utilities_tuw/cli/records.py
+++ b/invenio_utilities_tuw/cli/records.py
@@ -29,6 +29,7 @@ from .utils import (
     get_identity_for_user,
     get_object_uuid,
     patch_metadata,
+    set_creatibutor_names,
     set_record_owners,
 )
 
@@ -112,6 +113,7 @@ def update_record(metadata_file, pid, pid_type, user, patch, owners):
         owners = [get_identity_for_user(owner) for owner in owners]
         metadata = set_record_owners(metadata, owners)
 
+    metadata = set_creatibutor_names(metadata)
     service.update(id_=pid, identity=identity, data=metadata)
     click.secho(pid, fg="green")
 
diff --git a/invenio_utilities_tuw/cli/utils.py b/invenio_utilities_tuw/cli/utils.py
index 6b8fcef5699f748415d31afe657410e3ddee01c6..a041978f5d04a3c79ef92f5cb6dd59466e4a7e18 100644
--- a/invenio_utilities_tuw/cli/utils.py
+++ b/invenio_utilities_tuw/cli/utils.py
@@ -133,3 +133,28 @@ def set_record_owners(record_metadata, owners):
 
     metadata["access"]["owned_by"] = owners
     return metadata
+
+
+def _set_creatibutor_name(creatibutor):
+    """Set the name from the given_name and family_name from the creator/contributor."""
+    creatibutor = creatibutor.get("person_or_org", {})
+    name = creatibutor.get("name")
+
+    if not name:
+        given_name = creatibutor.get("given_name")
+        family_name = creatibutor.get("family_name")
+        if given_name and family_name:
+            creatibutor["name"] = "{}, {}".format(family_name, given_name)
+
+
+def set_creatibutor_names(record_metadata):
+    """Set the name field for each creator and contributor if they're not set."""
+    metadata = record_metadata.copy()
+
+    for creator in metadata.get("metadata", {}).get("creators", []):
+        _set_creatibutor_name(creator)
+
+    for contributor in metadata.get("metadata", {}).get("contributors", []):
+        _set_creatibutor_name(contributor)
+
+    return metadata