Changelog

Set max concurrent executions for Stedi Functions

You can now set the maximum number of concurrent executions for any Stedi function to avoid overloading downstream services and ensure that the function can scale up as needed.

Concurrency refers to the number of in-flight requests your function is handling at the same time. With the new concurrency controls, you can set the maximum number of executions that a given function can execute simultaneously. Generally, you would set this to a number that your downstream system can comfortably support.

In addition to limiting the number of concurrent requests, concurrency controls help ensure that you always have available capacity for a given function within your Stedi account. All functions within a Stedi account share an overall concurrency limit that can be raised upon request. When you set a concurrency limit for a specific function, you reserve a part of the overall account "budget" for that function. This approach ensures that you can scale up to the reserved level, even if other functions are experiencing a high load.

To use this feature, go to the Functions UI, click the function you want to edit, and set the Max concurrent executions.

EDIFACT support in EDI Inspector

We are excited to announce that our EDI Inspector can now validate EDIFACT EDI files. All EDIFACT releases D96A and later are supported.

The EDI Inspector instantly recognizes any X12 or EDIFACT EDI file and validates its content against the corresponding EDI standard. You can view the transaction data on an easy-to-read UI, and identify and fix errors, such as incorrect codes and formats, missing or misplaced segments, and more.

EDIFACT integration preview: Soon, you'll be able to configure an EDIFACT integration on Stedi to exchange EDIFACT files with your partners. Contact us to get added to the preview launch.

Enable Static IP address for your Remote FTP connections

You can now configure your Remote FTP connections to use a static source IP address when exchanging EDI files with your trading partners.

Enabling a Static IP address ensures that your Remote FTP connections always use the same source IP address when communicating with the remote server. This may be required if one or more of your trading partners need to add your IP address to an allowlist to enable access.

You can enable a static IP address for your Remote FTP connections from the Core settings UI.

Create and send test EDI files from your browser

You can now generate and send test files to your trading partner from your browser.

To send a test EDI file from within a partnership, you can open the menu next to any outbound transaction setting and click Send EDI. You can also access this feature from the File Executions page. Stedi can autogenerate the input transaction payload (JSON) from any sample EDI file in the guide. You can modify this payload or paste your data into the editor. You can send the file from the browser or get the (HTTP) Generate API syntax for that payload. If you send the file, Stedi delivers the outbound test file to the connection, and you can review the results on the File Executions and Transactions pages.

Destination webhooks: Automatically send data to external APIs

You can now configure Destination webhooks to send data from Stedi to third-party services without writing any custom code. You can use destinations to send processed transaction data to your internal systems and business applications for further processing. You can also configure webhooks for other Stedi events, such as file processing failures. You can use this approach to trigger alerts in systems like Slack, PagerDuty, or Zendesk for further review.

Stedi can send webhooks to:

  • Custom applications using Basic, OAuth, or API Key authorization

  • Cloud functions, including AWS Lambda, Google Cloud Functions, and Azure Functions

  • iPaaS platforms, such as Zapier, Workato, or Tray.io

  • ERPs like NetSuite, SAP, or Oracle.

Introducing fully-managed Stedi AS2 connections

You can now use Stedi's fully-managed AS2 connections to exchange EDI documents with your trading partners. The UI helps you quickly set up and test an AS2 connection for a trading partner. When you enable inbound messages, Stedi automatically processes EDI files received through the connection. When you generate EDI for a partnership using the API, Stedi uses the AS2 connection assigned to the transaction to deliver the document to the trading partner. You can review the delivery status of all your sent EDI files on the file executions page.

Auto-generate a Stedi guide from sample EDI files

You can now generate a Stedi guide from sample EDI files.

When you upload one or more EDI samples in the guide builder UI, it pre-populates a new guide based on the segments and elements present in the sample data. This allows you to fine-tune the guide into its final shape instead of starting from scratch. For example, you can add code values and optional elements that are not present in the sample files.

Auto-configure Stedi Core profiles and partnerships from EDI files

You can now use the auto-configure option to create Stedi Core profiles and partnerships even faster by using existing EDI files.

When you upload a valid EDI file, Core extracts information from the interchange and functional group headers to generate two profiles - one for the sender and one for the receiver - that you can review before finalizing. Core can also optionally generate a partnership linking those two profiles.

Stedi Core is an event-driven EDI system that can validate, parse, and generate EDI for any trading partner. Core profiles contain information required to construct the EDI envelope that has information about the sender and receiver and the metadata of the interchange. Partnerships are a unique relationship between two profiles and describe all aspects of the EDI relationship, including which transaction sets the trading partners will exchange.

Automatically generate 997 Functional Acknowledgments with Stedi Core

You can now enable automatic 997 Functional Acknowledgments for any partnership within Stedi Core. When you enable 997 acknowledgments for a partnership, Core automatically generates a 997 Functional Acknowledgment for every valid EDI received and delivers the 997 to the partner using the specified connection. Core generates acknowledgments at the functional group level of the original inbound EDI, and each generated acknowledgment includes ISA and GS envelopes, complete with auto-incremented control numbers.

Review Stedi Core processing events and function logs in the UI

You can now review the generated events and function request and response payloads associated with every file execution and transaction within Stedi Core. You can use this information to quickly troubleshoot issues and understand how your data flows through Core. Core emits events for every file, functional group, and transaction set it successfully processes. It also emits events when it delivers generated files and for processing failures. You can now review associated Core events on any file execution or individual transaction details page. You can expand each event to view its complete JSON payload and all the functions that event triggered. You can view the name of the associated event binding and whether the function execution was successful, along with the full request payload.

Improvements to Stedi guides and functions

