How Rox Handles Refresh Flow from CRM
Warehouse Native Structured Private Data describes the basic concepts of Rox Data Fabric, and this blog unpacks how Rox refreshes data to give the customers the up-to-date view from their CRM system.
Why Refresh Flow Matters?
A Customer Relationship Management (CRM) system is not static - customers are constantly adding new records, and updating or deleting existing ones. And customers expect a single source of truth in Rox to view the latest changes in a timely manner. Without a refresh flow:
Sales teams risk acting on stale leads and losing deals.
Outreach may mis key contact information to reach out.
Analytics and forecasting becomes inaccurate, harming strategic decisions.
Why Refresh Flow is Hard?
Designing a resilient refresh flow involves several engineering challenges:
High data volume and velocity
Data Consistency
Idempotent operations
Fault Tolerant and Recovery
Refresh Flow Architecture
Rox CRM Refresh Flow consists of 3 major layers:
Data Ingestion Layer
Connectors to customer CRM detect changes and stream in data changes.
Processing & Transformation Layer
Change detection: Detect changes in Account, Person, and Deal entities from CRM based on mapped
crm_last_modified_timestamp
.Preprocessing: Cleaning and deduplication of changed data
Persistence: Refresh changed data in Knowledge Graph
Serving Layer
For new data or entity name changes, entity registration would flow into the Rox.
For key changes in an entity (i.e., domain in Account, email in Person), Rox treats them as a new entity record, and would migrate existing user-added Artifacts to the new entity in Rox.
Account Refresh
For Account entity, domain
in Account
CRM table is the key field for a Rox account.
A Rox account is associated with both
public data (collected and generated based on
domain
)private data for user-added artifacts, including notes, user-uploaded files, contacts, calendars, emails, and outreach campaigns.
For a new CRM account record, Rox would generate a rox_entity_id
as the unique Rox Account ID. And later account registration kicks in, and will associated with the account owner.
For a domain change on an existing Rox account, Rox would generate a new Rox Account ID as a new account. And later during account registration, Rox would migrate existing private data (aka user artifacts) to the new Rox Account.
For the rest of changed fields, Rox would reflect changes during the refresh, and no Account migration needed.
Person Refresh
For Person entity, Rox extracts several metadata fields from Contact
CRM table, including
email
is used to identify a Rox Person.crm_account_id
Similarly, for a new CRM person record, Rox would generate a rox_entity_id
as the unique Rox Person ID, and then will be associated with a Rox account that maps the given crm_account_id
.
If the mapped crm_account_id
changed, as part of Account Refresh above, the Account-Person entity link would also be refreshed to reflect that.
For the email
change, a new Rox Person ID would be generated, and Rox has built unified person entity resolution engine to consolidate matching multiple Rox person into the same unified person (stay tuned for this).
Last updated