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
  • Prerequisites
  • Authentication
  • OAuth (Microsoft Entra ID)
  • Setting up a new connection
  • Inbound Syncs
  • Supported endpoints
  • Optimizing performance
  • Using a Custom Storage Location
  • Capturing deletes
  • Functions
  • Outbound Syncs
  1. Omnata Sync for Snowflake
  2. Apps

Microsoft Dynamics 365 Business Central

PreviousRelease HistoryNextRelease History

Last updated 14 days ago

This plugin is currently in private preview and distributed directly to your Snowflake account instead of via Marketplace listing. Please to request access.

Prerequisites

You will need to use Business Central to create a Connect app. This allows point-to-point connection between Dynamics 365 Business Central and Omnata Sync for Snowflake via a REST API to interchange data. Learn more at

Authentication

OAuth (Microsoft Entra ID)

Visit the for Setting up Microsoft Entra ID based authentication for Business Central.

Configure Business Central

  • Register the application in Business Central: In Business Central, navigate to "Microsoft Entra Applications" and register the application you created in Microsoft Entra ID. Assign the necessary permissions to this application

Entra ID Application Permissions

Configure API permissions: After registering, go to "API permissions" and add the following permissions for Business Central.

API Application:

  • API.ReadWrite.All

  • app_access

API Delegated:

  • Financials.ReadWrite.All

  • user_impersonation

Setting up a new connection

When setting up a new connection you have 2 options for authentication:

  • OAuth (Microsoft Entra)

  • OAuth (Plugin managed tokens)

Tokens need to be refreshed every 60 minutes. If your sync is going to take longer than 60 minutes, you will need to use the Plugin managed tokens option.

Items you will need to setup a connection:

  • Client ID

  • Client Secret

  • Tenant ID

  • Environment (eg Production)

  • Custom API Publisher

  • Custom API Group

  • Custom API Version

Inbound Syncs

Supported endpoints

We support the following endpoints for Business Central:

  • API (v2.0)

  • OData Web Services

  • Custom APIs (aka. 'Advanced APIs' in PowerBI)

Optimizing performance

Due to the size of initial syncs, its recommended that you split your inbound syncs into multiple streams. The following are the recommended streams to use for Business Central:

  • General

  • Accounts

  • Customers

  • Sales

  • Purchases

  • General Ledger

  • Fixed Assets

Unsupported Endpoints

The following endpoints are currently not supported

  • timeRegistrationEntries

  • subscriptions

  • picture

  • documentAttachment

  • pdfDocument


Using a Custom Storage Location

Raw Tables
Normalized Views

Database Name

SOURCE_DATA_LOAD

SOURCE_DATA_LOAD

Schema Name

BUSINESS_CENTRAL_RAW

BUSINESS_CENTRAL

Table Name

{{stream_name}}

{{stream_name}}

It is important that the Omnata Sync Engine native application has the correct permissions to create tables in the database(s) and schema(s) you specify. The following is an example of the permissions required for the above storage location:

create database SOURCE_DATA_LOAD comment='Data Sourced through Omnata Sync Engine';
create schema SOURCE_DATA_LOAD.BUSINESS_CENTRAL;
create schema SOURCE_DATA_LOAD.BUSINESS_CENTRAL_RAW;
grant usage on database SOURCE_DATA_LOAD to application "OMNATA_SYNC_ENGINE";
grant create schema on database SOURCE_DATA_LOAD to application "OMNATA_SYNC_ENGINE";
grant create table on schema SOURCE_DATA_LOAD.BUSINESS_CENTRAL to application "OMNATA_SYNC_ENGINE";
grant create table on schema SOURCE_DATA_LOAD.BUSINESS_CENTRAL_RAW  to application "OMNATA_SYNC_ENGINE";
grant create view on schema SOURCE_DATA_LOAD.BUSINESS_CENTRAL to application "OMNATA_SYNC_ENGINE";
grant usage on schema SOURCE_DATA_LOAD.BUSINESS_CENTRAL to application "OMNATA_SYNC_ENGINE";
grant usage on schema SOURCE_DATA_LOAD.BUSINESS_CENTRAL_RAW to application "OMNATA_SYNC_ENGINE";

