Omnata Product Documentation
  • Omnata Sync for Snowflake
    • What is Omnata Sync for Snowflake?
    • How it works
      • Terminology
      • Branching Mode
      • Sync Directions and Strategies
        • Outbound
        • Inbound
      • Rate Limiting
      • Access Control
      • Notifications
      • Security and Privacy
      • Internal tables
      • Internal Stored Procedures
      • FAQ
    • Step-by-step guides
      • 1. Install the Omnata Sync Engine
      • 2. Install the Omnata Plugin
      • 3. Configure the Plugin
      • 4. Create a connection
      • 5. Create a sync
    • Apps
      • Aerobotics
        • 📘Release History
      • Airtable
        • 📘Release History
      • Amazon Ads
        • Privacy Notice
      • ApprovalMax
        • 📘Release History
      • Bamboo HR
        • 📘Release History
      • Clockify
        • 📘Release History
      • Contentful
        • 📘Release History
      • GitHub
        • 📘Release History
      • Github
      • Google Ads
        • 📘Release History
      • Google Sheets
        • 📘Release History
      • HubSpot
        • 📘Release History
      • Hubspot
      • Infor Data Lake
        • 📘Release History
      • Jira
        • 📘Release History
      • LinkedIn Ads
        • 📘Release History
      • Mailgun
        • 📘Release History
      • Marketo
        • 📘Release History
      • Meta Marketing
        • 📘Release History
      • Microsoft Ads
        • 📘Release History
      • Microsoft Dynamics 365 Business Central
        • 📘Release History
        • 📘Release History
        • 📘Release History
        • 📘Release History
        • 📘Release History
      • Microsoft Entra ID
        • 📘Release History
        • 📘Release History
        • 📘Release History
        • 📘Release History
      • Microsoft Excel
      • Microsoft SQL Server
        • 📘Release History
      • Monday.com
        • 📘Release History
      • MRPeasy
        • 📘Release History
      • PayHero
        • 📘Release History
      • Pinterest Ads
        • Privacy Policy
      • PostgreSQL
        • 📘Release History
      • Salesforce
        • Salesforce Permissions needed
        • Formula Fields
        • How we use the Salesforce APIs
        • 📘Release History
      • Salesforce Marketing Cloud
        • OAuth for APIs, SFTP for file transfer with GPG on outbound
        • OAuth for APIs, SFTP for file transfer
        • OAuth for APIs, Cloud Storage for file transfer
        • 📘Release History
      • Shopify
        • Outbound sync data structures
        • 📘Release History
      • Slack
        • 📘Release History
      • Tiktok Ads
        • Privacy Policy
      • Typeform
        • 📘Release History
      • Wise
        • 📘Release History
      • Xero
        • 📘Release History
      • Zendesk Support
        • 📘Release History
        • 📘Release History
    • Plugins
      • Anatomy of a Plugin
      • Example Plugins
        • Example Plugin: Slack
        • Example Plugin: Zoho CRM
      • Creating Plugins
      • Advanced Plugin topics
        • Advanced rate limiting / concurrency
        • Custom Jinja filters
        • Custom Record Transformers
        • Dynamic Configuration Forms
        • Test case generation
    • Branching
      • Inbound Sync branching
      • Outbound Sync branching
    • Integrations
      • dbt
        • Validation Tests (coming soon)
    • 📘Release History
  • Omnata Connect for Salesforce
    • Overview
    • Getting Started
      • Install the Salesforce App
      • Connect to your data warehouse
        • Snowflake
        • BigQuery
        • Rockset
        • Firebolt
        • SingleStore (previously MemSQL)
      • Deciding which mode to use
    • Omnata with Salesforce Connect (External Objects)
      • Object Configuration
      • View your data in a list
      • Link to other objects
      • Use in a Report
      • Database schema changes
      • Writing to External Objects
    • Omnata with Salesforce Lightning Components
      • Object Configuration
      • View your data in a list
      • Link to other objects
      • Using the Lightning Component on a page
      • Assigning Permissions
    • Advanced Features
      • Row Level Filtering
      • Multi-Currency handling
        • About Multi-Currency
        • Support in Omnata Connect
        • Apex Features
    • Integrations
      • Datadog
    • Omnata with Salesforce Apex
    • Security
    • Use cases
      • Linked object drill-downs
      • Global Search
      • ERP and historical data
      • Embedded product metrics
    • Best Practices
      • Global Search
      • Change Management
      • Snowflake table design
      • Salesforce page layout
      • Salesforce Caching
Powered by GitBook
On this page
  • Overall process
  • Outbound strategies
  1. Omnata Sync for Snowflake
  2. How it works
  3. Sync Directions and Strategies

Outbound

Overall process

If you're syncing multiple things to an app (e.g. Salesforce Contacts and Accounts), each will have its own sync.

A sync record state is maintained for each sync. This is a table in Snowflake which is used to keep track of the state of data in the application. It stores a transformed version of the source table, which includes only the data being sent to the application.

A sync run applies new Snowflake changes to the application. These can be triggered using Omnata's own scheduler (which leverages Snowflake tasks), or via some external system like airflow or dbt.

During a sync run, the following steps occur:

  1. The records in the source Snowflake table/view are passed through a transformer, and then compared with the sync record state to determine whether or not any action is required. This takes into account which sync strategy is being used, e.g. an updated Snowflake record is ignored if the sync strategy is 'create'

  2. If action is required, the record is included in the sync run

  3. If there are records requiring action, the sync engine asks the app's plugin to sync the records

  4. The plugin syncs the records. The Omnata plugin framework provides common features like rate limiting, jinja rendering, record batching and concurrent execution

  5. For each record the plugin was given, it returns a success flag, a result object (containing arbitrary information or errors), and an App identifier if applicable (an identifier for the record in the app)

  6. The sync engine updates the record state, and also adds to the sync record history so that there is a historical audit trail for all records in all sync runs

  7. The health status of the sync is updated, based on what happened to the records in the sync run

Outbound strategies

With outbound syncs, record state is maintained locally and different record actions are applied depending on the pattern of changes and the chosen strategy.

All Sync Strategies except for "Replace" treat records differently as they change over time.

"Replace" is a simple strategy where every current record is always included (except where manually excluded). It is intended for apps that do a bulk overwrite of records.

Strategy
Newly created records
Updated records
Deleted records
Unchanged records

Create

Create

Ignored

Ignored

Ignored

Update

Ignored

Update

Ignored

Ignored

Delete

Ignored

Ignored

Delete

Ignored

Upsert

Create

Update

Ignored

Ignored

Mirror

Create

Update

Delete

Ignored

Replace

Recreate *

Recreate *

Ignored

Recreate *

* Replacing any existing records.

PreviousSync Directions and StrategiesNextInbound

Last updated 1 year ago