Skip to main content
NEAT supports two data modeling modes: additive and rebuild. Deployment behavior in Cognite Data Fusion (CDF) depends on which mode you use. Changes are classified into three severity levels:
  • SAFE: No impact on existing data or functionality
  • WARNING: Allowed with caution (changes may have implications, for example, adding a constraint can cause ingestion pipelines to fail if they don’t comply with the constraint)
  • BREAKING: Not applied to CDF

Why it matters

Choosing the right mode protects your data and applications. Additive mode is intended for production environments where stability is crucial, while rebuild mode is designed for development/sandbox environments where you can iterate quickly delete and recreate models so you try out and do breaking changes. Rebuild is not suitable for production because it deletes the containers and data, which can lead to data loss. The sections below describe each mode and list the allowed and disallowed changes per severity level.
NEAT considers only changes to data model components (DMS schema components) in the same space as the data model. Changes outside that space are ignored to prevent accidental modifications to data models owned or managed by other teams.

Additive mode

Additive mode provides:
  • Forward compatibility: Existing applications work with the updated model without changes.
  • Incremental deployment: Changes apply gradually for controlled evolution.
  • Production suitability: Best for production environments where stability and forward compatibility matter.
The table below lists allowed and disallowed changes in additive mode:
SeverityOperationChange descriptionExample
SAFECreateData model-
SAFECreateViewEntire views, new properties, filters
SAFECreateContainerEntire containers, new properties, indexes and constraints
SAFECreateNew enums to existing enum properties-
SAFEUpdateData model metadataName, description, version
SAFEUpdateData model’s view order-
SAFEUpdateView metadataName, description, version
SAFEUpdateContainer metadataName, description
SAFEUpdateProperty metadataName, description
SAFEUpdateEnums metadataName, description
WARNINGUpdateView filters-
WARNINGUpdateEdge type-
WARNINGUpdateSource property for reverse connectionAlso known as through in CDF API
WARNINGRemoveContainer constraints-
WARNINGRemoveContainer indexes-
WARNINGUpdateMutability of container properties-
WARNINGUpdateAuto-increment of container properties-
WARNINGUpdateDefault value of container properties-
WARNINGUpdateMax count of listable properties-
WARNINGRemoveContainer property unitRemoving meter from a property
WARNINGAddContainer property unitAdding meter to a property that did not have a unit before
BREAKINGDeleteExisting data model-
BREAKINGDeleteView reference from the data model-
BREAKINGDeleteExisting view-
BREAKINGAddImplements to an existing view-
BREAKINGDeleteProperty from an existing view-
BREAKINGUpdateMapping of view (property) to container (property)-
BREAKINGUpdateDirect/reverse connection value typeAlso known as source in CDF API
BREAKINGUpdateEdge source of propertiesSetting new view as source of properties
BREAKINGUpdateEdge direction-
BREAKINGUpdateConnection typeFrom edge to direct connection
BREAKINGUpdateWhat container is used forSwitching usedFor from node to edge
BREAKINGUpdateValue type of container propertyFrom text to integer
BREAKINGUpdateContainer constraint definitionsuniqueness constraint property bySpace cannot be changed
BREAKINGUpdateContainer index definitionsAdding or removing properties to which the index applies
BREAKINGUpdateNullability of container properties-
BREAKINGUpdateContainer property unitChanging from meter to kilometer
BREAKINGUpdatemaxTextSize of text properties-
BREAKINGDeleteEnum values from existing enum properties-

Rebuild mode

Rebuild mode allows every change because the entire model is deleted and recreated. Use it for development or testing where no existing data or applications depend on the model. Deployment fails if containers contain data—NEAT does not remove data accidentally. To delete existing data intentionally, set drop_data=True when deploying: neat.physical_data_model.write.cdf(dry_run=False, drop_data=True).

Further reading

Last modified on February 27, 2026