ml-connector
Microsoft Dynamics GPSAP Concur

Microsoft Dynamics GP and SAP Concur integration

Microsoft Dynamics GP runs your on-premises financial ledger. SAP Concur manages corporate travel and expenses in the cloud. Connecting them keeps your GL automatically updated with spend from Concur, and eliminates manual re-entry of expense journals at month-end. Expense reports and invoices captured in Concur post directly into Microsoft Dynamics GP with the vendor and GL account already mapped, so your books are current without delays.

How Microsoft Dynamics GP works

Microsoft Dynamics GP exposes vendors, payables invoices, GL accounts, GL journal entries, and purchase orders through REST Service Based Architecture at a customer-specific on-premises URL (e.g., https://<server>:<port>/GPService/...) or SOAP Web Services, both requiring Windows Authentication via a domain account mapped to a GP User. The system does not support webhooks. Records are pulled through polling with ModifiedDate filters or status queries. Write operations are limited to unposted (Work) transactions in open fiscal periods; once posted, records are read-only. Multicurrency companies require CurrencyId and ExchangeRate on financial documents, and all POST/PATCH bodies must wrap data in a top-level Payload key.

How SAP Concur works

SAP Concur exposes expense reports, financial integration documents (expense, invoice, cashadvance), vendors, and employees through REST APIs accessible via OAuth2 with company-level client credentials and a refresh token. The service supports both push via Event Subscription Service webhooks and pull via REST list endpoints. Financial integration documents allow Concur to feed expense and invoice data directly into downstream ERP systems. Webhooks use mutual TLS (cert CN webhook.api.concursolutions.com) and retry on 5xx and 401 errors. API access is geolocation-aware; datacenter URLs are determined at token exchange time.

What moves between them

The main flow is SAP Concur to Microsoft Dynamics GP. Expense reports and financial integration documents from Concur are read on a schedule and posted as GL journal entries and payables invoices into Dynamics GP. Vendor reference data is synchronized to ensure invoices land on valid GL accounts and vendor codes. Purchase orders may also sync from Concur to Dynamics GP. The direction is primarily one-way downstream into the GL; GL changes in Dynamics GP do not flow back to Concur.

How ml-connector handles it

ml-connector stores Windows domain credentials encrypted and uses them to authenticate REST calls to the on-premises Dynamics GP endpoint with Windows Authentication (Negotiate or NTLM). On the Concur side, it exchanges OAuth2 credentials for an access token, using the geolocation returned in the token response to route all subsequent API calls to the correct regional datacenter. Because Microsoft Dynamics GP does not support webhooks, ml-connector polls Concur's financial integration documents on a schedule aligned with your expense-reporting cycle. Before posting journal entries, it validates that the target GL account exists and the fiscal period is open in Dynamics GP, and maps Concur vendor and amount fields to the GL account and cost center required by Dynamics GP. All journal entries are wrapped in the required Payload structure and posted to unposted Work transactions. If a fiscal period is closed or a GL account missing, ml-connector surfaces the validation error and does not attempt to force the post. Retries and a full audit trail are maintained on each record.

A real-world example

A mid-sized consulting firm runs Microsoft Dynamics GP on-premises for accounting and uses SAP Concur for travel and expense reporting. Project managers and consultants file expense reports in Concur throughout the month covering travel, meals, and project costs. Before the integration, the accounting team exported expense reports from Concur monthly and manually created journal entries in Dynamics GP, allocating costs to the correct projects and GL accounts. This process took 2-3 days at month-end and was error-prone. With the integration, each expense report and invoice posted to Concur automatically generates a GL journal entry in Microsoft Dynamics GP on a weekly schedule, pre-mapped to the project code and GL account. The accounting team runs a validation report to confirm all entries posted successfully, and month-end close starts with expenses already in the ledger.

What you can do

  • Post SAP Concur expense reports and financial integration documents as GL journal entries into Microsoft Dynamics GP on a scheduled cadence.
  • Map Concur vendor codes and amount fields to Dynamics GP GL accounts, departments, and cost centers.
  • Validate GL account existence and fiscal period status in Dynamics GP before posting, and surface validation errors without forcing invalid entries.
  • Authenticate Microsoft Dynamics GP with Windows domain credentials (Negotiate/NTLM) and SAP Concur with OAuth2 refresh tokens, handling geolocation-aware API routing.
  • Maintain a full audit trail and error log for every record synced, with the ability to replay failed entries once underlying issues are resolved.

Questions

Which direction does data move between Microsoft Dynamics GP and SAP Concur?
The main flow is SAP Concur to Microsoft Dynamics GP. Expense reports and financial integration documents flow from Concur into Dynamics GP as GL journal entries and payables invoices. Vendor reference data is synchronized in both directions so that Concur invoices land on valid GL accounts and vendor codes in Dynamics GP. GL entries created in Dynamics GP do not flow back to Concur.
Does Microsoft Dynamics GP's lack of webhooks require special handling?
Yes. Because Microsoft Dynamics GP does not support webhooks, ml-connector polls Concur's financial integration documents on a schedule you define (e.g., daily or weekly, aligned with your expense-reporting cycle). Dynamics GP records are read by polling ModifiedDate filters or status queries against the REST Service Based Architecture or SOAP endpoint. ml-connector manages the polling cadence and retries so you do not have to monitor both systems manually.
What happens if a GL account or fiscal period is not open in Dynamics GP?
ml-connector validates the target GL account and fiscal period status before attempting to post. If either validation fails, ml-connector surfaces the error in the audit log and does not post the entry, preventing invalid transactions in your ledger. Once you resolve the issue (e.g., opening the fiscal period or creating the missing GL account), you can replay the failed record from the audit trail.

Related integrations

Connect Microsoft Dynamics GP and SAP Concur

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

Get started