So actually, why do both ISA and GS headers have a version?
Within Microsoft Biztalk documentation, it is said:
The ISA12 and GS8 fields (for X12 interchanges) and the UNH2 field (for EDIFACT interchanges) contain version information that is required for schema discovery.
One ISA can have more than one GS. So couldn't each GS have a different version? And if so, we is the version put in the ISA12?
We have a client file in production that has ISA12=00401 and GS8=005010. It looks wrong to me, and we are upgrading from one release of BizTalk to another. On one hand, we want to clean things up and make it right, but if the client expects it that way, we may leave it as it is.
The version in the ISA segment is more or less irrelevant as it refers to the ISA itself (or the control segments in general). The versions there are backward compatible and you can safely ignore them.
The version in the GS is the one that is important and BizTalk uses it for resolving the correct schema. So in your example, your client is sending transactions (batched in a functional group, GS\GE block) that are version 005010.
The funny thing is that you can have the version number also set at the transaction level itself, that is the ST segment, and BizTalk itself sets it differently for acknowledgments. The version in the ST will take precedence, the validity of the functional group though, when the GS and ST versions do not match, is a different thing.