ml-connector
Oracle PeopleSoftSAP Concur

Oracle PeopleSoft and SAP Concur integration

Oracle PeopleSoft runs your enterprise finance, procurement, and HR. SAP Concur manages employee expenses, travel, and invoices. Connecting the two keeps invoices and purchase orders aligned without manual re-keying. Expense reports and invoices submitted in Concur flow into PeopleSoft as purchase orders or journal entries, mapped to the correct cost centers and GL accounts. Vendors created or updated in Concur sync to your PeopleSoft vendor master, keeping procurement and accounts payable in lockstep.

How Oracle PeopleSoft works

Oracle PeopleSoft is a self-hosted ERP and HCM platform deployed on customer servers or Oracle Cloud Infrastructure via PeopleSoft Cloud Manager. Each customer operates a unique instance with its own hostname, port, and node name. PeopleSoft exposes vendors, purchase orders, invoices, GL accounts, cost centers, employees, and job data through REST (JSON) via RESTListeningConnector and SOAP (XML) via PeopleToolsServiceListeningConnector. Authentication uses HTTP Basic Auth (OPRID and password) or OAuth2 Bearer token for PeopleTools 8.58+. The platform has no public webhook system; instead, Integration Broker Asynchronous Publish/Subscribe can push XML messages to external endpoints when business events occur after customer configuration. Read-only inquiry operations are the primary REST surface; writes require SOAP Component Interface calls. PeopleSoft admins must explicitly activate each service operation in the Integration Broker console. No standardized pagination exists across endpoints, so large result sets must be filtered by date range. There are no published API rate limits; capacity depends on customer hardware and Tuxedo queue configuration. Most installations sit behind corporate firewalls and require whitelisting or reverse proxy exposure. Asynchronous messages arrive in PeopleSoft rowset XML format requiring custom parsing. Error responses are HTTP 4xx/5xx with cryptic PeopleSoft-specific bodies.

How SAP Concur works

SAP Concur is a cloud-based platform for travel, expense, and invoice management with a REST JSON API. The service is multi-datacenter with geolocation-specific base URLs (us.api.concursolutions.com, emea.api.concursolutions.com, cn.api.concursolutions.com) determined by the OAuth token response. Concur exposes vendors, invoices (Payment Requests), purchase orders, purchase requests, expense reports, financial integration documents, and employees via v3.0 and v4 endpoints. Authentication uses OAuth 2.0 with password grant and credtype=authtoken, requiring client_id, client_secret, company_id (UUID), and a 24-hour bootstrap auth_token from App Center. Access tokens live 1 hour and refresh tokens 6 months. Concur supports webhooks through the Event Subscription Service (ESS) with topics for expense reports, invoices, travel requests, and user provisioning, delivering at-least-once with retry on 5xx, 401, 403, 429, or I/O errors. Each app is limited to 5 active subscriptions. Mutual TLS is required with cert CN webhook.api.concursolutions.com (issuer SAP SE). No polling surface is documented. Constraints include geolocation routing per token response, no batch operations on purchase orders, no deletion of purchase orders (closed via PUT), no PATCH/PUT/DELETE on Purchase Requests v4, and max field lengths on businessPurpose (64 chars) and Financial Integration systemId (50 chars).

What moves between them

Expense reports and invoices submitted in SAP Concur flow into PeopleSoft via the Event Subscription Service webhook. ml-connector receives these events, maps Concur vendors to PeopleSoft vendor master, allocates Concur cost center and project data to matching PeopleSoft GL accounts and cost centers, and creates requisitions or posts journal entries in PeopleSoft. Expense reports sync as purchase orders or GL postings depending on approval chain; invoices sync as AP vouchers or financial integration documents. Reference data such as vendors and cost centers are mapped bidirectionally so Concur expense codes align with PeopleSoft dimensions. PeopleSoft changes to vendors and cost centers can be read via polling and synced back to Concur for employee visibility, but the primary flow is Concur to PeopleSoft.

How ml-connector handles it

