StaticGenerateStaticPersistUpserts IntegrationObject and IntegrationObjectField records from dynamically discovered schema.
Merge strategy — describe wins for technical fields. When a discovered field matches an existing record, we refresh Type, AllowsNull, IsRequired, and IsPrimaryKey from the live describe output. These are the attributes that drive DDL generation and sync-time coercion; curated values can (and do) drift from what the external system actually exposes and cause overflow / null-violation errors.
Curated metadata still wins for semantic fields — DisplayName, Description (only filled when empty), Sequence, Category — because those are human-authored and the describe output usually doesn't improve them.
Generates Action entities for newly discovered custom objects by feeding them through the same
ActionMetadataGeneratorused for standard objects, then persisting the result via BaseEntity.Save().This ensures custom object actions are structurally identical to standard ones — same verbs, same param shapes, same result codes.