ml-connector
Infor CloudSuiteDatabricks

Infor CloudSuite and Databricks integration

Infor CloudSuite runs your finance and supply chain. Databricks powers your analytics. Connecting the two flows procurement and accounting records into Databricks on a schedule, so your data warehouse stays current with every new invoice, purchase order, and GL account change. Finance teams can analyze spending, track vendor performance, and reconcile GL balances without manual export-and-load cycles.

How Infor CloudSuite works

Infor CloudSuite exposes financial and procurement data through the ION API Gateway, a REST interface available on per-customer subdomains. It authenticates with OAuth 2.0 using service account credentials, with bearer token lifetimes configured per tenant (typically 1-24 hours). CloudSuite has no native webhooks for cloud connectors, so records are read by polling the list endpoints filtered by modified date. Key entities include suppliers, invoices, purchase orders, payments, GL accounts, and customers. Most operations require a company number (CONO) parameter for multi-company setups.

How Databricks works

Databricks is a data platform built on Apache Spark and Delta Lake. It authenticates with OAuth 2.0 Client Credentials at the workspace level and exposes SQL tables, catalogs, and schemas through REST APIs. Databricks has no webhooks for data writes or table updates, so ml-connector writes records as new rows in target tables and queries them back via SQL. All writes are idempotent by customer key (supplier ID, invoice number, GL account). Databricks tables live in Unity Catalog schemas you specify per flow.

What moves between them

The primary flow runs from CloudSuite into Databricks. Invoice headers and lines, purchase orders, supplier master records, and GL accounts move from CloudSuite to Databricks on a polling schedule (typically daily or per business cycle). Each record type lands in a separate Databricks table with CloudSuite-generated timestamps and keys. Historical records are kept for trending and reconciliation. Databricks tables are append-only with upsert logic keyed on CloudSuite entity IDs, so the warehouse is always current.

How ml-connector handles it

ml-connector stores CloudSuite and Databricks credentials encrypted. For CloudSuite, it parses the OAuth token endpoint from the tenant's .ionapi configuration file, obtains a bearer token on each run, and retries if the token expires mid-session. It polls CloudSuite list endpoints (APS100MI for invoices, PPS100MI for POs, CRS620MI for suppliers, CRS630MI for GL accounts) filtered by modified date, and extracts company number and other required parameters from customer-specific settings. For Databricks, it authenticates at the workspace level, resolves the target catalog and schema per flow, and appends or upserts records as JSON rows. Rate limits are respected: when CloudSuite returns HTTP 429, ml-connector backs off and retries. Every record carries audit metadata (source system, sync timestamp, record ID) so queries can filter to a specific payload or run.

A real-world example

A mid-market distributor runs Infor CloudSuite for purchasing, accounts payable, and general ledger across five warehouses and two regional offices. The finance team currently exports supplier invoices and GL transactions monthly to build a data mart in Excel, then joins it with external freight and tariff data in Pandas to analyze total cost of ownership by vendor and region. With CloudSuite and Databricks connected, invoice and GL records flow automatically every day. Finance can now write SQL directly against current data in Databricks, blend it with external sources, and publish live dashboards without re-exporting or waiting for month-end close.

What you can do

  • Move Infor CloudSuite invoices, POs, suppliers, and GL accounts to Databricks on a polling schedule you define.
  • Authenticate CloudSuite via OAuth and handle token refresh across multi-tenant ION deployments.
  • Upsert records in Databricks tables keyed on CloudSuite entity IDs so the warehouse is always current.
  • Respect CloudSuite rate limits and retry failed syncs with exponential backoff.
  • Audit every record with source system metadata, sync timestamp, and run ID for traceability.

Questions

How does ml-connector know when CloudSuite records change if there are no webhooks?
ml-connector polls CloudSuite list endpoints (APS100MI, PPS100MI, CRS620MI, CRS630MI) filtered by modified date. On each run, it reads records that changed since the last sync and writes them to Databricks. This approach requires no ION Desk configuration and works across all CloudSuite product lines.
Does the integration support multi-company CloudSuite setups?
Yes. ml-connector accepts a company number (CONO) per flow, so you can run separate syncs for each company in CloudSuite and land their records in separate Databricks tables or the same table with company number as a column. OAuth credentials are per-tenant, not per-company.
What happens if a CloudSuite token expires mid-sync?
ml-connector detects 401 responses, refreshes the bearer token using the OAuth endpoint from your .ionapi credentials, and retries the failed request. Token lifetime is configured per tenant (typically 1-24 hours), so proactive refresh is built in to avoid timeouts.

Related integrations

Connect Infor CloudSuite and Databricks

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

Get started