ml-connector
Infor CloudSuiteSFTP / Flat Files

Infor CloudSuite and SFTP / Flat Files integration

Infor CloudSuite powers procurement and finance across the ION platform. SFTP / Flat Files reaches legacy systems, EDI trading partners, and warehouse operators that speak only file transport. Connecting the two lets invoices, purchase orders, and GL transactions flow in both directions without manual file handling or format conversion. Vendor master data syncs to ensure matching GL dimensions. ml-connector manages the OAuth handshake, transforms records to and from flat files, and keeps everything audited and retriable.

How Infor CloudSuite works

Infor CloudSuite (M3, SyteLine, LN, FSM) exposes suppliers, purchase orders, invoices, GL accounts, payments, and customers through the ION API Gateway. Authentication uses OAuth 2.0 Resource Owner Password Credentials with service account credentials and app client ID/secret; the token endpoint and base URL are extracted from the tenant's .ionapi credentials file. CloudSuite publishes no traditional webhooks. Instead, ION Desk document flows support push via BOD/XML subscription for events like Sync.SupplierInvoice and Sync.PurchaseOrder, but these require admin configuration in ION Desk for each flow. The default approach is REST polling of list operations filtered by modified date or status. Pagination and operation signatures vary by product line: M3 uses cursor-based filtering, SyteLine uses RecordCap/Bookmark, and operations require the company number (CONO) parameter. Rate limits are infrastructure-level at 100-500 requests per minute per client.

How SFTP / Flat Files works

SFTP / Flat Files is a file-transfer pattern using SSH File Transfer Protocol over TCP port 22. No shared base URL exists; each trading partner or file endpoint provides a unique host. Authentication uses SSH keys (recommended, with public key in authorized_keys) or username/password over the encrypted SSH channel, with optional host key verification and two-factor support. Files are organized in standard folders: inbound/ for arriving files, outbound/ for files to send, processed/ and error/ for disposition, and acks/ for EDI acknowledgments. Common file formats include X12 (810 invoices, 850 purchase orders, 820 payments), EDIFACT (INVOIC, ORDERS), CSV, XML, and fixed-width. SFTP has no push or webhook capability; polling is the only transport mechanism. X12 or EDIFACT acknowledgment files (997 or CONTRL respectively) must be generated and placed in the acks/ folder after processing inbound files.

What moves between them

The primary flow is CloudSuite to SFTP. When a vendor invoice or PO is created or updated in CloudSuite, ml-connector polls the ION API on schedule, extracts the records, transforms them to X12 810 (invoice) or 850 (PO) EDI format or CSV, and deposits the files in the SFTP outbound/ folder. The reverse flow is SFTP to CloudSuite. ml-connector polls SFTP for inbound payment and GL files (X12 820, BAI2, or fixed-width), maps them to CloudSuite GL accounts and cost centers, and posts them via ION API. Vendor master data from CloudSuite syncs to SFTP on an initial load, then on change. Polling frequency is configurable from 5 to 60 minutes. EDI acknowledgments are generated after inbound files and placed in the acks/ folder.

How ml-connector handles it

ml-connector stores the Infor CloudSuite .ionapi file securely, extracts the OAuth token endpoint and base URL, and refreshes the bearer token proactively before expiry (token lifetime varies from 1 to 24 hours per tenant). It polls CloudSuite's ION API using cursor-based filtering on M3 operations or recordCap/Bookmark on SyteLine, respecting the CONO parameter for multi-company environments. For SFTP, ml-connector presents the SSH private key at authentication, verifies the host key to prevent MITM, and polls the inbound/ folder on schedule. Outbound records (invoices, POs) are transformed to EDI X12 format with proper interchange envelopes, or CSV if configured. Inbound files (payments, GL entries) are parsed, validated against the CloudSuite GL account master, and posted through ION BOD subscription or direct API calls. Since CloudSuite Add operations have no native idempotency keys, ml-connector implements external dedup tracking by reading first (query-then-insert pattern) to prevent duplicate vendors or GL lines. SFTP file naming conventions are captured in config, and processed files are moved to the processed/ folder. Retries respect the CloudSuite infrastructure rate limits (429 backoff) and SFTP connection timeouts. Every record carries a full audit trail with source, transformed payload, and disposition.

A real-world example

A mid-sized food distributor runs Infor CloudSuite M3 for procurement and GL, and operates three regional warehouses with legacy order-entry systems and trading partners connected only via SFTP/EDI. Before the integration, the procurement team received vendor invoices in CloudSuite, manually converted them to X12 810 EDI, and dropped them on partner SFTP servers. Inbound payments and adjustments arrived as flat files on SFTP; the team parsed them by hand and re-entered GL lines into CloudSuite's chart of accounts by cost center. Month-end close required cross-checking the SFTP acks/ folder for missing 997 acknowledgments. With Infor CloudSuite and SFTP / Flat Files connected, vendor invoices transform and post to partner SFTP servers automatically on a schedule, EDI acknowledgments are validated and tracked, and inbound GL files from warehouses map back to CloudSuite dimensions and post without re-keying. The GL reconciliation is instant and the acks/ folder is audited in real time.

What you can do

  • Extract vendor invoices and purchase orders from Infor CloudSuite, transform them to X12 EDI or CSV format, and deposit them on SFTP servers on a schedule.
  • Receive and parse X12 820 payment files from SFTP, map them to CloudSuite GL accounts and cost centers, and post the GL lines through the ION API.
  • Keep vendor master data from CloudSuite synchronized to SFTP CSV files, with multi-company (CONO) filtering and change-driven updates.
  • Handle Infor CloudSuite OAuth 2.0 token lifecycle from the .ionapi credentials file, with proactive refresh and rate-limit backoff, plus SFTP key management and host key verification.
  • Generate X12 997 or EDIFACT CONTRL acknowledgment files after processing inbound EDI, with full audit logging on every record move and transformation.

Questions

Can ml-connector use BOD/XML push from ION Desk instead of polling the REST API?
Yes, if your Infor CloudSuite admin has configured ION Desk document flows (e.g., Sync.SupplierInvoice, Sync.PurchaseOrder). However, these flows require manual admin setup for each event type in ION Desk and are not programmable via API. The default approach is REST polling filtered by modified date, which works with zero admin overhead on the CloudSuite side.
What do I need to set up SFTP authentication with ml-connector?
ml-connector supports SSH key-based auth (preferred) or username/password. For key-based auth, generate an SSH key pair, provide the private key to ml-connector (stored encrypted), and add your public key to the SFTP server's authorized_keys file. Host key verification is enabled by default to prevent man-in-the-middle attacks. Two-factor auth (key plus password or OTP) is also supported.
How does ml-connector handle duplicate vendor invoices or GL lines?
Infor CloudSuite's ION API Add operations are not idempotent by default. ml-connector implements query-first deduplication: before posting a vendor invoice or GL line, it reads the existing records with matching supplier and invoice number (or GL batch/sequence), and only inserts if not present. This prevents CloudSuite from growing duplicate GL accounts or supplier records when a file is reprocessed or a flow is replayed.

Related integrations

Connect Infor CloudSuite and SFTP / Flat Files

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

Get started