Deltek and SFTP / Flat Files integration
Deltek runs project-based accounting and ERP. SFTP / Flat Files is the file-exchange transport that older systems and EDI trading partners use when they have no API. Connecting the two lets data that arrives as files become posted transactions in Deltek, and lets Deltek records leave as files a partner can pick up. ml-connector reads files from the SFTP inbound folder, maps each layout to the canonical model, and posts AP invoices, journal entries, and supplier records into Deltek Vantagepoint over its REST API. It also writes Deltek data back out as files on a schedule you control.
What moves between them
The inbound flow runs from the SFTP server into Deltek. ml-connector polls the inbound folder, parses each new file, and posts it into Deltek Vantagepoint: invoice files become AP invoices, GL files become journal entries, and vendor files become firm records, each mapped to valid Deltek GL accounts and organizations. The outbound flow runs from Deltek to the partner: ml-connector reads Deltek transactions over the REST API and writes them as files into the outbound folder in the agreed format. Both directions run on a schedule, typically every 5 to 60 minutes, since neither system pushes events.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For SFTP it authenticates with an SSH private key or a password and verifies the server host key on every connection, and for Deltek it requests an OAuth2 password-grant token and refreshes it when a call returns 401. A BullMQ repeatable job lists the inbound folder, filters out filenames already in its processed log, downloads each new file, and validates its format before mapping. Each file maps to a canonical entity, so a CSV or X12 810 invoice becomes a Vantagepoint AP invoice and a GL flat file becomes a journal entry. Because Deltek has no idempotency header, the connector checks for an existing record by invoice or journal number before posting, and on the SFTP side it deduplicates by filename and content hash so a re-poll never imports a file twice. Real edge cases are handled directly: partial uploads are caught by a sentinel file or a two-read size check, CRLF and Windows-1252 encodings are normalized, host-key changes are surfaced rather than silently accepted, and X12 files get a 997 acknowledgment written back to the acks folder. Failed posts retry with backoff and replay from a full audit trail.
A real-world example
A 250-person architecture and engineering firm runs Deltek Vantagepoint for project accounting. Its largest subconsultant and two facilities vendors have no API and send billing as CSV and X12 810 files to an SFTP folder every week. Before the integration, an accountant downloaded each file, opened it in a spreadsheet, and keyed every invoice into Vantagepoint by hand, which delayed approvals and caused duplicate entries when a vendor resent a file. With Deltek and SFTP / Flat Files connected, each new file is parsed and posted as a Vantagepoint AP invoice against the right project and GL account, duplicates are blocked by filename and invoice-number checks, and the accounting team reviews posted invoices instead of typing them.
What you can do
- Post invoice, journal, and vendor files from the SFTP inbound folder into Deltek Vantagepoint over its REST API.
- Write Deltek transactions back out as CSV or X12 files into the partner outbound folder on a schedule.
- Bridge SFTP key or password auth and Deltek OAuth2 password-grant tokens, refreshing tokens automatically.
- Deduplicate by filename and content hash, and check for existing Deltek records before posting to prevent duplicates.
- Detect partial uploads, normalize encodings and line endings, and write X12 997 acknowledgments back to the acks folder.
Questions
- Which direction does data move between Deltek and SFTP / Flat Files?
- Both directions. Inbound, ml-connector reads files from the SFTP server and posts them into Deltek as AP invoices, journal entries, or supplier records. Outbound, it reads Deltek transactions over the REST API and writes them as files in the partner folder. Each flow runs on its own schedule because neither system pushes events.
- How does the integration avoid importing the same file twice?
- SFTP has no idempotency at the protocol level, so ml-connector enforces it. It tracks a processed-file log keyed by filename, size, and content hash, and skips any file already handled. On the Deltek side it also queries by invoice or journal number before posting, since Vantagepoint has no idempotency header of its own.
- Why does the connector poll instead of receiving events?
- SFTP is a pull-only transport with no native push mechanism, and Deltek Vantagepoint cloud has no general webhook event bus for finance records. ml-connector therefore lists the inbound folder and reads Deltek on a fixed schedule, typically every 5 to 60 minutes. It moves handled files to the processed folder so each one is imported only once.
Related integrations
More Deltek integrations
Other systems that connect to SFTP / Flat Files
Connect Deltek and SFTP / Flat Files
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started