Closed humbitious closed 2 years ago
Requirements:
EDIFACT parsing (UN/ISO 9735/IATA)
X12 parsing (ASC/ANSI)
List required forms and document types for each
Attached is sample X12 850 form messaging
https://app.zenhub.com/files/258320699/aadce91f-88bb-4549-8229-2b082d6e4640/download
Excited about this one. Suggesting that we do the multiparty project #48 as a dependency, so that we can then show multiparty-EDI. OR, maybe this is an EDI kit, so that an EDI demo would have this and #48 as a dependency. Thoughts? Timeline?
Value Added Networks
Barriers to entry for EDI implementation are relatively high due to programming cost, so several providers of EDI services offer a SaaS based model that integrates a network of EDI capable ERP’s and other EDI communication portals through a single entry point. This network of integrations is known as a Value Added Network(VAN). Connecting with these networks that already have access to most ERPs would provide integration support to a large majority of ERPs with a single integration. This would quickly expose baseline services to a large number of EDI users, though may increase cost per EDI transaction due to VAN fees.
5.14.2020– Slack chat re: EDI discussion https://ethereum-baseline.slack.com/archives/CTBN1V18X/p1589380737499100
Agreed with comments re: VANs, it would get a great quick win,, however the overall transaction costs ends up being slightly higher because its now the cost of using the VAN + cost of baselining right? But it would definitely 'open the gate' to more potential users due to the VAN providing the existing EDI integrations between the company using baseline & other non baselined companies using traditional EDI methods.
I believe the ultimate end goal for baseline in regards to EDI messaging is to 'cut out' these third party VAN/ EDI gateways from the process, therefore significantly reducing the cost of EDI for businesses that typically use them. VANs typically charge for their service, eg $x per EDI message or y characters in a message, + yearly subscription fee, + any support fees + onboarding fees for new vendors/participants in the EDI network etc. For small business this may not add up to much, but for large vendors, retailers & participants in supply chains that do business with tens of thousands of others this adds up to a decent chunk of their yearly IT budgets. In terms of communication & standards, as stated there are multiple standards, there are also multiple transmission methods (AS2, FTP etc) as well as multiple b2b transmission methods, (direct/peer to peer, via an EDI gateway/Value Added Network).
As a solution EDI works well today & is tried & tested, but I believe the true value proposition for using baseline + mainnet here is to greatly minimize this cost by allowing vendors to securely send/receive EDI documents among themselves in a chosen standardized format, & without the need for using their respective VANs.
While I'm still coming up to speed in the technical aspects of what exactly 'baseline' does, here's how I can see a simple example working, ignoring any technical limitations, storage requirements or standardization considerations. Sorry if it's a bit long winded (might be better in a diagram)
Say Company A wants to order 500 blue flannel shirts from Company B:
1 - Company A raises PO (Purchase Order) for 500 shirts from Company B in their system of record (say Oracle JDE)
2 - Oracle JDE 'connector' takes PO message in Oracles format, formats it to standardized format. PO is baselined & transmitted to Company B
3 - Company B converts standard PO message to their System of Record (say SAP) required format & ingests. Company B is now in sync with Company A in regards to the PO.
4 - Company B ships the shirts & generates an ASN (Advanced Shipment Notice) EDI message from their Warehouse Management System), this is converted to standard format, then baselined & sent back to company A.
5 - Company A receives the ASN EDI message, converts back to their Oracle format & ingests. Company A & B now in sync in regards to the PO & ASN.
6 - The box of shirts shows up at Company & they follow their receiving procedure for receiving stock. Their Oracle system of record generates a Receipt/RECADV EDI message, which is once again converted to standard format, baselined & transmitted to company B. Company B receives, converts back to their required SAP format & ingests. Companies now in sync in regards to the PO & Receipt
7 - Company B generates an invoice from their SAP system, this is converted to standard format, baselined + transmitted to company A.
8 - Company A receives EDI Invoice, converts to their required Oracle EBS format & ingests
End result is both companies are now in sync in regards to the whole flow from PO to Invoice, no VAN or third party was involved, no EDI data stored on chain, only costs were GAS costs for baselining. And the mainnet acted as a common frame of reference & 'engine' or 'heart' for handling the logic of the entire flow in a safe & secure way. Also note that no acknowledgment EDI messages (eg Purchase Order Acknowledgment) were required between the companies thanks to the design philosophy of baseline, proofs & having a common frame of reference.
Obviously a solution like this has initial costs & complexities as already stated, & real savings aren't realized unless a 'network effects' takes place where multiple participants in the network start baselining. Eg if a business deals with 1000 vendors, but only 5 of them have their systems baselined, then you're still paying for a VAN for the other 99.5% of EDI messages.
Great points-- the transaction costs would almost definitely be higher. I see VAN connectivity as the initial MVP/pilot phase that could double as a pretty big exposure opportunity with the cherries on top of providing time to validate and iron out any wrinkles. Once validated in a VAN environment, development should start on more direct means of EDI interaction.
Agree with the example flow you gave. The baselining action could be bounced around to a couple different steps , but I don't think moving that around really changes that flow much. I'm working on a diagram of possible flows and would love input. Once it's finished I'll post it here--
We are already doing this in production with X12 and EDIFACT, we are working on US Customs right now, should be done within 45 days on their side.
Let us know what we can contribute, I also posted on the boards about porting from XML to a JSON schema and the difficulties in this. We have a fork of OpenAPI that can handle JSON hyperschema (not an official RFC yet).
Main issue is mapping and parser, we have a custom DSL (domain-specific language, more of a limited scripting language than anything) that can handle the mapping for X12 and EDIFACT. The issue is OFTP2 in EDIFACT for us right now, we are working on that support for in client as its a different system than AS2/AS4.
My comment on the baseline board's about XML to JSON: https://lists.oasis-open-projects.org/g/baseline/topic/the_issue_with_xml_and_json/74260417?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,74260417
Here is our repo for the OpenAPI compatible EDI messages: https://github.com/freight-chain/ediclear/tree/master/openapi/components
Here is a swagger interface: https://app.swaggerhub.com/apis/freight-chain/XEDI/2
Note it should be v2.0.0 of swagger/openapi, not v3.0.0
Great points-- the transaction costs would almost definitely be higher. I see VAN connectivity as the initial MVP/pilot phase that could double as a pretty big exposure opportunity with the cherries on top of providing time to validate and iron out any wrinkles. Once validated in a VAN environment, development should start on more direct means of EDI interaction.
Agree with the example flow you gave. The baselining action could be bounced around to a couple different steps , but I don't think moving that around really changes that flow much. I'm working on a diagram of possible flows and would love input. Once it's finished I'll post it here--
We are running Hyperledger Besu with an embedded in-protocol system for raw EDI transaction passage
there are additional issues not addressed we have found over the last year of doing this, that I can go over if interested
Agreed with comments re: VANs, it would get a great quick win,, however the overall transaction costs ends up being slightly higher because its now the cost of using the VAN + cost of baselining right? But it would definitely 'open the gate' to more potential users due to the VAN providing the existing EDI integrations between the company using baseline & other non baselined companies using traditional EDI methods.
I believe the ultimate end goal for baseline in regards to EDI messaging is to 'cut out' these third party VAN/ EDI gateways from the process, therefore significantly reducing the cost of EDI for businesses that typically use them. VANs typically charge for their service, eg $x per EDI message or y characters in a message, + yearly subscription fee, + any support fees + onboarding fees for new vendors/participants in the EDI network etc. For small business this may not add up to much, but for large vendors, retailers & participants in supply chains that do business with tens of thousands of others this adds up to a decent chunk of their yearly IT budgets. In terms of communication & standards, as stated there are multiple standards, there are also multiple transmission methods (AS2, FTP etc) as well as multiple b2b transmission methods, (direct/peer to peer, via an EDI gateway/Value Added Network).
As a solution EDI works well today & is tried & tested, but I believe the true value proposition for using baseline + mainnet here is to greatly minimize this cost by allowing vendors to securely send/receive EDI documents among themselves in a chosen standardized format, & without the need for using their respective VANs.
While I'm still coming up to speed in the technical aspects of what exactly 'baseline' does, here's how I can see a simple example working, ignoring any technical limitations, storage requirements or standardization considerations. Sorry if it's a bit long winded (might be better in a diagram)
Say Company A wants to order 500 blue flannel shirts from Company B:
1 - Company A raises PO (Purchase Order) for 500 shirts from Company B in their system of record (say Oracle JDE)
2 - Oracle JDE 'connector' takes PO message in Oracles format, formats it to standardized format. PO is baselined & transmitted to Company B
3 - Company B converts standard PO message to their System of Record (say SAP) required format & ingests. Company B is now in sync with Company A in regards to the PO.
4 - Company B ships the shirts & generates an ASN (Advanced Shipment Notice) EDI message from their Warehouse Management System), this is converted to standard format, then baselined & sent back to company A.
5 - Company A receives the ASN EDI message, converts back to their Oracle format & ingests. Company A & B now in sync in regards to the PO & ASN.
6 - The box of shirts shows up at Company & they follow their receiving procedure for receiving stock. Their Oracle system of record generates a Receipt/RECADV EDI message, which is once again converted to standard format, baselined & transmitted to company B. Company B receives, converts back to their required SAP format & ingests. Companies now in sync in regards to the PO & Receipt
7 - Company B generates an invoice from their SAP system, this is converted to standard format, baselined + transmitted to company A.
8 - Company A receives EDI Invoice, converts to their required Oracle EBS format & ingests
End result is both companies are now in sync in regards to the whole flow from PO to Invoice, no VAN or third party was involved, no EDI data stored on chain, only costs were GAS costs for baselining. And the mainnet acted as a common frame of reference & 'engine' or 'heart' for handling the logic of the entire flow in a safe & secure way. Also note that no acknowledgment EDI messages (eg Purchase Order Acknowledgment) were required between the companies thanks to the design philosophy of baseline, proofs & having a common frame of reference.
Obviously a solution like this has initial costs & complexities as already stated, & real savings aren't realized unless a 'network effects' takes place where multiple participants in the network start baselining. Eg if a business deals with 1000 vendors, but only 5 of them have their systems baselined, then you're still paying for a VAN for the other 99.5% of EDI messages.
This is for the most part correct, no VAN or 3rd Party would imply ad-hoc. In reality, large enterprises use solutions like kleinschmidt or blujay. here is a sample of data that a customer of ours released to us for usage publicly of an amendment process. This is the workflow process for if there is an issue with an invoice/bill of lading.
https://gist.github.com/sambacha/2cd1b4564d1796ae0b89519838d5f99b
Let me know if you have any questions
Here is an example from the Oracle side in your example from our gateway:
///
//
//
Field Description Category Rec Format Pos WidthStartRec.Qual. Interface Table Interface Column
///
RECORD 0010 (INI)
Common Key (Positions 1-91) 0010 Varchar2 91 1
Record Number 0010 Varchar2 4 92 Constant '0010'
Record Layout 0010 Varchar2 2 96 Constant 'CT'
Record Layout Qualifier 0010 Varchar2 3 98 Constant 'CTL'
Communication Method 0010 Varchar2 10 2 101 CT CTL
Test Indicator 0010 Varchar2 20 1 103 CT CTL
Document ID 0010 Varchar2 30 6 104 CT CTL Constant 'POI'
Document Type 0010 Varchar2 40 5 110 CT CTL
Document Purpose Code 0010 Varchar2 50 2 115 CT CTL
Document Code 0010 Varchar2 60 35 117 CT CTL
Trading Partner Translator Code 0010 Varchar2 70 30 152 CT CTL
Trading Partner Location Code 0010 Varchar2 80 35 182 CT CTL
Trading Partner Description 0010 Varchar2 90 74 217 CT CTL
Trading Partner Reference 1 0010 Varchar2 100 80 291 CT CTL
Trading Partner Reference 2 0010 Varchar2 110 80 371 CT CTL
Transaction Date/Time 0010 Date 120 15 451 CT CTL
Transaction Run ID 0010 Number 130 15 466 CT CTL
Transaction Control 1 (Inbound) 0010 Number 140 10 481 CT CTL
Transaction Control 2 (Inbound) 0010 Number 150 10 491 CT CTL
Transaction Control 3 (Inbound) 0010 Number 160 10 501 CT CTL
RECORD 1000 (INI)
Common Key (Positions 1-91) 1000 Varchar2 91 1
Record Number 1000 Varchar2 4 92 Constant '1000'
Record Layout 1000 Varchar2 2 96 Constant 'IV'
Record Layout Qualifier 1000 Varchar2 3 98 Constant 'IV1'
Invoice Number 1000 Varchar2 10 50 101 IV IV1 AP_INVOICE_INTERFACE INVOICE_NUM
Invoice Date 1000 Date 20 15 151 IV IV1 AP_INVOICE_INTERFACE INVOICE_DATE
Purchase Order 1000 Varchar2 30 20 166 IV IV1 AP_INVOICE_INTERFACE PO_NUMBER
Total Invoice Amount 1000 Varchar2 40 22 186 IV IV1 AP_INVOICE_INTERFACE INVOICE_AMOUNT
Invoice Type (Internal) INVOICE_TYPE 1000 Varchar2 50 25 208 IV IV1 AP_INVOICE_INTERFACE INVOICE_TYPE_LOOKUP_CODE
Invoice Type (ext1) 1000 Varchar2 60 25 233 IV IV1
Terms Name (Internal) PAYMENT_TERMS 1000 Varchar2 70 50 258 IV IV1 AP_INVOICE_INTERFACE TERMS_NAME
Terms Name (Ext 1) 1000 Varchar2 80 10 308 IV IV1
Terms Name (Ext 2) 1000 Varchar2 90 10 318 IV IV1
Terms Name (Ext 3) 1000 Varchar2 100 10 328 IV IV1
Terms Name (Ext 4) 1000 Varchar2 110 10 338 IV IV1
Terms Name (Ext 5) 1000 Varchar2 120 10 348 IV IV1
RECORD 1010 (INI)
Common Key (Positions 1-91) 1010 Varchar2 91 1
Record Number 1010 Varchar2 4 92 Constant '1010'
Record Layout 1010 Varchar2 2 96 Constant 'IV'
Record Layout Qualifier 1010 Varchar2 3 98 Constant 'IV2'
Invoice Currency Code (Internal) CURRENCY 1010 Varchar2 10 15 101 IV IV2 AP_INVOICE_INTERFACE INVOICE_CURRENCY_CODE
Invoice Currency Code (Ext1) 1010 Varchar2 20 5 116 IV IV2 AP_INVOICE_INTERFACE
Currency Exchange Rate 1010 Number 30 22 121 IV IV2 AP_INVOICE_INTERFACE EXCHANGE_RATE
Currency Exchange Date 1010 Date 40 15 143 IV IV2 AP_INVOICE_INTERFACE EXCHANGE_DATE
RECORD 1020 (INI)
Common Key (Positions 1-91) 1020 Varchar2 91 1
Record Number 1020 Varchar2 4 92 Constant '1020'
Record Layout 1020 Varchar2 2 96 Constant 'AD'
Record Layout Qualifier 1020 Varchar2 3 98 Constant 'VS1'
Vendor Site Code (Internal) VENDOR_SITE 1020 Varchar2 10 15 101 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_CODE
Vendor Site Code (Ext1) 1020 Varchar2 20 20 116 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_CODE_EXTERNAL
Vendor Site Customer Name 1020 Varchar2 30 60 136 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_NAME
Vendor Site Address 1 1020 Varchar2 40 35 196 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_ADDRESS1
Vendor Site Address 2 1020 Varchar2 50 35 231 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_ADDRESS2
Vendor Site Address 3 1020 Varchar2 60 35 266 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_ADDRESS3
Vendor Site Address 4 1020 Varchar2 70 35 301 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_ADDRESS4
Vendor Site City 1020 Varchar2 80 30 336 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_CITY
Vendor Site Postal Code 1020 Varchar2 90 15 366 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_POSTAL_CODE
Vendor Site Country (Internal) COUNTRY 1020 Varchar2 100 20 381 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_COUNTRY_INT
Vendor Site Country (Ext1) 1020 Varchar2 110 3 401 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_COUNTRY_EXT
Vendor Site State (Internal) STATE 1020 Varchar2 120 20 404 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_STATE_INT
Vendor Site State (Ext1) 1020 Varchar2 130 10 424 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_STATE_EXT
Vendor Site Province (Internal) PROVINCE 1020 Varchar2 140 20 434 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_PROVINCE_INT
Vendor Site Province (Ext1) 1020 Varchar2 150 10 454 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_PROVINCE_EXT
Vendor Site County 1020 Varchar2 160 43 469 AD VS1 AP_INVOICE_INTERFACE VENDOR_SITE_COUNTY
RECORD 2000 (INI)
Common Key (Positions 1-91) 2000 Varchar2 91 1
Record Number 2000 Varchar2 4 92 Constant '2000'
Record Layout 2000 Varchar2 2 96 Constant 'A1'
Record Layout Qualifier 2000 Varchar2 3 98 Constant 'IV1'
Invoice Flexfield Context 2000 Varchar2 10 30 101 A1 IV1 AP_INVOICE_INTERFACE ATTRIBUTE_CATEGORY
Invoice Flexfield 1 2000 Varchar2 20 80 131 A1 IV1 AP_INVOICE_INTERFACE ATTRIBUTE1
Invoice Flexfield 2 2000 Varchar2 30 80 211 A1 IV1 AP_INVOICE_INTERFACE ATTRIBUTE2
Invoice Flexfield 3 2000 Varchar2 40 80 291 A1 IV1 AP_INVOICE_INTERFACE ATTRIBUTE3
Invoice Flexfield 4 2000 Varchar2 50 80 371 A1 IV1 AP_INVOICE_INTERFACE ATTRIBUTE4
RECORD 2010 (INI)
Common Key (Positions 1-91) 2010 Varchar2 91 1
Record Number 2010 Varchar2 4 92 Constant '2010'
Record Layout 2010 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 2010 Varchar2 3 98 Constant 'IV2'
Invoice Flexfield 5 2010 Varchar2 10 80 101 A2 IV2 AP_INVOICE_INTERFACE ATTRIBUTE5
Invoice Flexfield 6 2010 Varchar2 20 80 181 A2 IV2 AP_INVOICE_INTERFACE ATTRIBUTE6
Invoice Flexfield 7 2010 Varchar2 30 80 261 A2 IV2 AP_INVOICE_INTERFACE ATTRIBUTE7
Invoice Flexfield 8 2010 Varchar2 40 80 341 A2 IV2 AP_INVOICE_INTERFACE ATTRIBUTE8
Invoice Flexfield 9 2010 Varchar2 50 80 421 A2 IV2 AP_INVOICE_INTERFACE ATTRIBUTE9
RECORD 2020 (INI)
Common Key (Positions 1-91) 2020 Varchar2 91 1
Record Number 2020 Varchar2 4 92 Constant '2020'
Record Layout 2020 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 2020 Varchar2 3 98 Constant 'IV3'
Invoice Flexfield 10 2020 Varchar2 10 80 101 A2 IV3 AP_INVOICE_INTERFACE ATTRIBUTE10
Invoice Flexfield 11 2020 Varchar2 20 80 181 A2 IV3 AP_INVOICE_INTERFACE ATTRIBUTE11
Invoice Flexfield 12 2020 Varchar2 30 80 261 A2 IV3 AP_INVOICE_INTERFACE ATTRIBUTE12
Invoice Flexfield 13 2020 Varchar2 40 80 341 A2 IV3 AP_INVOICE_INTERFACE ATTRIBUTE13
Invoice Flexfield 14 2020 Varchar2 50 80 421 A2 IV3 AP_INVOICE_INTERFACE ATTRIBUTE14
RECORD 2030 (INI)
Common Key (Positions 1-91) 2030 Varchar2 91 1
Record Number 2030 Varchar2 4 92 Constant '2030'
Record Layout 2030 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 2030 Varchar2 3 98 Constant 'IV4'
Invoice Flexfield 15 2030 Varchar2 10 80 101 A2 IV4 AP_INVOICE_INTERFACE ATTRIBUTE15
RECORD 2100 (INI)
Common Key (Positions 1-91) 2100 Varchar2 91 1
Record Number 2100 Varchar2 4 92 Constant '2100'
Record Layout 2100 Varchar2 2 96 Constant 'A1'
Record Layout Qualifier 2100 Varchar2 3 98 Constant 'HG1'
Invoice Global Flexfield Context 2100 Varchar2 10 80 101 A1 HG1 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE_CATEGORY
Invoice Global Flexfield 1 2100 Varchar2 20 80 181 A1 HG1 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE1
Invoice Global Flexfield 2 2100 Varchar2 30 80 261 A1 HG1 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE2
Invoice Global Flexfield 3 2100 Varchar2 40 80 341 A1 HG1 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE3
Invoice Global Flexfield 4 2100 Varchar2 50 80 421 A1 HG1 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE4
RECORD 2110 (INI)
Common Key (Positions 1-91) 2110 Varchar2 91 1
Record Number 2110 Varchar2 4 92 Constant '2110'
Record Layout 2110 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 2110 Varchar2 3 98 Constant 'HG2'
Invoice Global Flexfield 5 2110 Varchar2 10 80 101 A2 HG2 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE5
Invoice Global Flexfield 6 2110 Varchar2 20 80 181 A2 HG2 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE6
Invoice Global Flexfield 7 2110 Varchar2 30 80 261 A2 HG2 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE7
Invoice Global Flexfield 8 2110 Varchar2 40 80 341 A2 HG2 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE8
Invoice Global Flexfield 9 2110 Varchar2 50 80 421 A2 HG2 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE9
RECORD 2120 (INI)
Common Key (Positions 1-91) 2120 Varchar2 91 1
Record Number 2120 Varchar2 4 92 Constant '2120'
Record Layout 2120 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 2120 Varchar2 3 98 Constant 'HG3'
Invoice Global Flexfield 10 2120 Varchar2 10 80 101 A2 HG3 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE10
Invoice Global Flexfield 11 2120 Varchar2 20 80 181 A2 HG3 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE11
Invoice Global Flexfield 12 2120 Varchar2 30 80 261 A2 HG3 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE12
Invoice Global Flexfield 13 2120 Varchar2 40 80 341 A2 HG3 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE13
Invoice Global Flexfield 14 2120 Varchar2 50 80 421 A2 HG3 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE14
RECORD 2130 (INI)
Common Key (Positions 1-91) 2130 Varchar2 91 1
Record Number 2130 Varchar2 4 92 Constant '2130'
Record Layout 2130 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 2130 Varchar2 3 98 Constant 'HG4'
Invoice Global Flexfield 15 2130 Varchar2 10 80 101 A2 HG4 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE15
Invoice Global Flexfield 16 2130 Varchar2 20 80 181 A2 HG4 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE16
Invoice Global Flexfield 17 2130 Varchar2 30 80 261 A2 HG4 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE17
Invoice Global Flexfield 18 2130 Varchar2 40 80 341 A2 HG4 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE18
Invoice Global Flexfield 19 2130 Varchar2 50 80 421 A2 HG4 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE19
RECORD 2140 (INI)
Common Key (Positions 1-91) 2140 Varchar2 91 1
Record Number 2140 Varchar2 4 92 Constant '2140'
Record Layout 2140 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 2140 Varchar2 3 98 Constant 'HG5'
Invoice Global Flexfield 20 2140 Varchar2 10 80 101 A2 HG5 AP_INVOICE_INTERFACE GLOBAL_ATTRIBUTE20
RECORD 3000 (INI)
Common Key (Positions 1-91) 3000 Varchar2 91 1
Record Number 3000 Varchar2 4 92 Constant '3000'
Record Layout 3000 Varchar2 2 96 Constant 'IT'
Record Layout Qualifier 3000 Varchar2 3 98 Constant 'IT1'
Line Type 3000 Varchar2 10 25 101 IT IT1 AP_INVOICE_LINES_INTERFACELINE_TYPE_LOOKUP_CODE
Invoice Line Item Number 3000 Number 20 15 126 IT IT1 AP_INVOICE_LINES_INTERFACELINE_NUMBER
Purchase Order Line Item Number 3000 Number 30 22 141 IT IT1 AP_INVOICE_LINES_INTERFACEPO_LINE_NUMBER
Item (Buyer) (Internal) ITEM_PO 3000 Varchar2 40 55 163 IT IT1 AP_INVOICE_LINES_INTERFACEITEM
Item (Supplier) (Ext1) 3000 Varchar2 50 55 218 IT IT1 AP_INVOICE_LINES_INTERFACEITEM_EXT1
Item (Supplier) (Ext2) 3000 Varchar2 60 55 273 IT IT1 AP_INVOICE_LINES_INTERFACEITEM_EXT2
Quantity Invoiced 3000 Number 70 22 328 IT IT1 AP_INVOICE_LINES_INTERFACEQUANTITY_INVOICED
Purchase Order UOM (Internal) UOM 3000 Varchar2 80 25 350 IT IT1 AP_INVOICE_LINES_INTERFACEPO_UNIT_OF_MEASURE
Purchase Order UOM (Ext1) 3000 Varchar2 90 5 375 IT IT1
Unit Price 3000 Number 100 22 380 IT IT1 AP_INVOICE_LINES_INTERFACEUNIT_PRICE
Total Amount 3000 Number 110 22 402 IT IT1 AP_INVOICE_LINES_INTERFACEAMOUNT
Amount Includes Tax 3000 Varchar2 120 1 424 IT IT1 AP_INVOICE_LINES_INTERFACEAMOUNT_INCLUDES_TAX_FLAG
RECORD 3010 (INI)
Common Key (Positions 1-91) 3010 Varchar2 91 1
Record Number 3010 Varchar2 4 92 Constant '3010'
Record Layout 3010 Varchar2 2 96 Constant 'IT'
Record Layout Qualifier 3010 Varchar2 3 98 Constant 'IT2'
Purchase Order Number (Line Level) 3010 Varchar2 10 20 101
Item Description 3010 Varchar2 20 240 121 IT IT2 AP_INVOICE_LINES_INTERFACEITEM_DESCRIPTION
Tax Code (Internal) TAX_CODE 3010 Varchar2 30 15 361 IT IT2 AP_INVOICE_LINES_INTERFACETAX_CODE
Release Number 3010 Number 40 22 376 IT IT2 AP_INVOICE_LINES_INTERFACERELEASE_NUM
Account Segment 3010 Number 50 22 398 IT IT2 AP_INVOICE_LINES_INTERFACEACCOUNT_SEGMENT
RECORD 3020 (INI)
Common Key (Positions 1-91) 3020 Varchar2 91 1
Record Number 3020 Varchar2 4 92 Constant '3020'
Record Layout 3020 Varchar2 2 96 Constant 'IT'
Record Layout Qualifier 3020 Varchar2 3 98 Constant 'IT3'
Line Description 3020 Varchar2 10 240 101 IT IT3 AP_INVOICE_LINES_INTERFACEDESCRIPTION
RECORD 4000 (INI)
Common Key (Positions 1-91) 4000 Varchar2 91 1
Record Number 4000 Varchar2 4 92 Constant '4000'
Record Layout 4000 Varchar2 2 96 Constant 'A1'
Record Layout Qualifier 4000 Varchar2 3 98 Constant 'IT1'
Line Flexfield Context 4000 Varchar2 10 50 101 A1 IT1 AP_INVOICE_LINES_INTERFACEATTRIBUTE_CATEGORY
Line Flexfield 1 4000 Varchar2 20 80 151 A1 IT1 AP_INVOICE_LINES_INTERFACEATTRIBUTE1
Line Flexfield 2 4000 Varchar2 30 80 231 A1 IT1 AP_INVOICE_LINES_INTERFACEATTRIBUTE2
Line Flexfield 3 4000 Varchar2 40 80 311 A1 IT1 AP_INVOICE_LINES_INTERFACEATTRIBUTE3
Line Flexfield 4 4000 Varchar2 50 80 391 A1 IT1 AP_INVOICE_LINES_INTERFACEATTRIBUTE4
RECORD 4010 (INI)
Common Key (Positions 1-91) 4010 Varchar2 91 1
Record Number 4010 Varchar2 4 92 Constant '4010'
Record Layout 4010 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 4010 Varchar2 3 98 Constant 'IT2'
Line Flexfield 5 4010 Varchar2 10 50 101 A2 IT2 AP_INVOICE_LINES_INTERFACEATTRIBUTE5
Line Flexfield 6 4010 Varchar2 20 80 151 A2 IT2 AP_INVOICE_LINES_INTERFACEATTRIBUTE6
Line Flexfield 7 4010 Varchar2 30 80 231 A2 IT2 AP_INVOICE_LINES_INTERFACEATTRIBUTE7
Line Flexfield 8 4010 Varchar2 40 80 311 A2 IT2 AP_INVOICE_LINES_INTERFACEATTRIBUTE8
Line Flexfield 9 4010 Varchar2 50 80 391 A2 IT2 AP_INVOICE_LINES_INTERFACEATTRIBUTE9
RECORD 4020 (INI)
Common Key (Positions 1-91) 4020 Varchar2 91 1
Record Number 4020 Varchar2 4 92 Constant '4020'
Record Layout 4020 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 4020 Varchar2 3 98 Constant 'IT3'
Line Flexfield 10 4020 Varchar2 10 50 101 A2 IT3 AP_INVOICE_LINES_INTERFACEATTRIBUTE10
Line Flexfield 11 4020 Varchar2 20 80 151 A2 IT3 AP_INVOICE_LINES_INTERFACEATTRIBUTE11
Line Flexfield 12 4020 Varchar2 30 80 231 A2 IT3 AP_INVOICE_LINES_INTERFACEATTRIBUTE12
Line Flexfield 13 4020 Varchar2 40 80 311 A2 IT3 AP_INVOICE_LINES_INTERFACEATTRIBUTE13
Line Flexfield 14 4020 Varchar2 50 80 391 A2 IT3 AP_INVOICE_LINES_INTERFACEATTRIBUTE14
RECORD 4030 (INI) Varchar2
Common Key (Positions 1-91) 4030 Varchar2 91 1
Record Number 4030 Varchar2 4 92 Constant '4030'
Record Layout 4030 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 4030 Varchar2 3 98 Constant 'IT4'
Line Flexfield 15 4030 Varchar2 10 80 101 A2 IT4 AP_INVOICE_LINES_INTERFACEATTRIBUTE15
RECORD 4100 (INI)
Common Key (Positions 1-91) 4100 Varchar2 91 1
Record Number 4100 Varchar2 4 92 Constant '4100'
Record Layout 4100 Varchar2 2 96 Constant 'A1'
Record Layout Qualifier 4100 Varchar2 3 98 Constant 'IG1'
Line Global Flexfield Context 4100 Varchar2 10 50 101 A1 IG1 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE_CATEGORY
Line Global Flexfield 1 4100 Varchar2 20 80 151 A1 IG1 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE1
Line Global Flexfield 2 4100 Varchar2 30 80 231 A1 IG1 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE2
Line Global Flexfield 3 4100 Varchar2 40 80 311 A1 IG1 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE3
Line Global Flexfield 4 4100 Varchar2 50 80 391 A1 IG1 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE4
RECORD 4110 (INI)
Common Key (Positions 1-91) 4110 Varchar2 91 1
Record Number 4110 Varchar2 4 92 Constant '4110'
Record Layout 4110 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 4110 Varchar2 3 98 Constant 'IG2'
Line Global Flexfield 5 4110 Varchar2 10 50 101 A2 IG2 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE5
Line Global Flexfield 6 4110 Varchar2 20 80 151 A2 IG2 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE6
Line Global Flexfield 7 4110 Varchar2 30 80 231 A2 IG2 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE7
Line Global Flexfield 8 4110 Varchar2 40 80 311 A2 IG2 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE8
Line Global Flexfield 9 4110 Varchar2 50 80 391 A2 IG2 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE9
RECORD 4120 (INI)
Common Key (Positions 1-91) 4120 Varchar2 91 1
Record Number 4120 Varchar2 4 92 Constant '4120'
Record Layout 4120 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 4120 Varchar2 3 98 Constant 'IG3
Line Global Flexfield 10 4120 Varchar2 10 50 101 A2 IG3 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE10
Line Global Flexfield 11 4120 Varchar2 20 80 151 A2 IG3 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE11
Line Global Flexfield 12 4120 Varchar2 30 80 231 A2 IG3 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE12
Line Global Flexfield 13 4120 Varchar2 40 80 311 A2 IG3 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE13
Line Global Flexfield 14 4120 Varchar2 50 80 391 A2 IG3 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE14
RECORD 4130 (INI)
Common Key (Positions 1-91) 4130 Varchar2 91 1
Record Number 4130 Varchar2 4 92 Constant '4130'
Record Layout 4130 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 4130 Varchar2 3 98 Constant 'IG4'
Line Global Flexfield 15 4130 Varchar2 10 80 101 A2 IG4 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE15
Line Global Flexfield 16 4130 Varchar2 20 80 181 A2 IG4 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE16
Line Global Flexfield 17 4130 Varchar2 30 80 261 A2 IG4 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE17
Line Global Flexfield 18 4130 Varchar2 40 80 341 A2 IG4 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE18
Line Global Flexfield 19 4130 Varchar2 50 80 421 A2 IG4 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE19
RECORD 4140 (INI)
Common Key (Positions 1-91) 4140 Varchar2 91 1
Record Number 4140 Varchar2 4 92 Constant '4140
Record Layout 4140 Varchar2 2 96 Constant 'A2'
Record Layout Qualifier 4140 Varchar2 3 98 Constant 'IG5'
Line Global Flexfield 20 4140 Varchar2 10 80 101 A2 IG5 AP_INVOICE_LINES_INTERFACEGLOBAL_ATTRIBUTE20
We are running Hyperledger Besu with an embedded in-protocol system for raw EDI transaction passage there are additional issues not addressed we have found over the last year of doing this, that I can go over if interested
Would love to hear the issues you guys ran in to @sambaca --
There are a handful of open source EDI parsers under GPL here on Github - specifically:
Could be a good starting point for some of this, then checkpointed in via a smart contract via something like Engine @djones0 - Bots-EDI above parses EDIFACT, X12, Tradacoms and XML
@sambacha
We are already doing this in production with X12 and EDIFACT, we are working on US Customs right now, should be done within 45 days on their side.
Let us know what we can contribute, I also posted on the boards about porting from XML to a JSON schema and the difficulties in this. We have a fork of OpenAPI that can handle JSON hyperschema (not an official RFC yet).
Main issue is mapping and parser, we have a custom DSL (domain-specific language, more of a limited scripting language than anything) that can handle the mapping for X12 and EDIFACT. The issue is OFTP2 in EDIFACT for us right now, we are working on that support for in client as its a different system than AS2/AS4.
My comment on the baseline board's about XML to JSON: https://lists.oasis-open-projects.org/g/baseline/topic/the_issue_with_xml_and_json/74260417?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,74260417
Here is our repo for the OpenAPI compatible EDI messages: https://github.com/freight-chain/ediclear/tree/master/openapi/components
Here is a swagger interface: https://app.swaggerhub.com/apis/freight-chain/XEDI/2
Note it should be v2.0.0 of swagger/openapi, not v3.0.0
Using a fork of your existing parser is also an option vs. others - the only consideration was additional formats of EDI above as needed.
Since OFTP2 only works point-to-point (even with a VAN) that really isn't ideal here then - and since there are other methods on chain to encrypt and digitally sign that overlaps and would obsolete or replace OFTP2's signing mechanism. So is support for it necessary up front, or should we say we're leaving it behind.
Agree with @pappas999 that cutting the need for VANs is the ideal outcome here by baselining the interchange. Since we're not storing data or EDI docs on-chain, it's more the signing, validating, and identifying the endpoints that would be done on-chain vs storing and parsing off.
For any sort of PoC we can also use whichever storage medium is preferred, echoing above that something like IPFS really isn't necessary here at this point (maybe when we get to multiparty so there's a trusted decentralized storage point)
@johnmonarch yes, just know it's licensed under GPLv2
bots-edi library is not performant. problem with enterprise EDI messages is their file size
We are running Hyperledger Besu with an embedded in-protocol system for raw EDI transaction passage there are additional issues not addressed we have found over the last year of doing this, that I can go over if interested
Would love to hear the issues you guys ran in to @sambaca --
we can talk over this on slack or phone , its not terribly difficult, its just a lot of custom tooling at first
Python 2.0.x and 2.1.x have a fatal bug in that they are unable to read their own byte-compiled versions of certain unicode literals -- specifically those in the \ud800-\udfff range. I wanted to give you a specific reason why I dislike the bots EDI program, as there are issues with using UTF-8 (i.e. you can't).
edit granted, we are way past those versions for python, but the fact remains to assess most open-source implementations have significant issues when it goes to scale. Mission critical means over-deliver, and that's not going to happen with python.
Python 2.0.x and 2.1.x have a fatal bug in that they are unable to read their own byte-compiled versions of certain unicode literals -- specifically those in the \ud800-\udfff range. I wanted to give you a specific reason why I dislike the bots EDI program, as there are issues with using UTF-8 (i.e. you can't).
edit granted, we are way past those versions for python, but the fact remains to assess most open-source implementations have significant issues when it goes to scale. Mission critical means over-deliver, and that's not going to happen with python.
Why do you think this? Plenty of highly performant and available web architectures today use python. Application code is usually not the constraint in these types of systems as they are mostly network bound. Granted, string-processing as you guys are seeking to do is CPU intensive, but according to benchmarks I've seen, python is as good as and sometimes more performant than java when it comes to this. Yall should just benchmark the performance of the two libraries in consideration. And what does mission critical mean to you? Minimizing latency? Aside from huge differences, I think the choice should be determined by what minimizes development time, present and future.
We are not using Java for that specific task. Mission-critical means its our core business. From a dev standpoint, Java makes much more sense as there is much more tooling available, for both EDI and Ethereum/Blockchain usage than python, but I dont think that's the issue here, we should first set some time frames like you said, trust me I am always for a quicker go to market for a PoC/Validation purposes.
Minimizing development time also does mean picking the right tools, there are plenty of tools out there, I think we should first focus on what part of the stack is most important as it relates to EDI: is it the parser? the mapping? the message queue system? There are plenty of parts to pick, first we should settle on that then make the decision based on as you said timeframe, etc.
On Tue, Jun 2, 2020 at 9:27 AM vulfp notifications@github.com wrote:
Python 2.0.x and 2.1.x have a fatal bug in that they are unable to read their own byte-compiled versions of certain unicode literals -- specifically those in the \ud800-\udfff range. I wanted to give you a specific reason why I dislike the bots EDI program, as there are issues with using UTF-8 (i.e. you can't).
edit granted, we are way past those versions for python, but the fact remains to assess most open-source implementations have significant issues when it goes to scale. Mission critical means over-deliver, and that's not going to happen with python.
Why do you think this? Plenty of highly performant and available web architectures today use python. Application code is usually not the constraint in these types of systems as they are mostly network bound. Granted, string-processing as you guys are seeking to do is CPU intensive, but according to benchmarks I've seen, python is as good as and sometimes more performant than java when it comes to this. Yall should just benchmark the performance of the two libraries in consideration. And what does mission critical mean to you? Minimizing latency? Aside from huge differences, I think the choice should be determined by what minimizes development time, present and future.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://mailtrack.io/trace/link/bc1614b498deb2119c230f7729fed20d90c62a43?url=https%3A%2F%2Fgithub.com%2Fethereum-oasis%2Fbaseline-roadmap%2Fissues%2F51%23issuecomment-637664860&userId=4903935&signature=68ae1efbb9022fd0, or unsubscribe https://mailtrack.io/trace/link/16d15e7fc09349d5c4ba6c56134399c77ce4d214?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAH2D4LHRNHAGFEYKCGS6GLDRUUSANANCNFSM4M6AOZXQ&userId=4903935&signature=846ff15a49555c02 .
I have put up a preliminary repo of some EDI transactions, validation, rejection and some documentation on best-practices / etc here:
https://github.com/freight-chain/edi-baseline
The Readme has a diagram to better explain, but markdown format does not render it properly so here is a screenshot https://www.dropbox.com/s/9dcfre008n15s42/Screenshot%202020-06-09%2005.14.18.png?dl=0
This epic has some really great content. Shall we consider doing an online workshop to see if we can synthesize a distinct and do-able demonstration project?
Thanks for bringing me on, appreciate it! Will talk more in the upcoming meeting, will also have some questions about ZK and implementation as that is not my wheelhouse.
I think focusing on just the ISA and GS segments would be best, as it does not limit the PoC towards any specific industry per see while being the most useful, as ISA/GS relates to whom
should be the recipient.
We could have a registry contract with different companies registered on it or however you would best think to implement the user control.
Here are the data sets found in ISA and GS segments
Name | Type | Description | Notes |
---|---|---|---|
AuthorizationInformationQualifier1 | string | [optional] [default to null] | |
AuthorizationInformation2 | string | [optional] [default to null] | |
SecurityInformationQualifier3 | string | [optional] [default to null] | |
SecurityInformation4 | string | [optional] [default to null] | |
SenderIDQualifier5 | string | [optional] [default to null] | |
InterchangeSenderID6 | string | [optional] [default to null] | |
ReceiverIDQualifier7 | string | [optional] [default to null] | |
InterchangeReceiverID8 | string | [optional] [default to null] | |
InterchangeDate9 | string | [optional] [default to null] | |
InterchangeTime10 | string | [optional] [default to null] | |
InterchangeControlStandardsIdentifier11 | string | [optional] [default to null] | |
InterchangeControlVersionNumber12 | string | [optional] [default to null] | |
InterchangeControlNumber13 | string | [optional] [default to null] | |
AcknowledgementRequested14 | string | [optional] [default to null] | |
UsageIndicator15 | string | [optional] [default to null] | |
ComponentElementSeparator16 | string | [optional] [default to null] |
Name | Type | Description | Notes |
---|---|---|---|
CodeIdentifyingInformationType1 | string | [optional] [default to null] | |
SenderIDCode2 | string | [optional] [default to null] | |
ReceiverIDCode3 | string | [optional] [default to null] | |
Date4 | string | [optional] [default to null] | |
Time5 | string | [optional] [default to null] | |
GroupControlNumber6 | string | [optional] [default to null] | |
TransactionTypeCode7 | string | [optional] [default to null] | |
VersionAndRelease8 | string | [optional] [default to null] |
Are we ready to launch a specific bit of engineering work on this? We could review this on the SSC call tomorrow. Anyone in this epic that would like to discuss on the call (11am US-eastern every other monday) can DM me to get an invite.
Entirely possible, but we woud have to coordinate with some interested companies willing to disclose as I do not have disclosure agreements with any customers, I think @johnmonarch would be able to do that I am sure some of their trucking companies would be interested, and it would be easier to connect.
I also just opened a pull request with Github/Linguist to get official EDI support as a recognized file extension on Github, [see https://github.com/github/linguist/pull/4928]
@sambacha @djones0 @pappas999 @humbitious - as per the SSC call on 2/1/21 I'm checking on the status of this Epic. Let me know if you have any updates. I see there has been a lot of work put into this Epic. Should we keep this alive? If not, please close this Epic.
I have been busy wrapping up a venture round and should be done next week. We have been working on integrating a transaction service for mainnet. Will swing around tomorrow on slack and provide an update, thanks for reaching out.
On Wed, Feb 3, 2021 at 1:05 PM danielnorkin notifications@github.com wrote:
@sambacha https://github.com/sambacha @djones0 https://github.com/djones0 @pappas999 https://github.com/pappas999 @humbitious https://github.com/humbitious - as per the SSC call on 2/1/21 I'm checking on the status of this Epic. Let me know if you have any updates. I see there has been a lot of work put into this Epic. Should we keep this alive? If not, please close this Epic.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ethereum-oasis/baseline-roadmap/issues/51#issuecomment-772822509, or unsubscribe https://github.com/notifications/unsubscribe-auth/AH2D4LEN6BJPLEZIK4XGOD3S5G3DDANCNFSM4M6AOZXQ .
Electronic data interchange(EDI) enables paperless and automatic electronic communications between businesses by providing both standardized data structures and a defined data interchange process. Developed to replace paper-based communications such as purchase orders or invoices, EDI standards evolved to include other information used to increase operational efficiency and more quickly enable business decisions. Developed in the 1970’s; a dwindling talent pool, cheaper technologies, and high overhead have recently called into question the use of EDI, though no solution has yet to match the universal acceptance of EDI processes and standards.
The supply chain industry is the largest user of EDI processes and standards, with an estimated 59-85% of companies using EDI as their preferred means of data transfer. Other sectors have adopted industry-specific EDI standards that have gained universal use and further expanded the EDI ecosystem. The most widely used EDI standards in use by businesses today are X12- used in North American communications- and EDIFACT - used in international transactions. Subsets of these standards include the medical industries HIPPA EDI based on X12, and supply chains GS1 EDI based on EDIFACT. EDI documents in each standard are defined by transaction sets, each analogous to a single document built to serve a specific purpose.
In order to gain widespread acceptance and increase adoption in B2B applications, any solution meant to act as a common frame of reference in data interchange processes should be capable of interaction with EDI processes in standard formats X12 and EDIFACT.