ml-connector
Microsoft Dynamics GPSAP Ariba

Microsoft Dynamics GP and SAP Ariba integration

Microsoft Dynamics GP runs payables, purchasing, and the general ledger on-premises. SAP Ariba runs sourcing, procurement, and supplier management in the cloud. Connecting the two means purchase orders and supplier invoices approved in Ariba turn into vendors, purchase orders, and payables vouchers in GP without re-keying. ml-connector reads from Ariba on a schedule and writes into GP through its SBA REST or SOAP interface, and it keeps the very different authentication models on each side working together.

How Microsoft Dynamics GP works

Microsoft Dynamics GP is on-premises only, with no SaaS edition and no cloud gateway, so the customer must expose their GP server. The preferred path on GP 2015 and later is the SBA REST API at a server-specific URL; SOAP Web Services is the fallback for older installs or objects SBA does not cover. Both authenticate with a Windows domain account mapped to a GP user, using Negotiate or Kerberos or NTLM; there are no OAuth tokens or API keys. GP exposes vendors, payables invoices, purchase orders, AP payments, GL accounts, and journal entries. It has no webhooks, so change detection relies on scheduled polling filtered by ModifiedDate where available.

How SAP Ariba works

SAP Ariba is a cloud procurement platform reached through the SAP Ariba Open APIs at openapi.ariba.com. Every call needs two credentials together: a short-lived OAuth2 bearer token from the client credentials flow and a static Application Key sent as the apiKey header, with the customer realm passed as a query parameter. Bulk procurement data comes from async reporting jobs: submit a job filtered by an updated-date window, poll for completion, then download paginated results capped at 50,000 records per call. Purchase orders and invoice headers are read-only over REST, while the Supplier Data API supports reads and limited writes such as registration and qualification status. Ariba has no general-purpose webhook, so polling is the standard pattern.

What moves between them

The main flow is from SAP Ariba into Microsoft Dynamics GP. ml-connector submits Ariba reporting jobs for purchase orders and runs the invoice header extract, then creates or updates the matching vendors, purchase orders, and unposted payables vouchers in GP. Vendor master data flows the other way: GP vendor records can be pushed to the Ariba Supplier Data API to update supplier and registration status. Both directions run on a schedule you set, since neither system pushes events.

How ml-connector handles it

ml-connector holds two credential sets. For Ariba it stores the client ID, client secret, Application Key, and realm, caches the OAuth token until shortly before its one-hour expiry, and refreshes it automatically, attaching the apiKey header and realm query parameter to every call. For GP it stores the SBA base URL or WSDL URL, company database name, Windows domain, username, and password, and presents Windows authentication on each request. Reads from Ariba follow the async job pattern: submit job, poll for completion, download paginated results, and store the last updated-date as a high-water mark, respecting the one-year window limit by chunking annual backfills and the analytical job rate limit of one per second. Writes into GP target unposted transactions only, since posted records are read-only, and SBA POST and PATCH bodies are wrapped in a Payload key. Ariba supplier IDs and ANIDs map to GP VendorId, and Ariba account codes on line items map to GP GL account segments. GP has no idempotency header, so the connector checks for an existing document before creating to avoid duplicate vouchers, and creation respects open fiscal periods and multicurrency fields. Failed records can be retried and every record is audited. The common gotcha is that the customer often has not opened their GP server through the firewall or installed SBA, so a local agent may be required.

A real-world example

A mid-sized manufacturer with about 600 employees runs sourcing and procurement in SAP Ariba but keeps its books in Microsoft Dynamics GP on a server in its own data center. Today an AP clerk re-keys every approved purchase order and supplier invoice from Ariba into GP by hand, which is slow and produces mismatched vendor records and posting errors. With this connection, approved purchase orders and invoice headers flow from Ariba into GP automatically as vendors, purchase orders, and payables vouchers, and GP vendor changes flow back to Ariba, so procurement and finance see the same suppliers and the month-end close stops waiting on manual entry.

What you can do

  • Pull approved purchase orders and supplier invoice headers from SAP Ariba and create matching purchase orders and payables vouchers in Microsoft Dynamics GP.
  • Create and update GP vendor records from Ariba supplier data, and push GP vendor master back to the Ariba Supplier Data API.
  • Bridge Ariba OAuth2 tokens and the apiKey header to GP Windows authentication, refreshing the token before it expires.
  • Map Ariba supplier IDs, ANIDs, and account codes to GP vendor IDs and GL account segments so documents land on valid accounts.
  • Poll both systems on the schedule you set, with high-water-mark cursors, duplicate checks, retries, and a full audit trail.

Questions

Which direction does data move between Microsoft Dynamics GP and SAP Ariba?
The main flow is from SAP Ariba into Microsoft Dynamics GP, creating vendors, purchase orders, and unposted payables vouchers from Ariba purchase orders and invoice headers. Vendor master data also flows from GP to the Ariba Supplier Data API, which accepts limited writes such as registration and qualification status. Ariba purchase orders and invoices are read-only over REST, so the connector does not write those documents back to Ariba.
How does ml-connector handle the different authentication on each side?
SAP Ariba uses OAuth2 client credentials plus a static Application Key in the apiKey header, with the realm as a query parameter, while Microsoft Dynamics GP uses a Windows domain account over Negotiate, Kerberos, or NTLM. ml-connector stores both credential sets encrypted, caches and refreshes the Ariba token before its one-hour expiry, and presents Windows credentials to GP on every call. Because GP is on-premises, the customer must expose their SBA or SOAP endpoint through the firewall or deploy a local agent.
How are records kept in sync without webhooks?
Neither system pushes events, so ml-connector polls on a schedule you set. It submits Ariba reporting jobs filtered by an updated-date window, polls for completion, downloads paginated results, and stores the last updated-date as a high-water mark, while polling GP by ModifiedDate where available. Writes into GP target unposted transactions and check for an existing document first, since GP has no idempotency key and posted records cannot be changed.

Related integrations

Connect Microsoft Dynamics GP and SAP Ariba

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

Get started