Sage 100 and Databricks integration
Sage 100 holds your transactional finance data on-premises. Databricks provides the cloud analytics engine. Connecting them lets you build a single source of truth for financial reporting and analysis without duplicating data across systems. GL journal entries, AP invoices, and purchase orders flow from Sage 100 into Databricks tables on your chosen schedule, keeping your data warehouse current and your finance team aligned.
What moves between them
GL journal entries, AP invoices, purchase orders, vendors, and GL accounts flow from Sage 100 into Databricks on a schedule you define - typically GL entries daily, AP invoices every 15 minutes, and POs every 15 minutes. The flow is unidirectional from Sage 100 into Databricks. Each record carries the Sage company code, GL account segment values, and invoice or PO line detail, normalized into Databricks Delta tables for downstream SQL and Spark consumption.
How ml-connector handles it
ml-connector accepts your Sage 100 SOAP endpoint URL and BOI agent credentials (API key or mTLS certificate), and your Databricks workspace URL, account ID, and Service Principal credentials. It polls Sage 100 on your chosen cadence by querying DateLastUpdated to fetch only new or changed records, wraps multi-segment GL accounts into a normalized format, and writes each batch to Databricks tables via REST JSON. It refreshes the Databricks OAuth token every 3600 seconds and implements exponential backoff on COM record-lock conflicts in Sage 100. Because Sage 100 is on-premises and has no webhooks, polling cadence and time-of-day are under your control to avoid peak transaction windows. The Sage company code is preserved in each record so multi-company deployments can filter correctly downstream. Every record carries a full audit trail, including the sync timestamp and the original Sage transaction date.
A real-world example
A regional accounting firm manages three mid-sized manufacturing clients, each running Sage 100 on-premises. The finance director needs to compare GL trends across all three clients in a single dashboard without building separate exports and loading them into a spreadsheet. With Sage 100 and Databricks connected, each client's GL entries, AP invoices, and purchase orders sync automatically on a nightly schedule into a unified Databricks workspace. The director queries all three companies' data in a single SQL statement, builds rolling reconciliation dashboards that flag out-of-balance GL classes, and reduces the month-end close process by two days because manual GL verification is automated.
What you can do
- Sync GL journal entries from Sage 100 into Databricks tables daily, normalized by account segment for analysis across cost centers and GL classes.
- Pull AP invoices and POs from Sage 100 every 15 minutes and write them into Databricks for real-time spend tracking and vendor performance reporting.
- Preserve the Sage 100 company code on every record so multi-company deployments can filter and reconcile across entities.
- Authenticate with Sage 100 via SOAP and BOI agent credentials, and handle Databricks OAuth2 token refresh every 3600 seconds.
- Poll on your defined cadence with exponential backoff on record-lock conflicts, maintaining a complete audit trail for every sync.
Questions
- How does ml-connector handle Sage 100's on-premises architecture and lack of webhooks?
- ml-connector accepts your SOAP endpoint URL and BOI agent credentials, then polls Sage 100 on your chosen schedule using DateLastUpdated and DateCreated fields. Because Sage 100 has no webhooks or push events, polling cadence and time-of-day are under your control to avoid peak transaction windows. You choose how frequently each entity (GL entries, AP invoices, POs) syncs.
- What happens when Sage 100's COM layer locks a record due to concurrent writes?
- ml-connector implements exponential backoff and retries when a Sage 100 COM call fails due to record-locking. The retry logic is automatic, so transient locks do not cause the sync to fail. Every retry is logged in the audit trail.
- How does ml-connector handle Databricks token expiry and the multi-segment GL account format from Sage 100?
- ml-connector refreshes the Databricks OAuth2 bearer token every 3600 seconds automatically. For Sage 100's variable multi-segment GL account format, ml-connector normalizes each segment into a consistent structure in Databricks so downstream queries can filter by account, cost center, or class without parsing. The original Sage account string is preserved for audit.
Related integrations
More Sage 100 integrations
Other systems that connect to Databricks
Connect Sage 100 and Databricks
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started