ml-connector
SAP Business OneTableau

SAP Business One and Tableau integration

SAP Business One holds your company's financial transactions, inventory levels, and sales orders. Tableau presents that data as interactive dashboards. Connecting the two keeps your business intelligence dashboards current without manual extract exports or nightly batch jobs. Your finance team gets up-to-date dashboards for month-end close, inventory review, and sales performance without asking IT to run an export every morning.

How SAP Business One works

SAP Business One runs on customer-owned infrastructure or partner hosting, exposing financial and operational records through OData v4 REST at a customer-specific Service Layer URL with no shared global endpoint. Authentication is session-based: a POST request returns a B1SESSION cookie valid for 30 minutes of inactivity. Key entities include business partners, purchase orders, invoices, inventory items, journal entries, and profit centers. Version 10.0 FP 2602 and later support webhooks for Create/Update/Delete events, but polling with UpdateDate filters is the safer default since webhook setup requires SAP admin configuration. Self-signed TLS certificates are common on-premise, so session reuse is critical to performance.

How Tableau works

Tableau operates in cloud (SaaS multi-tenant) and self-hosted (on-premise) modes, both exposing workbooks, data sources, views, projects, users, and schedules through REST API version 3.29 and higher. Authentication uses personal access tokens with a session exchange (recommended for connectors): one call returns a session token valid for 240 minutes. Webhooks fire on 24 event types including datasource refresh success/failure and workbook updates. The API is site-scoped, meaning every operation requires a site ID in the path. Views are read-only derived objects without write operations, and extract refreshes happen through dedicated refresh endpoints rather than direct data updates.

What moves between them

SAP Business One transactional records (invoices, purchase orders, inventory, journal entries) are read on a schedule tied to your financial cycle. ml-connector transforms each record into columns matching your Tableau data source schema, publishes the extract, and triggers a refresh in Tableau. Inventory levels and sales data flow continuously so your Tableau dashboards reflect current source data. The flow is one-direction: SAP Business One to Tableau. No write-back occurs.

How ml-connector handles it

ml-connector maintains a single reusable SAP Business One session per customer instance, reusing the B1SESSION cookie across requests to avoid the 5-second cold-start penalty of logging in on each call, and monitoring session expiry to refresh before a request fails. On the Tableau side, it exchanges a personal access token for a session token, stores both encrypted, and re-authenticates only when the session expires. It reads SAP Business One records using OData $filter with UpdateDate to fetch only changed records since the last run, batches them by paging with $top and $skip, and maps each record to its matching Tableau column. Tableau's site-scoped API requires the site ID in every path, so ml-connector stores and validates the site ID per customer. Extracts are published as CSV or Parquet files and refresh triggered through Tableau's dedicated endpoints. Duplicate transactions in SAP Business One are detected using DocNum before insert, and failed extract publishes are retried with exponential backoff.

A real-world example

A mid-market distributor runs SAP Business One on-premise for order fulfillment, inventory, and finance. Their sales and finance teams use Tableau dashboards to track daily sales by region, inventory aging, and profit margin by customer. Previously, the BI team ran manual extracts from SAP Business One three times daily and uploaded them to Tableau, a 45-minute task that created delays and errors when someone forgot to run it. With SAP Business One and Tableau connected, extracts publish automatically every two hours, dashboards update without human intervention, and the sales director gets current numbers on demand.

What you can do

  • Extract financial and operational records from SAP Business One and publish them as refreshed Tableau data sources on a schedule you control.
  • Read updated records since the last sync using OData filters to avoid re-processing the entire dataset.
  • Map SAP Business One dimensions and measures to Tableau data source columns without manual re-keying or intermediate scripts.
  • Handle SAP Business One session reuse and Tableau personal access token lifecycle so authentication does not become an outage.
  • Detect duplicate transactions in SAP Business One and retry failed Tableau refreshes with a full audit trail.

Questions

Which direction does data move between SAP Business One and Tableau?
SAP Business One to Tableau only. Financial transactions, inventory records, and sales orders are read from SAP Business One and published as Tableau data source extracts. Tableau is the read-and-display layer; no data flows back into SAP Business One.
How does ml-connector handle SAP Business One's customer-specific Service Layer URL and session timeout?
ml-connector stores the full Service Layer URL per customer, accepts it at setup time, and maintains a single reusable session across all requests by caching and monitoring the B1SESSION cookie. When the session expires after 30 minutes of inactivity, ml-connector logs in again before the next request, avoiding the 5-second cold-start penalty on every call.
Does the integration require SAP Business One webhooks to be enabled?
No. ml-connector polls SAP Business One using OData $filter with UpdateDate to fetch only records changed since the last run, making webhooks optional. If your SAP Business One instance does support webhooks, ml-connector can listen for them instead, but polling is the default and does not require SAP admin configuration.

Related integrations

Connect SAP Business One and Tableau

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started