ml-connector
SYSPRODatabricks

SYSPRO and Databricks integration

SYSPRO runs manufacturing, procurement, and finance. Databricks runs analytics and reporting. Connecting the two lets you extract SYSPRO invoices, purchase orders, suppliers, and general ledger balances and load them into Databricks for financial analytics, audit trails, and real-time dashboards. ml-connector handles SYSPRO's polling-only model and Databricks's OAuth2 credentials, and maps SYSPRO's operational data into structured Databricks tables so your finance team can query and visualize without re-entering data.

How SYSPRO works

SYSPRO Adaptive ERP exposes suppliers, purchase orders, supplier invoices, customer invoices, GL accounts, GL balances, inventory masters, and warehouse data through two REST APIs: e.net Business Objects (read and write, XML or JSON, requires session token obtained by login) and OData (read-only GET, queryable with filter expressions and timestamps). Cloud and on-premise versions both require the customer to supply the instance URL and credentials. SYSPRO has no outbound webhook system, so data is read by polling on a schedule tied to your accounting calendar.

How Databricks works

Databricks is a cloud data intelligence platform that accepts structured data through REST APIs with workspace-level or account-level OAuth2 client credentials. Data is written into Unity Catalog tables via SQL API or metadata API calls, and the platform provides compute through clusters and SQL warehouses. Databricks has no native finance or ERP connectors and is read-mostly from a data ingestion perspective; the platform is designed for analytics and machine learning after data arrives, not for transactional updates. Webhooks are only supported for legacy MLflow model registry events, not for data or compute events.

What moves between them

The main data flow runs from SYSPRO into Databricks. ml-connector polls SYSPRO's OData endpoint on a schedule (recommended every 5-15 minutes for financial data) and reads new and updated invoices, purchase orders, supplier records, GL accounts, and GL balances, filtering by timestamp fields such as PostDate and InvoiceDate. Each batch is written into Databricks tables in the appropriate Unity Catalog schema, partitioned by company and date for easy analytics. Because both systems are pull-only from SYSPRO's perspective, ml-connector does not write back to SYSPRO.

How ml-connector handles it

ml-connector stores SYSPRO and Databricks credentials encrypted. For SYSPRO, it obtains and refreshes the session token by calling Utilities/Logon with the operator credentials, then polls OData endpoints with timestamp filters to capture changes. For Databricks, it authenticates with OAuth2 client credentials and obtains a bearer token valid for 3600 seconds, refreshing as needed. The two systems have very different data models: SYSPRO's operational and financial entities map into Databricks tables with denormalized columns for easy SQL querying. SYSPRO's SQL session timeout requires retry logic, and Databricks rate limiting is handled with exponential backoff. Every record carries a full audit trail and the exact SYSPRO timestamp it came from, so downstream reports always know the source.

A real-world example

A mid-sized discrete manufacturer runs SYSPRO for procurement, inventory, and accounting across three plants and uses Databricks for financial analytics and supply chain dashboards. Before the integration, the finance manager exported AP and GL reports from SYSPRO monthly as CSV files and loaded them into Databricks manually, then spent hours reconciling invoice counts and amount totals. With SYSPRO and Databricks connected, purchase orders and invoices flow into Databricks automatically every 15 minutes, GL balances are always current, and the finance dashboard shows real-time cash flow and vendor aging without manual extraction.

What you can do

  • Replicate SYSPRO suppliers, purchase orders, and AP invoices into Databricks for vendor and cash flow analytics.
  • Copy SYSPRO AR invoices and customer records into Databricks for revenue reporting and aged receivables analysis.
  • Sync SYSPRO general ledger accounts and balances into Databricks, refreshed on a schedule, for real-time GL reporting and variance analysis.
  • Poll SYSPRO on your schedule with timestamp filters to capture only new and changed records, reducing load on both systems.
  • Store encrypted credentials and manage OAuth2 and session token lifecycle so data flows without manual intervention.

Questions

How does ml-connector handle SYSPRO's lack of webhooks?
ml-connector polls SYSPRO's OData endpoint on a schedule tied to your accounting cycle, typically every 5-15 minutes for financial data. It uses timestamp filters on fields like PostDate and InvoiceDate to fetch only new and changed records, minimizing load and keeping Databricks current without relying on a push from SYSPRO.
Can ml-connector write data back to SYSPRO from Databricks?
No. SYSPRO's OData layer is read-only, and Databricks is not a transactional system. ml-connector moves data one direction only: from SYSPRO into Databricks for analytics and reporting. Updates to SYSPRO must be made through SYSPRO itself.
How are SYSPRO and Databricks credentials managed?
ml-connector stores both credential sets encrypted and handles token lifecycle automatically. For SYSPRO, it logs in to obtain a session token and refreshes it as needed. For Databricks, it exchanges client credentials for an OAuth2 bearer token every 3600 seconds. You provide the SYSPRO instance URL, operator code, and OData password, and the Databricks workspace URL and Service Principal credentials.

Related integrations

Connect SYSPRO and Databricks

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

Get started