Custom Edifact Disassembler/Assembler

From Link 2.9 it is possible to use additional custom disassemblers/assemblers.

How to create a custom disassembler/assembler in Link

Needed assemblies: 

  • Bizbrains.LinkAssembler.Base.dll (part of the Biztalk package)


If you want to create your own disassembler or assembler you have the following options:

  • Implement the interface: Bizbrains.LinkAssembler.Base.ILinkDisassembler
  • Implement the interface: Bizbrains.LinkAssembler.Base.ILinkAssembler


Link has two implementations of each interface out-of-the-box. See Edifact Disassembler/Assembler

How to use a custom edifact disassembler/assembler in Link

At the time writing it is a manual process to register the disassembler/assembler.

This is done on the FormatTypes directly in the database.

Table name: DistributionModel.tFormatTypes

In this table there are two columns:

  • FullyQualifiedNameDisassembler
  • FullyQualifiedNameAssembler

In these columns you can register the ILinkDisassembler or ILinkAssembler implementation.

This is the fully qualified class and assembly name - eg:

Bizbrains.LinkAssembler.Edifact.SeeburgerEdifact, Bizbrains.LinkAssembler.Edifact, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7685f304a6e7e148


When this done you need to restart the host-instance in Biztalk. And you are ready to go.

Build-in disassemblers/assemblers 

Needed assemblies (all deployed automatically with Link 2.9)

  • Bizbrains.EdifactDisassembler.dll (NETSTANDARD dll) 
  • Bizbrains.LinkAssembler.Edifact.dll (.NET 4.6.1 dll)

  • Bizbrains.LinkAssembler.Base.dll (.NET 4.5 dll)

The build-in assemblers/disassemblers are written in .NET Standard, which means that you should either install the .NET standard library on the server or you can install the "netstandard.dll" directly in the GAC.

You can download the netstandard.dll here if you want to install it manually.

Implementations

Link has at the moment two implementations of both a disassembler and an assembler:


Microsoft Edifact

Both ILinkDisassembler and ILinkAssembler are implemented in this class:

Bizbrains.LinkAssembler.Edifact.MicrosoftEdifact, Bizbrains.LinkAssembler.Edifact, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7685f304a6e7e148

LinkSetting key

The following LinkSetting key is needed to tell the assembler/disassembler where to look for XML Schemas:

LinkEdifact_DisassembleSchemaPath_Microsoft and LinkEdifact_AssembleSchemaPath_Microsoft

The value should be a path to a folder - eg. c:\edifact\microsoft\schemas

Naming convention of XML Schemas

The schemas for the Microsoft edifact should be named:

"EFACT_{MessagerVersionNumber} {MessageReleaseNumber}_{MessageType}_{AssociationAssignedCode}.xsd" (eg. EFACT_D96A_INVOIC_EN.xsd)

or

"EFACT_{MessagerVersionNumber} {MessageReleaseNumber}_{MessageType}.xsd" (eg. EFACT_D96A_INVOIC.xsd)

Seeburger Edifact

Both ILinkDisassembler and ILinkAssembler are implemented in this class:

Bizbrains.LinkAssembler.Edifact.SeeburgerEdifact, Bizbrains.LinkAssembler.Edifact, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7685f304a6e7e148

LinkSetting key

The following LinkSetting key is needed to tell the assembler/disassembler where to look for XML Schemas:

LinkEdifact_DisassembleSchemaPath_Seeburger and LinkEdifact_AssembleSchemaPath_Seeburger

The value should be a path to a folder - eg. c:\edifact\seeburger\schemas

Naming convention of XML Schemas

The schemas for the Seeburger edifact should be named:

"XML_SEE_{MessagerVersionNumber} {MessageReleaseNumber}_{MessageType}_{AssociationAssignedCode}.xsd" (eg. XML_See_D96A_INVOIC_EN.xsd)

or

"XML_SEE_{MessagerVersionNumber} {MessageReleaseNumber}_{MessageType}.xsd" (eg. XML_See_D96A_INVOIC.xsd)

Content on this page:

The information on this page is based on Link 2.12