Capturing deletes

Webhooks is the way to get notified if an entity changes in Business Central and is the only way to get notified about deletes. Unfortunately, Snowflake doesn't currently provide the ability to use webhooks, therefore alternative strategies are required.

We recommend you use the Inbound Sync Strategy "Full Refresh" for the following entities instead:

  • accounts

  • companies

  • company_information

  • countries_regions

  • currencies

  • employees

  • payment_methods

  • payment_terms

  • tax_areas

  • tax_groups

  • units_of_measure

  • vendors

Secondary full-refresh schedule

An alternative method to capture deletes.

If you wish use the "Incremental Refresh" strategy, you can set an additional schedule when you would like a full refresh to occur by running the following Omnata stored procedure in Snowflake. This will enable eventual consistency of the reference data.

call OMNATA_SYNC_ENGINE.API.SET_FULL_REFRESH_SCHEDULE('slug_name', 'main',
                      PARSE_JSON('{"frequency": "0 0 * * * UTC", "frequency_name":
                      "Custom"}')
                      );

Functions

There are two direct query options available for Business Central which allows you to query the data directly in Snowflake worksheets and notebooks.

api/v2.0

This is the recommended direct query type for Business Central. It allows you to query the Business Central API directly.

Parameter
Description

connection_slug

The connection slug you have setup for Business Central

company_id

The company id you wish to query

entity_name

The name of the entity you wish to query

fields

List of fields names to return

filter

List of filter expressions to apply

expansions

List of child entities to return with the results

Example usage
select * from table(OMNATA_DYNAMICS_365_BUSINESS_CENTRAL.UDFS.API_QUERY('business-central-prod', 'f3b0d711-5dc5-4b0c-9eef-52d947634567', 'locations', ['id', 'displayName'], ['code eq \'Main\''], []));

Count Records

To get a count of the total number of records available in a given entity, you can use the following user defined function

Parameter
Description

connection_slug

The connection slug you have setup for Business Central

company_id

The company id you wish to query

entity_name

The name of the entity you wish to query

filter

List of filter expressions to apply

Example usage
select * from table(OMNATA_DYNAMICS_365_BUSINESS_CENTRAL.UDFS.API_COUNT('business-central-prod', 'f3b0d711-5dc5-4b0c-9eef-52d947634567', 'locations', ['code eq \'Main\'']));

Custom Endpoints

If you need to query a custom endpoint, you can use the following stored procedure to do so:

Parameter
Description

connection_slug

The connection slug you have setup for Business Central

company_id

The company id you wish to query

entity_name

The name of the entity you wish to query

fields

List of fields names to return

filter

List of filter expressions to apply

expansions

List of child entities to return with the results

Example Usage
select * from table(OMNATA_DYNAMICS_365_BUSINESS_CENTRAL.UDFS.CUSTOM_API_QUERY('business-central-prod', 'f3b0d711-5dc5-4b0c-9eef-52d947634567', 'locations', ['id', 'displayName'], ['code eq \'Main\''], []));

Companies

To get a list of companies you can query, you can use the following stored procedure:

Parameter
Description

connection_slug

The connection slug you have setup for Business Central

Example usage
select * from table(OMNATA_DYNAMICS_365_BUSINESS_CENTRAL.UDFS.GET_COMPANIES('business-central-prod'));

Outbound Syncs

Outbound syncs are not supported for Business Central.

If you plan to use a (optional), you will need to supply these additional details for the connection:

It is recommended that you use customise the so your projects can easily access the data as necessary. The following are the recommended properties to use for the storage location:

get in touch
Microsoft Docs for Business Central API (v2.0)
Microsoft Docs
Custom API
Omnata Sync Storage Location