EdiFabric 11.0.0 is a .NET SDK that parses, generates, validates, and splits EDI files. These examples cover custom flat files: delimited, positional, or a mixture of both, including CSV.
EdiFabric does not include communication components (AS2 or SFTP), a dashboard, or a UI. It is a library you call from your own application.
The .NET 6 projects compile the same sources as the .NET Framework 4.8 projects. Both solutions reference EdiFabric 11.0.0 from NuGet. The examples target .NET 6 for backward compatibility. EdiFabric 11.0.0 also ships targets for .NET 8, .NET 9, and .NET 10. To evaluate one of those, change TargetFramework in the project file and rebuild.
| Path | Purpose |
|---|---|
NET 6/EdiFabric.Examples.FlatFile.sln |
.NET 6 solution |
NET Framework 4.8/EdiFabric.Examples.FlatFile.sln |
.NET Framework 4.8 solution |
NET Framework 4.8/EdiFabric.Examples.FlatFile.Common/Config.cs |
Serial key shared by every example |
NET Framework 4.8/EdiFabric.Examples.FlatFile.Common/ |
Flat-file models (FlatPO, markers, and purchase order) |
NET Framework 4.8/EdiFabric.Examples.FlatFile.Read/ReadCSVFile.cs |
Read the sample files |
Files/ |
Sample flat and CSV files |
- Visual Studio 2022, or the .NET SDK. Download Visual Studio.
- .NET 6 for
NET 6/EdiFabric.Examples.FlatFile.sln. The projects set<TargetFramework>net6.0</TargetFramework>so they stay compatible with existing .NET 6 apps. EdiFabric 11.0.0 also providesnet8.0,net9.0, andnet10.0. To evaluate a later version, change that property (for example tonet8.0) and rebuild. - .NET Framework 4.8 for
NET Framework 4.8/EdiFabric.Examples.FlatFile.sln.
- Sign up free for Community to get an evaluation serial key. Community never expires, requires no credit card, and is limited to 250 operations per day for non-production use. After signup, retrieve your serial from Your Account.
- Paste that serial into
TrialSerialKeyinNET Framework 4.8/EdiFabric.Examples.FlatFile.Common/Config.cs. The .NET 6 projects link this file, so one edit covers both solutions.
NuGet restore pulls EdiFabric 11.0.0. The flat-file models are C# classes in EdiFabric.Examples.FlatFile.Common, not a template NuGet package.
Sign up free for Community at edifabric.com/pricing and put your serial in Config.TrialSerialKey. Then open a solution, set EdiFabric.Examples.FlatFile.Read as the startup project, and run it.
From the command line:
cd "NET 6/EdiFabric.Examples.FlatFile.Read"
dotnet runThe project reads Files/Flat_PO.txt, Files/Flat_Markers.txt, Files/Flat_Multiple.txt, and Files/CSV_PO.txt with FlatReader. A factory maps the start of each record to a model in EdiFabric.Examples.FlatFile.Common: PO, Markers, or PurchaseOrder.
To translate your own file, change the path in EdiFabric.Examples.FlatFile.Read/ReadCSVFile.cs.
Every example calls License.SetSerial before it reads or writes. On Community that is the call to use. See Licensing for Developer and Enterprise.
using EdiFabric.Core.Model.Edi;
using EdiFabric.Framework.Readers;
License.SetSerial(serial); // from your Community or paid plan
var ediStream = File.OpenRead(@"Files\Flat_PO.txt");
var items = new List<IEdiItem>();
using (var streamReader = new StreamReader(ediStream, Encoding.UTF8, true, 1024))
using (var flatReader = new FlatReader(streamReader, FlatFactory))
{
while (flatReader.Read())
items.Add(flatReader.Item);
}FlatFactory looks at the first two characters. PO loads FlatPO, H, loads the markers model, and LI loads the purchase-order model, all from assembly EdiFabric.Examples.FlatFile.Common. Read also shows an async read and a split read (FlatReaderSettings.Split).
Write builds a purchase order with POBuilder and writes it with FlatWriter. The same project writes asynchronously.
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream, Encoding.UTF8, 4096, true))
using (var flatWriter = new FlatWriter(writer, null))
{
flatWriter.Write(POBuilder.BuildFlatPO());
}| Project | What it shows |
|---|---|
EdiFabric.Examples.FlatFile.Read |
Read a positional purchase order, a file with markers, mixed messages, a CSV purchase order, an async read, and a split read |
EdiFabric.Examples.FlatFile.Write |
Write a flat purchase order, and write it asynchronously |
EdiFabric.Examples.FlatFile.Common |
The C# models and POBuilder |
For another layout, add a C# model to EdiFabric.Examples.FlatFile.Common and return it from FlatFactory. See EDI templates.
Note
Sign up free for the Community plan
to get an evaluation serial key. Community never expires, requires no credit
card, and is for non-production evaluation, learning, and prototyping
(250 operations per day). After signup, copy your serial from
Your Account
into Config.TrialSerialKey.
One operation is one parse, generate, validate, or acknowledge call. The 250-a-day
quota is shared across ediFabric .NET, Native, and Cloud. If you hit it, calls
throw LicenseException with error 639. Upgrade at
edifabric.com/pricing to continue.
Use of the product is subject to the EULA.
| Plan | What works | Recommended |
|---|---|---|
| Community | License.SetSerial only. Online check. 250 operations per day. Non-production. |
License.SetSerial |
| Developer | License.SetSerial and License.EnsureToken (EnsureToken caches the result for 1 day) |
License.EnsureToken |
| Enterprise | License.SetSerial, License.GetToken / License.SetToken |
License.SetToken (offline tokens) |
// Community: authorize against the license server
License.SetSerial(serial);
// Developer (recommended): 1-day built-in cache; refreshes if the token expires within N seconds
License.EnsureToken(serial, seconds: 3600);
// Enterprise: set an offline token
License.SetToken(token);The examples call License.SetSerial(Config.TrialSerialKey). On Developer, call License.EnsureToken instead. TokenFileCache.Set() in EdiFabric.Examples.FlatFile.Common is the manual GetToken / SetToken cache, for when you want to store the token yourself.
License failures throw LicenseException. ErrorCode is the number below, and Message is the text.
Error 639 means the Community daily quota was exceeded. Upgrade your plan at edifabric.com/pricing if you wish to continue.
| Code | Message |
|---|---|
| 1 | The suggested output buffer size is too small |
| 501 | Unexpected error occured. Contact support@edifabric.com for assistance |
| 611 | The input buffer is either null or its size is nill |
| 612 | The logger failed to log |
| 613 | The map configuration file is invalid |
| 614 | The output capacity must be positive |
| 615 | Models map must be set before parsing or splitting |
| 616 | Mode must be any of: 1 - Parse, 2 - Parse and Validate, 3 - Parse and Validate and Acknowledge |
| 617 | Parser failed. Contact support@edifabric.com and include a sample project/file to reproduce the issue |
| 618 | Validation failed. Contact support@edifabric.com and include a sample project/file to reproduce the issue |
| 619 | Validation serializer failed. Contact support@edifabric.com and include a sample project/file to reproduce the issue |
| 620 | The token is invalid. Contact support@edifabric.com for assistance |
| 621 | The configuration file is invalid |
| 622 | The split segment ID must not be blank |
| 623 | Call start_split before splitting |
| 624 | The result can't be retrieved. Contact support@edifabric.com and include a sample project/file to reproduce the issue |
| 625 | Result buffer size mismatched |
| 626 | Call start_merge before merging |
| 627 | The output buffer is either null or its size is nill |
| 628 | The serial number is missing or incorrect. GetToken doesn't work with developer license. Contact support@edifabric.com for assistance |
| 629 | License was not installed. Contact support@edifabric.com for assistance |
| 630 | No license to use this version. Contact support@edifabric.com for assistance |
| 631 | The token has expired. Get and set a new token to continue. Contact support@edifabric.com for assistance |
| 632 | The token is missing. Set token to continue. Contact support@edifabric.com for assistance |
| 633 | Reached the maximum number of licenses. Set token to continue. Contact support@edifabric.com for assistance |
| 634 | Environment not recognized for licensing or reached the maximum number of licenses. Contact support@edifabric.com for assistance |
| 635 | Serial or token not found. Either set token or serial to continue. Contact support@edifabric.com for assistance |
| 636 | The rate to get serials was exceeded for your license. Wait for 60 seconds and try again or upgrade your license. Contact support@edifabric.com for assistance |
| 637 | Invalid JSON. Enable logging for additional details |
| 638 | The operation is not supported by your license |
| 639 | Your license has reached its daily call limit. Upgrade your plan at edifabric.com to continue using the product. |
Custom flat files are plain C# classes. These examples already include them in EdiFabric.Examples.FlatFile.Common.
The standard EDI models published on NuGet, such as EdiFabric.Templates.X12 and EdiFabric.Templates.Edifact, are for evaluation only. They are a Community plan limitation.
Paid plans provide every EDI template as plain C# files. Add them to the solution by following How to create EDI template projects. For evaluation and the Community plan, you can still download the templates in compiled form by following the same article.
- EDI to CSV
- EdiNation spec library (no registration)
The source code in these example projects is strictly for demonstrational purposes and is provided "AS IS" without warranty of any kind, whether expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.