SYSPRO and Microsoft Dynamics 365 Sales integration
SYSPRO runs manufacturing and distribution finance. Dynamics 365 Sales runs the sales pipeline. Connecting them syncs your customer master and sales orders between systems, so sales sees current credit status from SYSPRO, and SYSPRO invoices are tied to the original Dynamics 365 Sales orders. When a new customer is booked in SYSPRO, the sales team has an account in Dynamics 365 Sales to attach opportunities and leads. When Dynamics 365 Sales closes an order, it flows into SYSPRO with full traceability back to the original sales transaction.
What moves between them
Customer and invoice data flows from SYSPRO into Dynamics 365 Sales. SYSPRO customers are created or updated as Dynamics 365 Sales accounts, with invoice records becoming sales orders or invoice records in the CRM. Sales orders created in Dynamics 365 Sales can be read from SYSPRO to verify invoicing and credit status. Reference data such as product pricing and price lists is aligned so sales quotes reference SYSPRO products. The main flow is unidirectional read from SYSPRO and write to Dynamics 365 Sales, with read-back to SYSPRO used for verification and credit checking.
How ml-connector handles it
ml-connector polls SYSPRO's OData layer every 5 to 15 minutes to detect new or changed customers and invoices, filtering on timestamp fields like PostDate. For each customer, it authenticates to SYSPRO with the supplied session token and extracts the customer name, address, credit limit, and balance due. It then authenticates to Dynamics 365 Sales using OAuth 2.0 client credentials against Microsoft Entra ID, and creates or updates the corresponding account record. Invoice data is mapped from SYSPRO's ApInvoice and ApPosting tables into Dynamics 365 Sales sales order or invoice records, with the invoice amount partitioned into separate webhook deliveries if it exceeds the 256 KB payload limit. ml-connector refreshes the SYSPRO session token on expiry and refreshes the Dynamics 365 Sales OAuth token when it approaches 60-minute expiry. Both tokens are stored encrypted. On webhook delivery failure or 502/503/504 response from Dynamics 365 Sales, ml-connector retries the request and logs the full audit trail, so failed records can be replayed manually once the issue is resolved.
A real-world example
A mid-sized industrial distribution company runs SYSPRO for order fulfillment and accounting, and uses Dynamics 365 Sales to track customer opportunities and sales pipelines. The sales team manually looked up customer credit limits in SYSPRO's customer master every time they quoted a deal, and once an order shipped, the finance team had to manually key the invoice into Dynamics 365 Sales to tie it back to the original sales opportunity. With SYSPRO and Dynamics 365 Sales connected, each new customer added to SYSPRO appears in Dynamics 365 Sales the next polling cycle, and the sales team can see real-time credit exposure without leaving the CRM. Invoices are attached automatically to their originating sales orders, giving finance a complete audit trail and eliminating the manual re-entry step at billing time.
What you can do
- Sync SYSPRO customers into Dynamics 365 Sales accounts, including address, credit limit, and balance due.
- Map SYSPRO invoices to Dynamics 365 Sales sales orders or invoice records, partitioned to respect the 256 KB webhook payload limit.
- Poll SYSPRO's OData layer on a configurable schedule and refresh session tokens automatically on expiry.
- Authenticate SYSPRO with session tokens and Dynamics 365 Sales with OAuth 2.0 client credentials via Microsoft Entra ID.
- Deliver records to Dynamics 365 Sales via webhook, with retry on 502/503/504 errors and a full audit trail for replay.
Questions
- Which direction does data move between SYSPRO and Dynamics 365 Sales?
- The main flow is SYSPRO into Dynamics 365 Sales. Customer and invoice records are read from SYSPRO's OData layer and written to Dynamics 365 Sales accounts and sales orders via webhook. Dynamics 365 Sales orders can be read back to SYSPRO for credit checking and invoicing verification, but Dynamics 365 Sales does not modify SYSPRO records directly.
- How does SYSPRO's session token work with polling?
- SYSPRO requires login to the Utilities/Logon endpoint to obtain a session token tied to a UserId GUID, and that token must be passed on every subsequent OData query. ml-connector stores the token encrypted, refreshes it on expiry or logoff timeout, and polls the customer and invoice OData tables at regular intervals with filters on PostDate and InvoiceDate to detect changes.
- Does the 256 KB webhook payload limit affect how invoices are delivered to Dynamics 365 Sales?
- Yes. If an invoice payload exceeds 256 KB, ml-connector partitions it into multiple webhook deliveries, each staying under the limit. This ensures all invoice detail reaches Dynamics 365 Sales while respecting the Dataverse webhook size constraint. Each partition is tracked separately in the audit log.
Related integrations
More SYSPRO integrations
Other systems that connect to Microsoft Dynamics 365 Sales
Connect SYSPRO and Microsoft Dynamics 365 Sales
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started