We released the following improvements to Stedi guides and Stedi functions:

  • You can now print all Stedi guides without having to make them public.

  • The Functions UI now allows you to adjust the log retention period for each function. You can choose a retention period from 1 day to 10 years.

Configure remote and Stedi-hosted SFTP connections directly in Stedi Core

You can now configure both Stedi-hosted and remote SFTP / FTPS connections from within Stedi Core. Connections tell Core where to retrieve and send files for each trading partner.

  • For SFTP connections, Stedi creates and hosts a fully-managed FTP server. You specify an inbound directory where your partners can add EDI files for Core to automatically process and an outbound directory where Core will deposit generated EDI files for your partners to retrieve. After creation, you can share the autogenerated SFTP user credentials with your trading partners to begin securely exchanging files.

  • For remote SFTP, you can choose how often Core polls for new files, and you can fetch files manually at any time for testing and troubleshooting. Core automatically deposits generated EDI files in the specified outbound directory.

Retry failed outbound file executions manually or in bulk

You can now retry failed outbound file executions in Stedi Core.

Previously, failed outbound file executions required an entirely new EDI generation request. Now, you can retry outbound file executions individually or in bulk. You can review all the delivery attempts and previous attempts for a given EDI generation request in Core. Stedi Core is an event-driven EDI system that does most of the heavy lifting for EDI integrations. Core can validate, parse, and generate EDI for any trading partner and provides complete visibility into your real-time transaction data.

Define a scheduler for Stedi functions

You can now define a scheduler to automatically invoke Stedi Functions. Quickly set up a basic scheduler in the Functions UI that runs your function after a specific number of minutes, hours, or days. You can also define an advanced scheduler with custom expressions.

  • Use rate expressions to invoke a function at regular intervals, such as every fifteen minutes.

  • Use cron expressions when you want to invoke a function periodically at a specific time, such as at 8:00 AM (UTC+0) every first day of the month.

Functions is a compute service that lets you run code without managing servers. You can use functions to respond to Stedi Core events, integrate Stedi with external systems, and define functionality to fulfill any EDI integration requirement.

Improvements to Stedi Core Generate API and SDK

The Stedi Core Generate API and SDK have the following improvements:

  • The generate request now supports an optional filename parameter that you can use to specify the name of the generated EDI document.

  • The generate response now includes a globally unique fileExecutionID that you can use to track outbound EDI documents. Previously, the response only included an artifactId equivalent to the filename.

You can generate and send X12 EDI to any trading partner by providing JSON to the Core API or SDK. Core displays generated EDI files in the UI and delivers them to the destination specified in each partnership's settings.

Functions UI now includes step-by-step instructions for local development

You can create and manage Stedi Functions, such as those using external libraries, locally with the Stedi CLI and Functions SDK. The Functions UI now contains a Local Setup page with step-by-step instructions to help you get started. As part of this update, we removed the ability to edit code in the Functions UI.

  • The CLI now uses esbuild, which enables multi-file functions and allows you to use npm libraries in function code.

  • Editing files locally promotes the usage of source control.

Functions is a compute service that lets you run code without managing servers. You can use functions to respond to Stedi Core events, integrate Stedi with external systems, and define functionality to fulfill any EDI integration requirement.

Stedi Core increases size limits for EDI transactions

Stedi Core now supports translating EDI transaction sets up to 130mb in size, both using a custom guide and using the default X12 spec.

Previously, the limit was 90mb with a guide and 50mb with the default X12 spec.

Dimension Previous limit New limit File size 500 mb [^1] 500 mb (unchanged) Largest transaction set within a file without a guide 50 mb 130 mb with a guide 90 mb 130 mb

[^1] An EDI file can contain multiple interchanges, and each interchange can contain multiple transaction sets. The limit of what Core can process is generally dictated by the size of the largest EDI transaction set within the file, not by the file size itself.

Stedi Core now supports translating large EDI files

Stedi Core now supports translating EDI files up to 500mb and individual transaction sets up to 90mb. This is more than 80x larger than the EDI Translate API's current limit.

Improvements to Guides and Mappings

Stedi guides are machine-readable EDI specifications that you can share as interactive web pages with built-in X12 EDI validation. Stedi mappings let you transform JSON from one shape to another. You can base the source or target schema of a mapping on a guide, which lets you automatically pull changes from the connected guide into the mapping.

We recently released the following Guides and Mappings improvements and fixes:

Improvements

  • You now receive a warning when you try to delete a guide that is connected to one or more mappings. The warning lists all of the connected mappings.

  • The guide builder now includes tooltips when you hover over the colored icons next to each node in the sidebar. The tooltips tell you the segment or element type and whether or not it’s required.

  • The mappings UI now pre-selects all target keys when you create a mapping externally from the API or guide builder. Previously, Mappings only pre-selected target keys when you created a mapping from within the Mappings UI.

Fixes

  • When you enter Allowed Values for elements, the guide builder displays a shortened versioned of long JSON keys so they don't overlap with the description.

  • The guide builder now allows spaces in values. This update is important for values like organization names, which require spaces for readability.

Omit any field in Mappings based on a condition

While building a Stedi mapping, you often need to omit a specific field based on the data in the incoming source document. For example, you may need to omit a delivery address object completely if the purchase order has not been confirmed yet. Now, you can use the $omitField constant to omit both primitive fields and entire objects. Previously, Mappings UI only allowed using the $omitField for primitive fields (fields that map to strings, numbers, and booleans). You can now use $omitField to exclude an entire object or an array based on a condition. Mappings now recognizes $omitField within list context expressions. In addition, every object field has a new optional object context input with built-in support for $omitField.