diff --git a/src/lib/Repository/EventSubscriber/NameSchemaSubscriber.php b/src/lib/Repository/EventSubscriber/NameSchemaSubscriber.php
index 61f2c81a51..02da73b1c4 100644
--- a/src/lib/Repository/EventSubscriber/NameSchemaSubscriber.php
+++ b/src/lib/Repository/EventSubscriber/NameSchemaSubscriber.php
@@ -88,7 +88,7 @@ public function onResolveUrlAliasSchema(ResolveUrlAliasSchemaEvent $event): void
         }
 
         $languageList = array_map(
-            static fn (Language $language): string => $language->getLanguageCode(),
+            static fn(Language $language): string => $language->getLanguageCode(),
             (array)$event->getContent()->getVersionInfo()->getLanguages()
         );
 
@@ -113,8 +113,6 @@ public function isValid(AbstractSchemaEvent $event): bool
     /**
      * @param array<string> $languages
      * @param array<int, string> $identifiers
-     * @param \Ibexa\Contracts\Core\Repository\Values\ContentType\ContentType $contentType
-     * @param \Ibexa\Contracts\Core\Repository\Values\Content\Content|null $content
      * @param array<string, array<string, string>> $tokenValues
      * @param array<int|string, array<string, \Ibexa\Contracts\Core\FieldType\Value>> $fieldMap
      *
@@ -129,29 +127,58 @@ private function processEvent(
         array $fieldMap = []
     ): array {
         foreach ($languages as $languageCode) {
-            $tokenValues[$languageCode] ?? $tokenValues[$languageCode] = [];
-            foreach ($identifiers as $identifier) {
-                $fieldDefinition = $contentType->getFieldDefinition($identifier);
-                if (null === $fieldDefinition) {
-                    continue;
-                }
-
-                $persistenceFieldType = $this->fieldTypeRegistry->getFieldType($fieldDefinition->fieldTypeIdentifier);
+            $tokenValues[$languageCode] = $content !== null || !empty($fieldMap)
+                ? $this->getValues(
+                    $identifiers,
+                    $contentType,
+                    $content,
+                    $fieldMap,
+                    $languageCode
+                )
+                : [];
+        }
 
-                if ($content === null && empty($fieldMap)) {
-                    continue;
-                }
+        return $tokenValues;
+    }
 
-                $field = $fieldMap ? $fieldMap[$identifier][$languageCode] ?? '' : $content->getFieldValue($identifier, $languageCode);
+    /**
+     * @param array<int, string> $identifiers
+     * @param array<int|string, array<string, \Ibexa\Contracts\Core\FieldType\Value>> $fieldMap
+     *
+     * @return array<string, string>
+     */
+    private function getValues(
+        array $identifiers,
+        ContentType $contentType,
+        ?Content $content,
+        array $fieldMap,
+        string $languageCode
+    ): array {
+        $tokenValues = [];
+        foreach ($identifiers as $identifier) {
+            $fieldDefinition = $contentType->getFieldDefinition($identifier);
+            if (null === $fieldDefinition) {
+                continue;
+            }
 
-                $field = $field ? $persistenceFieldType->getName(
-                    $field,
-                    $fieldDefinition,
-                    $languageCode
-                ) : '';
+            $persistenceFieldType = $this->fieldTypeRegistry->getFieldType($fieldDefinition->fieldTypeIdentifier);
 
-                $tokenValues[$languageCode][$identifier] = $field;
+            if ($content === null && empty($fieldMap)) {
+                continue;
             }
+
+            $field = $fieldMap ? $fieldMap[$identifier][$languageCode] ?? '' : $content->getFieldValue(
+                $identifier,
+                $languageCode
+            );
+
+            $field = $field ? $persistenceFieldType->getName(
+                $field,
+                $fieldDefinition,
+                $languageCode
+            ) : '';
+
+            $tokenValues[$identifier] = $field;
         }
 
         return $tokenValues;
diff --git a/src/lib/Repository/NameSchema/NameSchemaService.php b/src/lib/Repository/NameSchema/NameSchemaService.php
index 51cd29c0b0..782a154191 100644
--- a/src/lib/Repository/NameSchema/NameSchemaService.php
+++ b/src/lib/Repository/NameSchema/NameSchemaService.php
@@ -278,7 +278,7 @@ protected function filterNameSchema(string $nameSchema): array
     public function buildNames(array $tokenValues, string $nameSchema): array
     {
         if (empty($tokenValues)) {
-            throw new UnresolvedTokenNamesException();
+            throw new UnresolvedTokenNamesException('$tokenValues', 'is Empty');
         }
 
         [$filteredNameSchema, $groupLookupTable] = $this->filterNameSchema($nameSchema);