RFC 5024 Certified • ODETTE 2.0 Compliant

Enterprise OFTP2 Secure Client & EDI Integration CLI

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.

TLS 1.3 & mTLS (Port 6619)
Java 21+ Ready
Zero Listener Daemon Needed
CMS Signing & Ciphers 01/02/03
oftp2 cli — RFC 5024 session

# 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.

Full-Featured OFTP2 for Mission-Critical Supply Chains

Built strictly to RFC 5024 specifications, Polonum OFTP2 provides robust enterprise-grade communication for automotive, logistics, and manufacturing EDI networks.

TLS Security & mTLS

End-to-end transport layer security over default OFTP2 TLS port 6619 with optional mutual client authentication.

  • PEM certificates & private keys (--ca-cert, --cert, --key)
  • PKCS12 and JKS KeyStore / TrustStore integration
  • Automatic client cert presentation upon server request
  • Test-mode trust-all verification (--insecure)

Server Interrogation (info)

Probe target OFTP2 servers to discover capabilities, supported cipher suites, buffer sizes, and server Odette IDs.

  • SSID negotiation & capability inspection (Send, Receive, Both)
  • Buffer size (SSIDSDEB) & credit window (SSIDCRED)
  • Compression flags (SSIDCMPR) & restart support (SSIDREST)
  • Challenge authentication detection (SSIDAUTH)

Flexible Authentication

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 challenge
  • none: Zero-friction transport relying on TLS / mTLS

Persistent Outbound Queue (put)

Zero listening service required! Transmits files and guarantees acknowledgment delivery even over unstable networks.

  • Sends unstructured/binary ('U') with subrecord framing
  • Synchronous wait in session for EERP / NERP receipts
  • Auto-persists in <queue>/outbound/*.pending if peer delays receipt
  • Automatic receipt correlation on next connection

Inbound Queue & .oftp Naming

Batch retrieval of all pending files from the server with automated virtual dataset parsing.

  • Receives as <dataset>.<date>.<time>.oftp (RFC standardized)
  • Stages files into <queue>/inbound/*.received
  • Allows your EDI parser to validate data before sending ACK
  • Processes background outbound receipts simultaneously

Signed Receipts (eerp / nerp)

Complete RFC 5024 acknowledgment flow with cryptographic non-repudiation.

  • Positive End-to-End Response (eerp <file.oftp> or --all)
  • Negative receipt with explicit error code (nerp --reason <code>)
  • Automated CMS digital signature generation (SFIDSIGN)
  • Automatic queue entry cleanup upon RTR acknowledgment

How Polonum OFTP2 Fits Into Your Infrastructure

No complex background server daemon required. Integrate directly with your existing EDI translator (OpenText, Sterling, Seeburger, custom scripts) via simple CLI invocations or Java API.

1

EDI Translator

Generates EDIFACT, ANSI X12, or VDA payloads

→
2

Polonum OFTP2

Runs oftp2 put with TLS & persistent queue

→
3

Remote Partner

OFTP2 Server receives data & issues EERP receipt

→
4

Inbound Staging

Receives .oftp files & triggers EDI ingestion

Comprehensive CLI & Java 21+ API

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());

Transparent Commercial Licensing

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.

30-Day Evaluation

Full-featured trial to test with your trading partners.

Free / 1 month
  • 100% Full Feature Set Enabled
  • Java 21+ Compatible Runtime
  • Instant Automated Email Delivery
  • Standard Community Documentation
Request Free 1-Month Demo

Enterprise HA / Multi-Host

For high-volume, multi-server active/standby clusters.

$3,950 / cluster / year
  • Up to 5 Clustered Hostnames
  • Disaster Recovery & Staging Included
  • 24/7 Phone & Emergency SLA Support
  • Architecture & Certificate Consulting
Select Enterprise

Purchase Commercial License

Commercial licenses are locked to your server's hostname and email address for production EDI operations.

Enter the system hostname (output of hostname -f) where the software will run.

Production license key & formal invoice dispatched directly to your email address.

Technical & Deployment Specifications

Common questions regarding Java 21+ runtime compatibility, licensing activation, and EDI configuration.

What are the system and Java requirements?

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.

How do I install the 30-day evaluation license?

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.

Why does the commercial license require the server hostname?

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.

Does Polonum OFTP2 require an open listening port?

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.