Deltek and Asana integration
Deltek runs project accounting, billing, and AP. Asana runs the day-to-day work and approvals that sit around those numbers. This connection turns Deltek projects and AP invoices into trackable Asana tasks so the people who own a review can see and act on them in the tool they already use. When an Asana approval task is completed, ml-connector writes the result back to the matching Deltek record. Because Asana has no invoice or GL objects of its own, financial detail rides along in Asana custom fields that map to Deltek fields.
What moves between them
The primary flow runs from Deltek into Asana. ml-connector reads Deltek projects and AP invoices that need a review or approval and creates or updates an Asana task for each, writing the project number, vendor firm, invoice amount, due date, GL account, and approval status into Asana custom fields. When an Asana approval task is completed, the completion flows back so ml-connector sets the matching Deltek AP invoice or project record to approved. New hires and terminations in Deltek employees can also sync into the Asana user-facing roster reference. The cadence is event-driven where Deltek workflow webhooks and Asana webhooks fire, with a scheduled poll as the backstop.
How ml-connector handles it
ml-connector stores both credential sets encrypted. It mints a Deltek OAuth2 password-grant token against the tenant URL and refreshes it when a call returns 401, and it sends the Asana token as a bearer header. The auth bridge matters because the two sides are unrelated: a per-customer Deltek server URL and database on one side, an Asana workspace GID on the other. Field mapping is the core of this pair. Because Asana has no finance objects, each Deltek field maps to an Asana custom field resolved by GID, set up once per customer, and every read passes opt_fields so the custom field values come back rather than sparse objects. On the Asana side ml-connector registers a webhook, echoes the X-Hook-Secret during the handshake, and verifies the HMAC-SHA256 signature on every event, and because Asana deletes a webhook after 24 hours of failed delivery it re-checks and re-registers the webhook on a schedule. Deltek webhooks are unsigned, so they are treated only as a trigger to pull, then the real record is read back over REST and the change is confirmed. Since neither API offers an idempotency key, ml-connector checks for the existing Deltek record and the stored Asana task GID before creating, so a retry does not duplicate. Asana rate limits per token return 429 with Retry-After, and Deltek has no published limit, so both are throttled with backoff and every record carries a full audit trail and can be replayed.
A real-world example
A 200-person architecture and engineering firm runs Deltek Vantagepoint for project accounting and vendor billing, while project managers and reviewers live in Asana day to day. Before the integration, accounting emailed spreadsheets of AP invoices waiting on a project 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 by one. With Deltek and Asana connected, each invoice that needs review becomes an Asana task assigned to the right manager with the vendor, amount, project, and due date in custom fields. The manager completes the task, the approval lands back in Deltek automatically, and finance sees an approved queue instead of an email thread.
What you can do
- Create and update Asana tasks from Deltek projects and AP invoices that need review or approval.
- Carry Deltek project number, vendor, amount, due date, and approval status in mapped Asana custom fields.
- Write Asana task completion back to Deltek to mark the matching AP invoice or project record approved.
- Bridge Deltek OAuth2 password-grant tokens and the Asana bearer token, refreshing each as needed.
- Verify Asana HMAC-SHA256 webhooks, re-register dropped webhooks, and back up every push with scheduled polling.
Questions
- Can Asana hold the invoices and GL accounts from Deltek?
- 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 Deltek 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 Deltek and Asana?
- The primary flow is Deltek into Asana, creating tasks for projects and AP invoices that need a review. Asana task completion then flows back so ml-connector marks the matching Deltek record approved. Employee changes in Deltek can also sync into the Asana roster reference.
- How are webhooks handled given Deltek does not sign them?
- Deltek workflow webhooks carry no HMAC signature, so ml-connector treats a Deltek webhook only as a trigger to pull and re-reads the real record over the REST API to confirm the change. Asana webhooks are signed with HMAC-SHA256 and verified on every event, 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
More Deltek integrations
Other systems that connect to Asana
Connect Deltek and Asana
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started