twentyhq/twenty · critical · Error

Standard application is missing the messageCampaign search f

Error message

Standard application is missing the messageCampaign search field for field ${fieldMetadataUniversalIdentifier}

What it means

Thrown by the 2.25 command that adds the messageCampaign name field, during computeSearchFieldMetadatasToCreate. For each searched field (name, subject), the command derives a searchFieldUniversalIdentifier via getSearchFieldUniversalIdentifier and checks if it already exists. If not, it looks up the standard FlatSearchFieldMetadata via findFlatEntityByUniversalIdentifier in the standard flat search field metadata maps. If the standard maps don't contain the derived search field identifier, the command throws.

Source

Thrown at packages/twenty-server/src/database/commands/upgrade-version-command/2-25/2-25-workspace-command-1785229970000-add-message-campaign-name-field.command.ts:342

        if (
          isDefined(
            flatSearchFieldMetadataMaps.byUniversalIdentifier[
              searchFieldUniversalIdentifier
            ],
          )
        ) {
          return [];
        }

        const standardFlatSearchFieldMetadata =
          findFlatEntityByUniversalIdentifier<FlatSearchFieldMetadata>({
            flatEntityMaps: standardFlatSearchFieldMetadataMaps,
            universalIdentifier: searchFieldUniversalIdentifier,
          });

        if (!isDefined(standardFlatSearchFieldMetadata)) {
          throw new Error(
            `Standard application is missing the messageCampaign search field for field ${fieldMetadataUniversalIdentifier}`,
          );
        }

        return [standardFlatSearchFieldMetadata];
      },
    );
  }
}

View on GitHub (pinned to 1f5dd2bbd2)

Solutions

  1. Verify the standard flat search field metadata maps include entries for messageCampaign name and subject fields
  2. Ensure getSearchFieldUniversalIdentifier's derivation matches how the standard search fields were defined
  3. Rebuild twenty-shared: npx nx build twenty-shared
  4. Run with --dryRun to inspect which search fields are being resolved
Defensive patterns

Strategy: validation

Validate before calling

// Before running, verify the standard search field maps include messageCampaign entries
import { getSearchFieldUniversalIdentifier } from 'twenty-shared/application';
import { STANDARD_OBJECTS } from 'twenty-shared/metadata';
import { computeTwentyStandardApplicationAllFlatEntityMaps } from '...';

const standardMaps = computeTwentyStandardApplicationAllFlatEntityMaps({
  now: new Date().toISOString(),
  workspaceId: 'check-only',
  twentyStandardApplicationId: 'check-only',
});

for (const fieldUid of [
  STANDARD_OBJECTS.messageCampaign.fields.name.universalIdentifier,
  STANDARD_OBJECTS.messageCampaign.fields.subject.universalIdentifier,
]) {
  const searchFieldUid = getSearchFieldUniversalIdentifier({
    applicationUniversalIdentifier: TWENTY_STANDARD_APP_UID,
    fieldMetadataUniversalIdentifier: fieldUid,
  });

  if (!isDefined(standardMaps.flatSearchFieldMetadataMaps.byUniversalIdentifier[searchFieldUid])) {
    throw new Error(`Standard maps missing search field for ${fieldUid}`);
  }
}

Type guard

import { isDefined } from 'twenty-shared/utils';

const hasStandardSearchField = (
  maps: FlatEntityMaps<FlatSearchFieldMetadata>,
  uid: string,
): boolean => isDefined(maps.byUniversalIdentifier[uid]);

Prevention

When it happens

Trigger: The derived searchFieldUniversalIdentifier (from getSearchFieldUniversalIdentifier using the standard application's universal identifier and the field's universal identifier) does not resolve to a FlatSearchFieldMetadata in the computed standard maps. Caused by: the standard search field definitions not including the messageCampaign name/subject search fields, a version mismatch, or the application universal identifier used in derivation doesn't match the standard's.

Common situations: Forked twenty-shared where messageCampaign search fields are not defined; running against an older twenty-shared build; a change in getSearchFieldUniversalIdentifier's derivation logic that doesn't match the standard definitions.

Related errors


AI-assisted analysis of twentyhq/twenty@1f5dd2bbd2 (2026-08-12). Data as JSON: /api/errors/919eb7a1e553afef. Report an issue: GitHub.