Customizing Envelope Fields
This week's post is brought to us by Suraj Guarav, our EDI/AS2 development lead for R2:
A new feature coming up in Beta 2 (also in Feb CTP but with limited test coverage) is the ability to dynamically modify the list of allowed values in envelope ID fields.
A typical customer scenario could be that there is a unique sender and receiver qualifier that two trading partners use which is outside the set of values defined by the X12 standards body. In such a case, the allowable values that appear in the drop-down lists in the EDI Properties in the Partner Agreement Manager (PAM) for ISA05 and ISA07 need to be extended to incorporate the additional acceptable values.
Customization Using Extended Service Schema
The EDI system pulls the list of allowed values from static service schemas in the Microsoft.BizTalk.Edi.BaseArtifacts dll that ships with R2. There is one schema each for X12 and Edifact. To extend the base set of values, a service schema extension needs to be developed and deployed. Service schema extension templates for X12 and Edifact ship with the product and are located at Microsoft BizTalk Server 2006\XSD_Schema\EDI. They are called X12_ServiceSchemaExtension.xsd and Edifact_ServiceSchemaExtension.xsd respectively.
To extend ISA01 field, create a Biztalk project and add the X12 Service schema to it. In case a service schema has been deployed previously, it should be used as it may contain extensions to other envelope fields.
Add values to the ISA01 collection. Similarly, other fields in the schema can be modified as well. Once the changes are done, deploy the schema in the current BizTalk group. It should have the same namespace and root node name as the original extension schema that came with the product. After the schema is deployed, new values would be recognized throughout the system. They would show up in Partner Agreement Manager and runtime processing would also employ these values during validation. In addition, XML tools (e.g. validate instance) would also make use of these values for validation.
Only the list of fields that can be customized are present in the extension schemas. Addition of any new field in the schemas would not have any impact on system's behavior, they would simply be ignored. Additionally, it is not possible to delete a value from the base service schemas. Customizing envelopes is additive only!