High-performance, pure Java implementation of the ODETTE File Transfer Protocol 2.0 (OFTP2) over TLS. Engineered for seamless EDI integration, robust persistent queues, zero listener overhead, and optimized for Java 21 or higher.
# 1. Interrogate target OFTP2 partner capabilities
./oftp2 info
--host oftp2.partner.com
--port 6619 \
--client-id O0013CLIENT001
--auth both
--> TLS Handshake established on port 6619 (TLS_AES_256_GCM_SHA384)
--> Remote Odette ID: O0013SERVER001 | Level: OFTP 2.0 (RFC 5024)
--> Capabilities: Send/Receive | Buffer: 2048 | ZLIB Compression: YES
[SUCCESS] Peer interrogation complete. Ready for file transfers.
# 2. Transmit EDI file with in-session EERP receipt wait
./oftp2 put
--host oftp2.partner.com
--file ./desadv.edi
--dsn DESADV001 \
--ack-timeout 30
--queue-dir ./.oftp2-queue
[PUT] File delivered. Received verified EERP receipt in-session.
Built strictly to RFC 5024 specifications, Polonum OFTP2 provides robust enterprise-grade communication for automotive, logistics, and manufacturing EDI networks.
End-to-end transport layer security over default OFTP2 TLS port 6619 with optional mutual client authentication.
--ca-cert, --cert, --key)--insecure)info)Probe target OFTP2 servers to discover capabilities, supported cipher suites, buffer sizes, and server Odette IDs.
SSIDSDEB) & credit window (SSIDCRED)SSIDCMPR) & restart support (SSIDREST)SSIDAUTH)Choose between lightweight password validation, high-security cryptographic challenge-response, or both.
password: Simple OFTP password check (SSIDPSWD)challenge: 20-byte RSA challenge-response (AUCH / AURP / SECD)both: Full multi-factor password & RSA challengenone: Zero-friction transport relying on TLS / mTLSput)Zero listening service required! Transmits files and guarantees acknowledgment delivery even over unstable networks.
'U') with subrecord framingEERP / NERP receipts<queue>/outbound/*.pending if peer delays receipt.oftp NamingBatch retrieval of all pending files from the server with automated virtual dataset parsing.
<dataset>.<date>.<time>.oftp (RFC standardized)<queue>/inbound/*.receivedeerp / nerp)Complete RFC 5024 acknowledgment flow with cryptographic non-repudiation.
eerp <file.oftp> or --all)nerp --reason <code>)SFIDSIGN)RTR acknowledgmentNo complex background server daemon required. Integrate directly with your existing EDI translator (OpenText, Sterling, Seeburger, custom scripts) via simple CLI invocations or Java API.
Generates EDIFACT, ANSI X12, or VDA payloads
Runs oftp2 put with TLS & persistent queue
OFTP2 Server receives data & issues EERP receipt
Receives .oftp files & triggers EDI ingestion
Everything you need to automate file exchanges via bash scripts, cron jobs, Airflow, Jenkins, or programmatic Java code.
./oftp2 info \ --host oftp2.tradingpartner.com \ --port 6619 \ --client-id O0013MYCLIENT \ --auth both \ --password SECRET \ --ca-cert /path/to/server-ca.pem \ --cert /path/to/client-cert.pem \ --key /path/to/client-key.pem
# Transmits file and waits up to 30s in-session for EERP. Persists in outbound queue if delayed. ./oftp2 put \ --host oftp2.tradingpartner.com \ --port 6619 \ --client-id O0013MYCLIENT \ --auth both \ --password SECRET \ --ca-cert /path/to/server-ca.pem \ --cert /path/to/client-cert.pem \ --key /path/to/client-key.pem \ --file ./desadv_20261109.edi \ --dsn DESADV001 \ --ack-timeout 30 \ --queue-dir ./.oftp2-queue
# Receives pending inbound files into --output-dir and syncs outbound pending receipts ./oftp2 get \ --host oftp2.tradingpartner.com \ --port 6619 \ --client-id O0013MYCLIENT \ --auth both \ --password SECRET \ --ca-cert /path/to/server-ca.pem \ --cert /path/to/client-cert.pem \ --key /path/to/client-key.pem \ --output-dir ./inbox \ --queue-dir ./.oftp2-queue
# Positively acknowledge a processed received file (signs receipt with CMS if requested) ./oftp2 eerp ORDERS001.20261109.2200000001.oftp \ --host oftp2.tradingpartner.com \ --port 6619 \ --client-id O0013MYCLIENT \ --auth both \ --password SECRET \ --ca-cert /path/to/server-ca.pem \ --cert /path/to/client-cert.pem \ --key /path/to/client-key.pem \ --queue-dir ./.oftp2-queue # Or acknowledge ALL processed files in the inbound queue: ./oftp2 eerp --all --host oftp2.tradingpartner.com --client-id O0013MYCLIENT
# Negatively acknowledge a file rejected by your EDI translator ./oftp2 nerp INVOIC002.20261109.2200000002.oftp \ --reason 21 \ --reason-text "File validation failed in EDI translator: Invalid segment NAD" \ --host oftp2.tradingpartner.com \ --port 6619 \ --client-id O0013MYCLIENT \ --auth both \ --password SECRET \ --queue-dir ./.oftp2-queue
# Inspect local persistent queues for pending outbound files and unacknowledged inbound files ./oftp2 queue --queue-dir ./.oftp2-queue
// Embed directly into your Java 21+ Spring Boot, Quarkus, or microservice
import com.oftp2.client.Oftp2Client;
import com.oftp2.model.*;
Oftp2Client client = new Oftp2Client.Builder()
.host("oftp2.tradingpartner.com")
.port(6619)
.clientId("O0013MYCLIENT")
.authMode(AuthMode.BOTH)
.password("SECRET")
.caCert(Path.of("server-ca.pem"))
.clientCert(Path.of("client-cert.pem"), Path.of("client-key.pem"))
.queueDirectory(Path.of("./.oftp2-queue"))
.build();
// Send file and receive receipt
TransferResult result = client.put(Path.of("./desadv.edi"), "DESADV001", Duration.ofSeconds(30));
System.out.println("Status: " + result.getStatus());
Choose between evaluation, single-host production, or multi-node enterprise deployments. Commercial licenses are node-locked based on your server hostname and licensed email address.
Full-featured trial to test with your trading partners.
Ideal for single-server production EDI gateways.
For high-volume, multi-server active/standby clusters.
Download the demo version enabled for one month. The license file will be automatically sent to your work email and works on any Java 21 or higher system.
Commercial licenses are locked to your server's hostname and email address for production EDI operations.
Common questions regarding Java 21+ runtime compatibility, licensing activation, and EDI configuration.
Polonum OFTP2 requires Java 21 or higher (OpenJDK, Eclipse Temurin, Oracle JDK, Amazon Corretto). It runs on any operating system with Java 21+ support, including Linux (RHEL, Ubuntu, Debian), macOS, and Windows.
Upon submitting the demo request, the license.key file is sent to your email and displayed on-screen. Simply place license.key in your working directory or inside ~/.oftp2/license.key. You can also pass --license /path/to/license.key.
Commercial licenses are cryptographically locked to your registered email address and server hostname (FQDN). This ensures authorized enterprise deployment and allows offline verification without calling external validation servers.
No! Polonum OFTP2 operates as an outbound-initiating client. It interrogates the server, sends files, and retrieves inbound files and receipts via outbound TLS connections on port 6619. No firewall inbound port forwarding is required.