ml-connector receives Concur webhook events over HTTPS and verifies the mutual TLS certificate (CN webhook.api.concursolutions.com). It refreshes the Concur OAuth access token before expiry and uses geolocation from the token response for all subsequent API calls, never hardcoding datacenter URLs. On the PeopleSoft side, ml-connector stores the customer's unique hostname, port, node name, OPRID, and password encrypted, and uses either HTTP Basic Auth or OAuth2 Bearer token depending on the customer's PeopleTools version. When an expense report or invoice arrives from Concur, ml-connector queries PeopleSoft's vendor and cost center master data to map the records, then posts the journal entry or creates a purchase order via SOAP Component Interface calls (the write surface). Because PeopleSoft is read-mostly via REST polling for reference data and write-only via SOAP, ml-connector synchronizes vendors and dimensions on a configurable schedule and applies Concur events in real time. No idempotency keys exist at the PeopleSoft REST level, so ml-connector tracks processed Concur event IDs to avoid duplicate posts. Retry logic handles PeopleSoft's hardware-dependent capacity limits and Concur's rate limits (HTTP 429). Every record carries a full audit trail mapping the Concur event through the PeopleSoft posting with cost center and GL account allocation. If a downstream SOAP write fails, the event is queued for replay.

A real-world example

A professional services firm runs Oracle PeopleSoft for accounting and project costing on-premise, with SAP Concur as the employee expense and travel platform. Consultants submit expense reports and vendor invoices via Concur throughout the month. Before the integration, accounts payable staff exported Concur reports to CSV, manually coded them to PeopleSoft project and cost center dimensions, and entered them as journal entries or purchase orders before month-end close. Reconciliation between Concur expense codes and PeopleSoft cost centers was manual and error-prone, with duplicate entries and missing allocations discovered during close. With PeopleSoft and Concur connected, each approved expense report and invoice posts into PeopleSoft automatically, coded to the correct project and cost center, and the AP team's manual entry work is eliminated. Close cycles are weeks faster, and the project profitability numbers in PeopleSoft match the Concur spend with confidence.

What you can do

  • Receive expense reports and invoices from SAP Concur via webhook and post them into PeopleSoft as GL entries or purchase orders with automatic cost center allocation.
  • Map SAP Concur vendors to PeopleSoft vendor master and keep both systems synchronized as vendors are created or updated.
  • Authenticate PeopleSoft via HTTP Basic Auth or OAuth2 Bearer token depending on PeopleTools version, and SAP Concur via OAuth2 with geolocation-aware API routing.
  • Poll PeopleSoft for cost center and GL account reference data on a schedule so Concur expense codes land on valid dimensions without re-keying.
  • Track processed Concur events to avoid duplicate postings, with full audit trail and replay capability when downstream writes fail.

Questions

Which direction does data flow between PeopleSoft and SAP Concur?
The primary flow is SAP Concur into PeopleSoft. Expense reports and invoices from Concur are posted as GL entries or purchase orders in PeopleSoft, mapped to the correct cost centers and vendors. Reference data such as vendors and cost centers can sync bidirectionally so PeopleSoft remains the system of record for dimensions while Concur employees see up-to-date coding options. PeopleSoft GL entries are read-only in Concur, so ml-connector does not write financial entries back to Concur.
How does ml-connector handle PeopleSoft's self-hosted architecture and unique hostname?
ml-connector stores the customer's PeopleSoft hostname, port, node name, and credentials encrypted per instance. Because each PeopleSoft installation is unique and sits behind a firewall, the customer must whitelist ml-connector's IP address or expose PeopleSoft via a reverse proxy. For OAuth2-enabled PeopleTools 8.58+, ml-connector uses the Bearer token. For older versions, it uses HTTP Basic Auth. Service operations must be activated in the Integration Broker console by the PeopleSoft admin before ml-connector can call them.
What happens if an expense report or invoice fails to post in PeopleSoft?
ml-connector queues the event for replay and tracks the processed Concur event ID to prevent duplicate entries. The audit trail shows the original event, the mapping to PeopleSoft cost center and GL account, and why the post failed. Retries handle transient failures such as PeopleSoft hardware capacity limits or Concur rate limiting (HTTP 429). If a permanent failure occurs, the audit log surfaces the issue for your team to investigate and replay the record once the root cause is fixed.

Related integrations

Connect Oracle PeopleSoft and SAP Concur

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

Get started