ml-connector
Oracle PeopleSoftAsana

Oracle PeopleSoft and Asana integration

Oracle PeopleSoft runs accounts payable, procurement, and the employee record. Asana runs the day-to-day work and approvals that sit around those numbers. This connection turns PeopleSoft AP invoices and requisitions into trackable Asana tasks so the people who own a review can act on them in the tool they already use. When an Asana approval task is completed, ml-connector feeds the result back through a PeopleSoft Component Interface. Because Asana has no invoice or GL objects of its own, financial detail rides along in Asana custom fields that map to PeopleSoft fields.

How Oracle PeopleSoft works

Oracle PeopleSoft is self-hosted, so there is no shared URL; the connector targets each customer's Integration Broker base URL, port, and node name such as PSFT_FS. Its delivered REST endpoints are read-only inquiry services, covering eSettlements invoice and payment status, eProcurement requisition status, the supplier portal, and the employee directory, authenticated with Basic Auth using an OPRID and password, or OAuth2 against an external identity provider on PeopleTools 8.58 and later. Creating vouchers, journals, or master data uses SOAP Component Interfaces such as AP_VOUCHER and JOURNAL_ENTRY_CI rather than REST. PeopleSoft has no conventional webhooks; outbound Integration Broker messages are XML, unsigned, and configured by an admin, so the practical pattern is scheduled polling of the inquiry endpoints with date-range filters.

How Asana works

Asana exposes projects, tasks, portfolios, users, teams, goals, and custom fields through its REST API at https://app.asana.com/api/1.0, authenticated with a Personal Access Token or an OAuth2 bearer token. It has no native invoice, purchase order, payment, or GL account objects, so financial metadata is carried in customer-defined custom fields that are resolved by GID, not by name. Responses return only gid, name, and resource_type unless opt_fields names the fields you want, and listing tasks always needs a project, assignee, section, or tag filter. Asana pushes change events by webhook, signed with HMAC-SHA256 keyed on the handshake secret, and silently deletes a webhook after 24 consecutive hours of failed delivery. Rate limits are per token, returning HTTP 429 with a Retry-After header.

What moves between them

The primary flow runs from Oracle PeopleSoft into Asana. ml-connector reads AP invoices and requisitions that need a review or approval through the PeopleSoft inquiry endpoints and creates or updates an Asana task for each, writing the invoice or requisition ID, business unit, vendor or requester, amount, due date, and status into Asana custom fields. When an Asana approval task is completed, the completion flows back so ml-connector records the decision against the matching PeopleSoft voucher or requisition through a Component Interface. Employee directory records can also sync into the Asana user-facing roster reference. Because PeopleSoft is effectively pull-only, the cadence is a scheduled poll on the PeopleSoft side, with Asana webhooks driving the return path as task changes occur.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the PeopleSoft side it accepts the customer's full base URL, port, and Integration Broker node name, since the platform is self-hosted and has no shared address, and it sends Basic Auth with the OPRID and password, or an OAuth2 bearer token where an identity provider is configured. The auth bridge matters because the two sides are unrelated: a per-customer PeopleSoft server behind a firewall on one side, an Asana workspace GID on the other, so the customer typically whitelists the connector egress range. Field mapping is the core of this pair. Because Asana has no finance objects, each PeopleSoft field maps to an Asana custom field resolved by GID, set up once per customer, and every Asana read passes opt_fields so the custom field values come back rather than sparse objects. PeopleSoft has no webhooks, so its inquiry endpoints are polled on a schedule with date-range filters to avoid saturating the Tuxedo queue, and writes back use the AP_VOUCHER or PO Component Interface, which rejects a duplicate by its natural key such as the voucher or requisition ID. On the Asana side ml-connector registers a webhook, echoes the X-Hook-Secret during the handshake, verifies the HMAC-SHA256 signature on every event, and re-checks and re-registers the webhook on a schedule because Asana deletes it after 24 hours of failed delivery. Neither API offers an idempotency key, so ml-connector tracks the stored Asana task GID and the PeopleSoft record key before creating, so a retry does not duplicate. Asana rate limits per token return 429 with Retry-After and PeopleSoft has no published limit, so both are throttled with backoff and exponential retry, and every record carries a full audit trail and can be replayed.

A real-world example

A regional health system with about 4,000 employees runs Oracle PeopleSoft Financials for accounts payable and eProcurement on its own servers, while department managers and clinical leads coordinate their work in Asana. Before the integration, accounts payable emailed lists of vouchers and requisitions waiting on a manager's sign-off, the managers approved them late or lost them in their inbox, and month-end close stalled while finance chased approvals one at a time. With Oracle PeopleSoft and Asana connected, each invoice or requisition that needs review becomes an Asana task assigned to the right manager with the business unit, vendor, amount, and due date in custom fields. The manager completes the task, the decision is recorded back in PeopleSoft automatically, and finance sees an approved queue instead of an email thread.

What you can do

  • Create and update Asana tasks from Oracle PeopleSoft AP invoices and requisitions that need review or approval.
  • Carry the PeopleSoft invoice or requisition ID, business unit, vendor, amount, and status in mapped Asana custom fields.
  • Record Asana task completion back to PeopleSoft against the matching voucher or requisition through a Component Interface.
  • Bridge PeopleSoft Basic Auth on the customer base URL and node with the Asana bearer token.
  • Poll PeopleSoft on a schedule with date-range filters, verify Asana HMAC-SHA256 webhooks, and re-register dropped webhooks.

Questions

Can Asana hold the invoices and GL accounts from Oracle PeopleSoft?
Not as native objects. Asana has no invoice, purchase order, or GL account entities, so ml-connector carries that financial detail in Asana custom fields that map to the PeopleSoft fields. The fields are set up once per customer and resolved by their Asana GID, since field names can be renamed.
Which direction does data move between Oracle PeopleSoft and Asana?
The primary flow is PeopleSoft into Asana, creating tasks for AP invoices and requisitions that need a review. Asana task completion then flows back so ml-connector records the decision against the matching PeopleSoft voucher or requisition through a Component Interface. Employee directory records can also sync into the Asana roster reference.
How are events handled when PeopleSoft has no webhooks?
PeopleSoft has no conventional webhooks, and its outbound Integration Broker messages are XML and unsigned, so ml-connector treats it as pull-only and polls the read-only inquiry endpoints on a schedule with date-range filters. The Asana side does push events, signed with HMAC-SHA256 and verified on every delivery, and because Asana deletes a webhook after 24 hours of failed delivery, ml-connector re-checks and re-registers it on a schedule.

Related integrations

Connect Oracle PeopleSoft and Asana

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

Get started