|
CompTIA EIDX Technical Business Best Practices
Compliance
Checking Transmissions
Compliance checking
allows you to compare a file you've just received or a file you
are about to see if it conforms to the chosen standard. A
compliance checking function in your gateway checks for one or
more of the following:
- Document structure
- Formatting of data
fields and records
- Data field attributes,
cardinality, and constraints
- Data content for
fields that use a pre-defined list of valid values (code lists)
Using a compliance checker
can save a great deal of time and money when building data maps
because it can automatically trap a number of errors; your data
map only need trap errors that the compliance checker won't trap.
EIDX recommends that
a sender validate their own outbound documents for compliance
with the standards before sending the documents to a trading
partner. Errors always have costs associated with them;
if the receiving partner is trapping a sender's errors, the overall
cost of processing the errors is doubled, because both parties
have take action on the errors.
Private
vs Public Processes
EIDX develops guidelines
and recommendations for public
processes. Although EIDX cannot dictate how companies
should handle their private
processes, certain activities must take place in private
processes in order for the public processes to work, and EIDX
does describe and make recommendations for those processes.
Resending
Rejected Transactions
The reference
here is to technical rejections - transactions with a transmission
failure
at the receiver's end - not transactions that have been
rejected for business reasons. An original transaction/message
may be resent under the following conditions:
- The transaction/message
has been rejected by the VAN or ISP and the error has been
corrected.
- The transaction/message
has been rejected in the receiver’s gateway and the error has
has been corrected.
- The transaction/message
has been rejected in the receivers translator/parser
and the error has been corrected.
The following condition
must apply:
- The receivers
business application system has not processed the given document,
i.e., the transaction was not passed to the business application
system.
If the original transaction
is rejected by the business application system, then regular
system procedures for error correction are employed. The transaction
should not be resent since the transaction is now in the business
application system.
Cross-Referencing
or Converting Codes
EDI is a process which depends on
codes processed by the senders and
the receivers systems. The process is simplified if standard codes such
as ISO, EDIFACT, ASC X12 and industry code lists are used as code sets in their
applications. Examples include ISO country and currency codes, SCAC carrier
codes, and UPC numbers.
If a standard code is not used, the sender or receiver of the code must cross-reference or convert the code in order to use it. Consequently, the buyers
codes must be cross-referenced to the sellers codes for processing in
their respective system. Though the seller needs to cross-reference codes
to their internal codes for transaction processing, the seller should return
the buyers original codes. The returned original codes enable the buyer
to match the response transaction/message to the original transaction. Trading
partners must agree on the required name and address segments.
Sellers should not expect buyers to maintain their sellers codes, such
as sales order number, customer number, etc. Buyers should be expected to maintain
a sellers part number only in cases where the buyer has not assigned
their own part number.
The codes or identifiers cross-referenced in the following table are representative.
Order numbers, and any name, location, or product code in a transaction may
require a conversion. These items having corresponding key data elements between
the buyers and the sellers systems and the data must be retained
in each system.
In all cases where the code cross-reference suffices to identify the trading
partners locations in the receivers application, full physical
names and addresses are not needed in the EDI transactions. Review the locations
with the trading partners to determine if any full names and addresses are
needed in the transactions.
| VALUES
in BUYERS SYSTEM |
VALUES
in SELLERS SYSTEM |
NOTE |
| Buyers
Product ID |
Sellers
Product ID |
Either
the buyers Product ID or the sellers Product
ID may additionally need an Engineering Change (Revision)
number to accurately reference the product. |
| Buyers
Ship-To Location Code |
Sellers
Ship-To Location Code for that Buyers Ship-To Location
Code |
An
additional N1/NAD Name segment for the Buying Party may
be needed if the buyers Ship-To Location Codes are
not unique in the receivers system and the receiver
cannot make use of the sender data in the electronic envelope.
Drop shipments to occasional customers who are not defined in the order
entry system may require the full name and address. |
| Buyers
Bill-To Location Code |
Sellers
Bill-To Location code for that buyers Bill-To Location
Code |
If
the Bill-to location can be identified in the system given
the Ship-To location data, the Bill-To data may not be necessary
in the transaction. |
| Buyers
Corporate Location Code (Buying Party) |
Sellers
Corporate Location code for that buyers Corporate Location
code |
Buying
party may only be needed in selective transactions.
If the buying party location can be identified in the system given other
location data in the transaction, the buying party data may not be necessary
in the transaction. |
| Buyers
Remit To Location Code |
Sellers
Remit To Location Code for that buyers Remit To Location
Code |
Seller
often has the Remit-To Location code defaulted in their system
since a Remit To Location is linked to the buyers Bill-to
Location code. |
| Buyers
location for the Sellers Ship-From location |
Sellers
Ship-From Location |
The
Seller is the owner of the location; hence, the buyer may
need to cross-reference the location when they receive it. |
| Buyers
Contract Number |
Sellers
Contract Number |
There
may be multiple buyer Contract Numbers to one seller Contract
Number. |
| Buyers
Carrier Code |
Sellers
Carrier Code for that buyers Carrier Code |
Recommend
that all trading partners use SCAC codes from the transportation
industry so code cross referencing is not needed.
Even if the business application does not use SCAC code, the EDI process
can cross-reference their internal codes to SCAC codes for the EDI transactions. |
| Buyers
Currency Code |
Sellers
Currency Code for that buyers Currency Code |
ISO
currency codes should be used so code cross referencing is
not needed. See ISO document 4217.
Even if the business application does not use ISO codes, the EDI process
can cross-reference their internal codes to ISO codes for the EDI transactions. |
| Buyers
Country Code |
Sellers
Country Code for that buyers Country Code |
ISO
country codes should be used so code cross referencing is
not needed. See ISO document 3166.
Even if the business application does not use ISO codes, the EDI process
can cross-reference their internal codes to ISO codes for the EDI transactions. |
| Purchase
Order Number |
Sales
Order Number |
A
given purchase order number may have one or more corresponding
sales order numbers. A sales order number should reference
only one purchase order number. |
Using
Codes from Standards Data Dictionaries
If data element definitions,
data attributes, and valid code lists are used consistently by
all trading partners, cross referencing of sender codes to receiver
codes may be substantially reduced or eliminated. Code conversions
are overhead processing which may be avoided. Business systems
should consider using the following code lists and data definitions
as their internal system codes:
- ISO (International
Standards Organization) codes
- UN EDIFACT Data Directory
- Industry association
code lists, such as SCAC (Standard Carrier Alpha Code)
- EDI Association code
lists, such as EIDX
- Other Association
Codes, such as EAN (European Article Numbering)
- ASC X12 Data Dictionary
The UN EDIFACT data
dictionary is preferred over the ASC X12 Data Dictionary because
of the long term direction to have the data dictionaries merged
into the UN EDIFACT data directory. If the UN EDIFACT directory
does not have the desired data element definition and code list,
then the ASC X12 data dictionary may be necessary. The transportation industry SCAC code list of carrier codes is recommended.
This common carrier code list will avoid a lot of cross referencing of codes
between buyer and seller systems.
ISO
Country Codes, Currency Codes, Unit of Measurement
ISO
country codes, currency codes and unit of measurement codes should
be used in all applicable transactions. Some ISO codes have both
a numeric and alpha code set, or two character codes and three
character codes. The alpha codes are recommended.
|
ISO
CODE |
ISO
or UN/ECE Document |
Alpha
Length |
Web sites
(as of publication
date of this document) |
| Country |
ISO
3166 |
2
and 3 |
www.unece.org/ or www.cpe.surrey.ac.uk/ |
| Currency |
ISO
4217:1981 |
3 |
http://www.unece.org/ or www.esi.co.uk/ |
| Unit
of Measurement |
UN/ECE
Recommendation No. 20 |
|
http://www.unece.org/ |
Free
Form Text - Notes and References
Note segments provide
a free form text data element. Notes have been used to convey
standard boilerplate information and other special notes. Standard
boilerplate information should be established outside of the
electronic transactions/messages. They should not need to be
sent with every transmission.
Notes are discouraged
since they require a human review for interpretation even to
ignore them for the application. This prohibits streamlining
transaction processing. It is desirable to codify all data
in specific data fields. Data sent as free-form text requires
a person to review and respond to the information to review
the actual data. The notes are always different from each customer,
e.g., 'CONTRACT IS 65476 AND DELIVERY QUOTE IS AB5434 ', 'PROMISE
DELIVERY = AB5434'. Typically, systems cannot automatically interrogate
the note looking for specific items like contract number or delivery
quote number.
Often notes contain various authorization numbers in free form
text format. If the type of data found in notes are common business
fields, they should
be defined in explicit data fields in the purchasing system in the long-term.
This allows use of coded reference elements. Use of coded reference elements
educes the chance of important data being overlooked which could have been in
free-form text.
Standard |
Note
Segments |
Segment |
ASC X12 |
NTE,
N9 |
Note
Segment |
UN/EDIFACT |
FTX |
Free
Text Segment |
OAG |
?? |
?? |
RosettaNet |
?? |
?? |
The
following are examples of types of information that can be codified:
| X12
REF or N9 Qualifier |
UN/EDIFIACT
RFF Qualifier |
OAG |
RosettaNet |
Meaning |
| CJ |
|
|
|
Clause
Number |
| DQ |
|
|
|
Delivery
Quote Number |
| GC |
|
|
|
Government
Contract Number |
| GP |
|
|
|
Government
Priority Number |
| PH |
|
|
|
Priority
Rating |
| PR |
|
|
|
Price
Quote Number |
Segment
and Data Element Delimiters
Delimiters
in ASC X12
There are no default delimiters (a/k/a service
characters or control characters) reserved for
use in X12. Allowable service characters should be discussed
between trading partners.
Consider the impact of which delimiter you might choose. For
example, asterisks are often found embedded in product identifications
(parts). When
an asterisk is used as a data element terminator and an EDI translator encounters
an asterisk embedded in a data field like a part, it ends the data element
at the point where the asterisk is found. This causes the data to be misinterpreted
by the EDI translator.
Use characters for delimiters which are most likely not used during data entry. Note
that @ and ~ may interfere with email addresses which may be sent. Hexadecimal
(non-printable) characters may be used as segment terminators, but are not
recommended as data element separators.
The basic character set used in ASC X12 includes those selected from the uppercase
letters, digits, space, and special characters as specified in the Character
Sets Table on this Web site. An extended character set
may be used by negotiation between the two parties and includes the lowercase
letters, national characters and other special characters in the Character
Sets table. The X12 standard makes
no provision for a release
character.
Delimiters
in UN-EDIFACT
UN EDIFACT has default
service characters. The default service characters reserved for
use in EDIFACT are:
| Colon |
: |
Component
data element separator |
| Plus
sign |
+ |
Data
element separator |
| Question
mark |
? |
Release
character |
| Asterisk |
* |
Repetition
separator |
| Apostrophe |
|
Segment
terminator |
It is recommended that the defaults be used. However, the conditional Service
String Advice (UNA) provides the capability to specify the service characters
used in the interchange, if it is necessary to use characters that differ
from the above defaults. UNA is transmitted as a single string of 9 characters
prior to the UNB interchange segment.
Hierarchical
Loops in ASC X12
Hierarchical (HL) segments
allow the identification of dependencies among and the content
of hierarchically related groups of data segments within the
ASC X12 transactions. UN-EDIFACT does not use an equivalent to
the HL loop. The following pages are for illustration only. It
does not imply the order or relationships of HL loops in any
particular transaction. The official comments
from ASC X12 and (EIDX Comments) are:
1. The HL segment is
used to identify levels of detail information using a hierarchical
structure, such as relating line item data to shipment data,
and packaging data to line-item data. (It enables the sender
to use the full grouping of a number of segments in each use
of the HL loop.)
2. HL01 shall contain a unique alphanumeric number for each occurrence
of the HL segment in the transaction set. For example, HL01 could
be used to indicate
the number of occurrences of the HL segment, in which case the value of the
HL01 would be 1 for the initial HL segment and would be incremented
by one in each subsequent HL segment within the transaction. (This is generally
the recommended EIDX Usage.)
3. HL02 identifies the hierarchical ID number of the HL segment to which the
current HL segment is subordinate.
4. HL03 indicates the context of the series of segments following the current
HL segment up to the next occurrence of an HL segment in the transaction. For
example, HL03 is used to indicate the subsequent segments in the HL loop form
a logical grouping of data referring to shipment, order, or item-level information. (HL03
indicates the context, or purpose, of the series of segments following the
current HL segment up to the next occurrence of an HL segment in the transaction.
For example, HL03 could be used to indicate the subsequent segments form a
logical grouping of data referring to shipment, order, or item level information.)
5. HL04 indicates whether or not there are subordinate (or child) HL segments
related to the current HL segment. (EIDX guidelines do not use HL04 because
it usually adds very little value but it does involve a fair amount of processing
overhead for both the sender and receiver of the transaction.)
ASC
X12 HL Segments |
|
Position |
Element |
Min/Max |
Element |
Definition |
HL01 |
628 |
1/12 |
Hierarchical
ID Number (Mandatory) |
A unique
number assigned by the sender to identify a particular
data segment in a hierarchical structure |
HL02 |
734 |
1/12 |
Hierarchical
Parent ID Number |
Identification
number of the next higher hierarchical data segment
that the data segment being described is subordinate to |
|
HL03 |
735 |
1/2 |
Hierarchical
Level Code (Mandatory) |
Code defining
the characteristic of a level in a hierarchical structure.
There is a list of valid codes in ASC X12. |
Sample
List of Codes |
Meaning |
A |
Assembly |
F |
Component |
H |
Bill
of Materials |
I |
Item |
K |
Kit |
S |
Shipment |
T |
Shipping
Tare |
U |
Subassembly |
|
HL04 |
736 |
1/1 |
Hierarchical
Child Code |
Code indicating
if there are hierarchical child data segments subordinate
to the level being described. |
Codes |
Meaning |
0 |
No
Subordinate HL segments |
1 |
Additional
Subordinate HL segments |
The following table
illustrates a representative example of possible coding of the
HL loops. HL04 is illustrated only to show a full example. HL04
is not recommended by EIDX.
| |
HL01 |
HL02 |
HL03 |
HL04 |
| HL01
is just a counter of each HL loop in the given transactions |
HL02
indicates the parent HL loop number (HL01) |
HL03
is a code from a list of ASC X12 codes indicates the type
of data |
HL04
indicates whether this HL loop has subordinate or no subordinate
HL loops |
| Example
1 |
| HL~1~~S@ |
1
for first HL loop |
The
first HL loop is not subordinate to any other HL loop. (Not
Used; Leave Blank) |
S for
Shipment Data |
Optional
HL04 not used. |
| HL~2~1~I@ |
2
for second HL loop |
This Item HL
loop is subordinate to the HL01=1 (the shipment
HL loop) |
I for
Item Data |
Optional
HL04 not used |
| HL~3~1~I@ |
3
for third HL loop |
This Item HL
loop is also subordinate to the HL01=1 (the shipment
HL loop) |
I for
Order Data |
Optional
HL04 not used |
| |
|
|
|
|
| HL~1~~A~1 |
1
for first HL loop |
The
first HL loop is not subordinate to any other HL loop. (Not
Used; Leave Blank) |
A for
Assembly |
1 to
indicate subordinate HL segment(s) exist. |
| HL~2~1~F~0@ |
2
for second HL loop |
This Component HL
loop is subordinate to the HL01=1 (the assembly
HL loop) |
F for
Component |
0 to
indicate no subordinate HL segment(s) exist. |
| HL~3~1~U~1@ |
3
for third HL loop |
This Subassembly HL
loop is subordinate to the HL01=1 (the assembly
HL loop) |
U for
Subassembly |
1 to
indicate subordinate HL segment(s) exist. |
| HL~4~2~F~0@ |
4
for fourth HL loop |
This Component HL
loop is subordinate to the HL01=2 (the subassembly
HL loop) |
F for
Component |
0 to
indicate no subordinate HL segment(s) exist. |
| HL~5~2~F~0@ |
5
for fifth HL loop |
This Component HL
loop is subordinate to the HL01=2 (the subassembly
HL loop) |
F for
Component |
0 to
indicate no subordinate HL segment(s) exist. |
|