ml-connector
DeltekSalesforce

Deltek and Salesforce integration

Deltek Vantagepoint runs projects, accounting, and the firm database for a professional services business. Salesforce runs the sales pipeline, accounts, and contacts. Connecting the two keeps the front office and the back office working from the same client list. When an Opportunity is won in Salesforce, the matching project and client firm appear in Deltek without re-keying, and client firms and contacts maintained in Deltek stay current in Salesforce. ml-connector handles the different APIs and authentication on each side and moves the records on the schedule and triggers you set.

How Deltek works

Deltek Vantagepoint exposes Firms (clients and vendors), Contacts, Employees, Projects, Opportunities, and Activities as full-CRUD Hub APIs, plus AP invoices, AR invoices, journal entries, and payments through Accounting Transaction APIs. Everything is REST/JSON on a company-specific deltekfirst.com URL, so there is no shared hostname. Authentication is OAuth 2.0 password grant, which must be enabled in the instance, returning a bearer token that expires in one hour. Vantagepoint also offers workflow-driven outbound webhooks that POST on record save for hub objects, with no HMAC signature, so reads can be triggered by a workflow or pulled by page-based polling.

How Salesforce works

Salesforce exposes Accounts (vendor or customer by Type), Contacts, Opportunities, Orders, Leads, and Products through its REST API on the org's My Domain URL, with SOQL for filtered reads. Authentication is the OAuth 2.0 client credentials flow against that My Domain URL; it returns a bearer token that expires after the session timeout and issues no refresh token, so the connector requests a fresh token when one expires. Writes are idempotent through upsert on an External ID field. Salesforce pushes real-time create, update, and delete events over Change Data Capture on the Pub/Sub API, with events retained for 72 hours and replay by replayId.

What moves between them

Records move in both directions, split by which system owns them. Won Opportunities flow from Salesforce into Deltek Vantagepoint, creating or updating the matching Project and client Firm so delivery and accounting can begin. Client Firms and their Contacts flow from Deltek into Salesforce as Accounts and Contacts, keeping the CRM current with the firm of record. Salesforce Change Data Capture events on Accounts, Contacts, and Opportunities drive the work as changes happen, while Deltek hub records are read by a scheduled poll or a workflow webhook. Deltek accounting transactions such as AP invoices and journal entries are not pushed into Salesforce, since the CRM has no general ledger.

How ml-connector handles it

ml-connector stores both credential sets encrypted and runs two token flows: the Salesforce client credentials token against the org My Domain URL, refreshed when a call returns 401 because no refresh token is issued, and the Deltek password-grant bearer token against the company deltekfirst.com URL, refreshed before its one-hour expiry. It accepts the full Deltek server URL and database name per customer, since Deltek publishes no shared base address. Salesforce changes arrive over Change Data Capture on the Pub/Sub API and are tracked by replayId, with a SOQL poll as the backfill if the connector is offline beyond the 72-hour event retention. Deltek has no HMAC on its workflow webhooks, so those reads are confirmed against the API rather than trusted blind, and a page-based poll covers the rest. Writes into Salesforce use upsert on an External ID field carrying the Deltek key, and writes into Deltek check for an existing record by firm or project number first, because Deltek has no idempotency-key header. Firm types and account types are mapped so a Deltek client lands as the right kind of Salesforce Account. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A 150-person architecture and engineering firm runs Deltek Vantagepoint for projects, billing, and its client database, and Salesforce for the sales pipeline. Before the integration, when a pursuit was won the project accountant re-keyed the client and the new project from Salesforce into Deltek by hand, and the business development team had no view of which Salesforce accounts were already active clients in the ERP. With Deltek and Salesforce connected, a won Opportunity creates the project and client firm in Deltek automatically, and the firm of record from Deltek keeps Salesforce accounts and contacts accurate. The duplicate data entry is gone and both teams see the same clients.

What you can do

  • Create or update a Deltek Vantagepoint Project and client Firm when a Salesforce Opportunity is won.
  • Mirror Deltek client Firms and Contacts into Salesforce Accounts and Contacts so the CRM matches the firm of record.
  • React to Salesforce Account, Contact, and Opportunity changes over Change Data Capture as they happen.
  • Bridge the Salesforce client credentials token and the Deltek password-grant token, refreshing each before it expires.
  • Upsert by external ID into Salesforce and match by firm or project number in Deltek, so records are updated, not duplicated.

Questions

Which direction does data move between Deltek and Salesforce?
It moves both ways, split by ownership. Won Opportunities flow from Salesforce into Deltek as Projects and client Firms, while client Firms and Contacts flow from Deltek into Salesforce as Accounts and Contacts. Deltek accounting transactions such as AP invoices and journal entries are not sent to Salesforce, because the CRM has no general ledger to hold them.
Does this sync push Deltek invoices or payments into Salesforce?
No. Salesforce Sales Cloud has no standard invoice or payment object; those exist only in Revenue Cloud orgs. ml-connector focuses on the records both systems share, which are clients, contacts, opportunities, and projects, and leaves Deltek accounting in Deltek where the ledger lives.
How does the integration handle the two different logins and Salesforce events?
ml-connector runs both OAuth flows side by side: the Salesforce client credentials token against the org My Domain URL, and the Deltek password-grant token against the company deltekfirst.com URL, each refreshed before it expires. Salesforce changes arrive over Change Data Capture and are tracked by replayId, and a scheduled SOQL poll backfills anything missed if the connector is offline past the 72-hour event retention.

Related integrations

Connect Deltek and Salesforce

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

Get started