Skip to main content
This document describes the CAM Model, which creates a unified and extensible representation of various company assets. The model is built on two primary storage partitions in the database: one for the Core Asset State and others for customer-provided Asset Extensions. The processes of DUMP (syncing to S3) and seedSync (ingesting and linking data) ensure data integrity and performance.

Partition 1: Core Asset State

This partition (<assetTypeId>) holds the core, enriched properties of an asset, serving as the central record. It is built by combining foundational data with synced information from various extensions.
  • Description: The unique, system-generated primary key (sort key) for each asset record across all partitions.
  • Data Type: UUID
  • Example: a1b2c3d4-e5f6-7890-1234-567890abcdef
  • Description: Standard, foundational attributes of any asset, such as its name and hierarchical references.
  • Data Type: Varies (String, Integer, etc.)
  • Notes: Includes default properties and any attributes defined through mutations.
  • Description: A property that links the core asset to its extension data. It is created on the core asset using the stateProperty defined in an extension’s connectionDetails. This field holds the value that is used to join with the extension’s idProperty.
  • Data Type: String
  • Example: FLOC-12345
  • Description: Core asset properties that are populated or “enriched” by data from an extension dataset, as defined in the extension’s stateProperties mapping. This allows customer data to fill in the asset’s official state.
  • Data Type: Varies (String, Integer, Float)
  • Example: The name field might be populated from a SAP_FUNCTIONAL_LOCATION_DESCRIPTION column in a customer’s dataset.
  • Description: The official GeoJSON geometry for the asset. This property is populated from the column specified in an extension’s geometryColumn definition.
  • Data Type: String (GeoJSON)
  • Example: "{ 'type': 'Point', 'coordinates': [-104.9903, 39.7392] }"
  • Description: Fields added and managed by other internal components or backend services that interact with the asset model.
  • Data Type: Varies (Boolean, String)

Partition 2+: Asset Extensions

Each extension has a dedicated partition (<assetTypeId>:<extensionId>) that stores the raw, unmodified data provided by the customer. This data is read-only within the CAM model and serves as the source for enriching the Core Asset State.
  • Description: The unique primary key (sort key) that links the extension record back to the corresponding record in the Core Asset State partition. This ID is established during the seed and seedExtension processes.
  • Data Type: UUID
  • Example: a1b2c3d4-e5f6-7890-1234-567890abcdef
  • Description: All other columns and values provided in the customer’s source dataset for the extension. These fields are not directly mutable and reflect the customer’s data “as-is.”
  • Data Type: Varies (Depends on customer data)
  • Notes: The specific fields in this partition are dynamic and match the schema of the customer’s source file. The seedSync process uses this data to update the Core Asset State.