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
- Verify the standard flat search field metadata maps include entries for messageCampaign name and subject fields
- Ensure getSearchFieldUniversalIdentifier's derivation matches how the standard search fields were defined
- Rebuild twenty-shared: npx nx build twenty-shared
- 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
- Verify getSearchFieldUniversalIdentifier's derivation matches how standard search fields were defined
- Rebuild twenty-shared before running upgrade commands
- Run with --dryRun to inspect which search fields are being resolved
- Add integration tests that verify standard search field identifiers resolve for messageCampaign
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
- Standard application is missing the messageCampaign name fie
- Standard application is missing the messageCampaign name vie
- Standard application is missing messageList view ${LIST_VIEW
- Standard application is missing workflowVersion field coreWo
- Standard application is missing workflow field coreWorkflowI
AI-assisted analysis of twentyhq/twenty@1f5dd2bbd2 (2026-08-12).
Data as JSON: /api/errors/919eb7a1e553afef.
Report an issue: GitHub.