<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Integration Engineer &#187; EDI</title>
	<atom:link href="http://www.theintegrationengineer.com/category/edi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.theintegrationengineer.com</link>
	<description>When it just has to work.</description>
	<lastBuildDate>Tue, 27 Jul 2010 17:33:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The EDI Primer</title>
		<link>http://www.theintegrationengineer.com/the-edi-primer/</link>
		<comments>http://www.theintegrationengineer.com/the-edi-primer/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 19:32:20 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Delimiters]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[EDI Primer]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[Envelope]]></category>
		<category><![CDATA[GS]]></category>
		<category><![CDATA[ISA]]></category>
		<category><![CDATA[ST]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[convention]]></category>
		<category><![CDATA[Element Notation]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[Enveloping]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[Good Form]]></category>
		<category><![CDATA[hierarchial]]></category>
		<category><![CDATA[loops]]></category>
		<category><![CDATA[notation]]></category>
		<category><![CDATA[Specification]]></category>
		<category><![CDATA[Unwrapped]]></category>
		<category><![CDATA[usage]]></category>
		<category><![CDATA[values]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[Wrapped]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=6</guid>
		<description><![CDATA[For those who may be unfamiliar with the EDI standard, and those who may have used EDI but have encountered a new, unfamiliar question.
This introduction aims at addressing the basic questions of convention and implementation of the EDI technology.  I have a list of topics, and hope that over time I can cover all of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-18" title="pipes" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/08/pipes.gif" alt="pipes The EDI Primer" width="76" height="95" />For those who may be unfamiliar with the EDI standard, and those who may have used EDI but have encountered a new, unfamiliar question.</p>
<p>This introduction aims at addressing the basic questions of convention and implementation of the EDI technology.  I have a list of topics, and hope that over time I can cover all of them.  I also hope that people reading here may have questions that I haven&#8217;t thought to write about.  Please let  me know what your questions are and I will see what I can do about providing answers.<span id="more-6"></span></p>
<ul>
<li><a href="http://www.theintegrationengineer.com/what-is-edi/">What is EDI?</a></li>
<li><a href="http://www.theintegrationengineer.com/the-parts-of-edi/">Parts of EDI</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-segments/">Segments</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-delimiters/">Delimiters</a></li>
<li>Conventions of EDI</li>
<li><a href="http://www.theintegrationengineer.com/why-are-there-more-than-one-version-of-edi/">Why are there more than one version of EDI?</a></li>
<li><a href="http://www.theintegrationengineer.com/usage-of-edi-specifications/">Standards and Usage</a></li>
<li>Encoded Values</li>
<li><a href="http://www.theintegrationengineer.com/edi-in-good-form/">EDI in Good Form</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-elements/">Element Notation</a></li>
<li><a href=" http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/">Wrapped and Unwrapped EDI</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping-part-one/">Enveloping Part One</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping-part-two-the-isa/">Enveloping Part Two &#8211; ISA<br />
</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping-part-three-the-gs">Enveloping Part Three &#8211; GS</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping…rt-four-the-st/">Enveloping Part Four &#8211; ST</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-repeated-segments/">Loops in EDI</a></li>
<li>Hierarchical Levels</li>
</ul>
<p>Of course understanding how EDI presents and represents data is the first step.  From here we may want to go to our Data Mapping Guide, or if we are familiar with mapping there are some examples in our mapping case studies of EDI to and from other formats.  Again, if you have an interesting problem or solution, I would love to here about it.  Please send it to<br />
<a href="mailto:roy@TheIntegrationEngineer.com">roy@TheIntegrationEngineer.com</a> and I will see what I can do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/the-edi-primer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Roll-Out an EDI Strategy</title>
		<link>http://www.theintegrationengineer.com/how-to-roll-out-an-edi-strategy/</link>
		<comments>http://www.theintegrationengineer.com/how-to-roll-out-an-edi-strategy/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 15:30:17 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[EDI Strategy]]></category>
		<category><![CDATA[plan]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[roll out]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1288</guid>
		<description><![CDATA[As with most strategies, we start out defining the goal, or the place we want to end up.  With an EDI strategy roll out, our destination is a reliable bidirectional communication between our organization and one or more trading partners.
With this as the abstract version of our goal.  We break the task into [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2008/11/edi_standard.jpg"><img class="alignleft size-thumbnail wp-image-52" title="EDI STandard" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/11/edi_standard-150x150.jpg" alt="edi standard 150x150 How to Roll Out an EDI Strategy" width="150" height="150" /></a>As with most strategies, we start out defining the goal, or the place we want to end up.  With an EDI strategy roll out, our destination is a reliable bidirectional communication between our organization and one or more trading partners.</p>
<p>With this as the abstract version of our goal.  We break the task into three sections. Data types that we will exchange both outbound and inbound.  What transport or connectivity solutions we will used to ensure a robust and reliable transmission and reception of the data.  And what data translation, storage and processing solutions we will employ.</p>
<p><span id="more-1288"></span><strong>Data Types</strong></p>
<p>Many people don&#8217;t think about this part very much because they have only dealt with EDI systems that are already in service or in the process of being launched.  By this point the types of data being passed between trading partners have already been decided.  So to begin this process we ask what type of business we are conducting.</p>
<p>If we are doing e-commerce, we are probably going to exchange orders, confirmations, invoices and ship notices.  If we are a retailer, we may be receiving catalog data, where if we are a vendor we will be transmitting it.  And so forth.</p>
<p>We can find out what document types to use in two easy ways.  First, any of our trading partners currently exchange EDI data with other parties, (like integrating with a vendor that has other customers doing EDI), we can ask for if we haven&#8217;t already received the EDI specifications that they use.  If we are setting up a new integration with a new trading partner with no EDI history, we will then need to look at the list of EDI document types and find the ones that will fill our needs of data exchange.  (All of the EDI document specifications have a name as well as a number.  For this exercise we will need to look at their name.)</p>
<p><strong>Transformation, Processing and Storage</strong></p>
<p>For data coming into the process for our trading partners is what I call &#8220;inbound&#8221; data.  And so of course data going out to a trading partner is called &#8220;outbound&#8221; data.  In either case we start the Transformation, processing and storage by identifying what our destination format, and location will be for the data.  Inbound data has the destination of whatever process or storage we are going to place it, and in the format that we need it in to process or store.  And outbound data has the destination of our connectivity solution to our trading partner and the format of the EDI document type that we have agreed to use.</p>
<p>This is called Target Based planning and it goes hand in hand with<a href="http://www.theintegrationengineer.com/data-mapping/"> Target Based Mapping</a>.  We plan by starting with where we want to end up, in the transformation, processing and storage of the data.  Then we work backword from that goal and create a way to get the data from where it is, to where we need it to be.</p>
<p>For instance if we have the destination of an EDI 850 on our AS2 connection, we start with a standards format of the 850 the trading partner can accept and the location or API that our AS2 connection needs us to use.  After we have that target defined, we map and plan out how to get our order data to that location, coming out of our database, ERP, e-commerce system or some file that we are processing.  (Possibly from a combination of these.)</p>
<p>And we do the opposite if we are processing an inbound 850, we start with the format and interface that we need to input an order into our system, and then build the process to get the information we need out of the 850 and trading partner database etc.</p>
<p><strong>Connectivity</strong></p>
<p>This is a critically important issue, that we will not go into detail here.  But you will want a connectivity solution that is reliable and provides you with a positive confirmation that a file has been received by the other partner and establishes <a href="http://www.theintegrationengineer.com/accountability-of-edi-transactions/">accountability </a>for the transaction, and a process for remediation if there is any dispute.  I will have to talk more about connectivity another time when I can go into greater detail.</p>
<p><strong>Summary</strong></p>
<p>Breaking big tasks like rolling out an EDI strategy can become very complex.  There are two secrets to being successful.  First, <a href="http://www.theintegrationengineer.com/break-big-tasks-in-to-threes/">break your big tasks into three pieces</a>; Inputs, Outputs and Processes.  The second secret is to begin with your end, or goal, or target.  And then work back from there.  Putting these two pieces of advice into use will make your EDI strategy more manageable and come of more smoothly.</p>
<p><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_c5bd6e46-e0fb-4818-9100-71aa784ab009"  WIDTH="500px" HEIGHT="175px"> <PARAM NAME="movie" VALUE="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=US&ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fc5bd6e46-e0fb-4818-9100-71aa784ab009&Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=US&ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fc5bd6e46-e0fb-4818-9100-71aa784ab009&Operation=GetDisplayTemplate" id="Player_c5bd6e46-e0fb-4818-9100-71aa784ab009" quality="high" bgcolor="#ffffff" name="Player_c5bd6e46-e0fb-4818-9100-71aa784ab009" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="175px" width="500px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=US&ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fc5bd6e46-e0fb-4818-9100-71aa784ab009&Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT></p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/how-to-roll-out-an-edi-strategy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Accountability of EDI Transactions</title>
		<link>http://www.theintegrationengineer.com/accountability-of-edi-transactions/</link>
		<comments>http://www.theintegrationengineer.com/accountability-of-edi-transactions/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 16:22:36 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[997]]></category>
		<category><![CDATA[accountability]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[gaurenteed delivery]]></category>
		<category><![CDATA[how to hold accountability of edi transactions with the supplier]]></category>
		<category><![CDATA[medical]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[Supply Chain]]></category>
		<category><![CDATA[transport]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1293</guid>
		<description><![CDATA[EDI and other data that is part of an e-commerce transaction needs to get to where it needs to go in a reliable way.  It needs to get there.  Get there once.  And be able to let the sender know if there was a problem with it, either not getting there, or being corrupted, in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2008/10/handshake.jpg"><img class="alignleft size-thumbnail wp-image-46" title="handshake" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/10/handshake-150x150.jpg" alt="handshake 150x150 Accountability of EDI Transactions" width="150" height="138" /></a>EDI and other data that is part of an e-commerce transaction needs to get to where it needs to go in a reliable way.  It needs to get there.  Get there once.  And be able to let the sender know if there was a problem with it, either not getting there, or being corrupted, in either case triggering a resend or some other remediation.</p>
<p><span id="more-1293"></span>Early in my integration career I was working on a medical supply chain.  Accuracy was important as you can imagine.  And there was a good deal of stress that we shared as we brought our products on-line and let them encounter real data.</p>
<p>We tried to ensure that the data that we sent to suppliers was received, and when things when wrong we were on the phone quickly asking for confirmation that orders were received.  As time when on we became better both at reliably getting data to the correct place, and in determining when problems where really problems.</p>
<blockquote><p>&#8220;There was one Vendor that sold capital equipments.  So they received few orders, but when they did, their orders were for a high dollar items.  They also kept shutting down the system that we sent orders to.  I think years went by where every order was accompanied by a phone call to their systems administrator asking that they re-boot their server.&#8221;</p></blockquote>
<p><strong>The EDI way</strong></p>
<p>The easiest and most EDI like way to establish accountability of EDI transactions is the use of a 997 transaction.  Basically a 997 works as an acknowledgment.  The name of this document actually is Functional Acknowledgment.  So we are acknowledging that a specific functional EDI component was received, and possibly how it was received.</p>
<p>If you are versed in the EDI enveloping levels you have already realized the  link of between the 997 and the <a href="http://www.theintegrationengineer.com/edi-enveloping-part-three-the-gs/">GS level of the EDI envelope</a>.  Also you may remember that you can request a 997 be returned for your transaction in the <a href="http://www.theintegrationengineer.com/edi-enveloping-part-two-the-isa/">ISA segment</a> in ISA_14.  But merely setting up your ISA to request a 997 does not actually force your trading partner to comply.   Your trading partner may not be able to, or may not wish to return a 997 for either business or technology reasons.</p>
<p>Assuming that you are able to get a 997 back.  Just receiving the 997 does not mean that all is well with your transaction.  The 997 is an EDI transaction.  It can contain data indicating just the success of receiving the data, or a few validation levels indicating data corruption in transit or rejection for business process reasons.</p>
<p><strong>The Transport Technology way</strong></p>
<p>Another way is to place the accountability on the transport of the message.  Using AS2 or other transport technologies that attempt to guarantee delivery of messages, it is possible to extend our reliable message solution to transactions of multiple types.  AS2 and other transport solutions return an MDN or message disposition notification letting the transporting party know that its message has been received.</p>
<p><strong>The BPM way</strong></p>
<p>In spite of the facility of EDI to process and utilize 997s and of AS2 to utilize MDNs, the most exciting method of assuring message delivery and accountability is utilizing business intelligence.  For me, I remember a system that we developed to help us with the health care supply chain.  We simple began tracking the response time that was typical for each of our supplier trading partners.  After gathering trending data, we applied alerts when responses were overdue by a specified degree of variance from the norm.</p>
<p>Since this process relied on the past 6 months of performance as the baseline, it was adaptive to changes in the vendor.  We could also manually change the amount and degree if we started getting false alerts.  In this way we had a way to react to failed transaction without requiring agreement and arrangements with the trading partner to confirm receipt or processing of transactions.</p>
<p><strong>The Business Agreement</strong></p>
<p>Even in cases where you have implemented a BPM process to alert to failed transactions, you have to have an agreement and arrangement with your trading partners that allow you to deal with failures in transmission and processing of your e-commerce transactions.  At a minimum this needs to include contact information for support teams on each side of the transaction.  It does no good to know there is a problem with a transaction but to be unable to solve the problem because the other party is unavailable.</p>
<p>In the end, it is what you have agreed with our trading partner that make the sender or receiver responsible for processing the transaction.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/accountability-of-edi-transactions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EDI Line Item Data</title>
		<link>http://www.theintegrationengineer.com/edi-line-item-data/</link>
		<comments>http://www.theintegrationengineer.com/edi-line-item-data/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 15:21:41 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Line Item]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[HL]]></category>
		<category><![CDATA[IT1]]></category>
		<category><![CDATA[Order]]></category>
		<category><![CDATA[PO1]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=724</guid>
		<description><![CDATA[What is a line item?
A line item is a group of data and its structure that is or can be repeated multiple times in its document.  It holds the data that is the focus of the document, and a part of a document or transaction that contains distinct part that can stand alone.  For instance, [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.theintegrationengineer.com/wp-content/uploads/2008/11/edi_standard.jpg"><img class="alignleft size-thumbnail wp-image-52" title="EDI STandard" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/11/edi_standard-150x150.jpg" alt="edi standard 150x150 EDI Line Item Data " width="150" height="150" /></a>What is a line item?</strong></p>
<p>A line item is a group of data and its structure that is or can be repeated multiple times in its document.  It holds the data that is the focus of the document, and a part of a document or transaction that contains distinct part that can stand alone.  For instance, an order that has two line items could be split into two orders that would be able to be filled separately.  It does not necessarily contain information that can be applied to a group of items, although sometimes this information is included.  This feeds into what type of data that a line item contains.</p>
<p><span id="more-724"></span></p>
<p><strong>What type of data does a line item contain contain?</strong></p>
<p>In a purchase order, or other commerce related document these pieces of data will be found in the line item:</p>
<ol>
<li>Purpose of line</li>
<li>Product or Service ID</li>
<li>Quantity</li>
<li>Unit of Measure</li>
<li>Price or Fee</li>
<li>Taxes</li>
<li>Special Handling</li>
<li>Descriptions</li>
</ol>
<p>Some additional data can be aggregated to the document level or published at the line item level;</p>
<ol>
<li>Ship to or Deliver to data.</li>
<li>Discounts</li>
<li>Shipping methods or tracking information</li>
</ol>
<p><strong>Where in EDI does this data go?</strong></p>
<p>For the most part, the PO1 segment and group contain the line item data.  There are a few transactions that use another segment.  The invoice for instance uses the IT1 segment.  Depending on the scope of our definition, an HL group could be a line item in some documents.</p>
<p>Line items are at the center of our transactions.  Purchase Orders, Invoices, and Catalogs would not be worth creating without the line items they contain.<br />
<object id="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400px" height="150px" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&amp;Operation=GetDisplayTemplate" /><param name="name" value="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" /><param name="align" value="middle" /><embed id="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" type="application/x-shockwave-flash" width="400px" height="150px" src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&amp;Operation=GetDisplayTemplate" align="middle" name="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" allowscriptaccess="always" bgcolor="#FFFFFF" quality="high"></embed></object> <noscript><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&#038;Operation=NoScript" mce_HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&amp;Operation=NoScript">Amazon.com Widgets</A></noscript></p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/edi-line-item-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Document Choreography of an EDI Purchase</title>
		<link>http://www.theintegrationengineer.com/document-choreography-of-an-edi-purchase/</link>
		<comments>http://www.theintegrationengineer.com/document-choreography-of-an-edi-purchase/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:36:20 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[810]]></category>
		<category><![CDATA[820]]></category>
		<category><![CDATA[850]]></category>
		<category><![CDATA[855]]></category>
		<category><![CDATA[856]]></category>
		<category><![CDATA[Choreography]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[document exchange]]></category>
		<category><![CDATA[document flow]]></category>
		<category><![CDATA[Trading Partner]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1033</guid>
		<description><![CDATA[
So it goes like this:
850 is a Purchase order, and is sent to the Vendor
855 is an Order Response, and is sent from the Vendor.  It confirms, updates or rejects each line, or the PO as a whole.
856 is the Ship Notice. and is sent from the Vendor.  It may contain one or more lines [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/02/Choreography.jpeg"><img class="alignnone size-full wp-image-1036" title="Choreography" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/02/Choreography.jpeg" alt=" Document Choreography of an EDI Purchase" width="458" height="330" /></a></p>
<p><span id="more-1033"></span>So it goes like this:</p>
<p>850 is a Purchase order, and is sent to the Vendor</p>
<p>855 is an Order Response, and is sent from the Vendor.  It confirms, updates or rejects each line, or the PO as a whole.</p>
<p>856 is the Ship Notice. and is sent from the Vendor.  It may contain one or more lines from one or more orders and can indicate shipment of partial lines from a PO.</p>
<p>810 is the Invoice, and is sent from the Vendor.  It contains one or more lines from one or more POs, but generally people keep these to only one PO.</p>
<p>820 is Remittance, and is sent to the Vendor.  It contains information relating to payment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/document-choreography-of-an-edi-purchase/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What is SEF?</title>
		<link>http://www.theintegrationengineer.com/what-is-sef/</link>
		<comments>http://www.theintegrationengineer.com/what-is-sef/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 14:35:54 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[SEF Standards]]></category>
		<category><![CDATA[Standard Exchange Format]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=318</guid>
		<description><![CDATA[Starting off work on my On-line Status Repository, one of the things that I will be starting with is uploading and downloading SEF file from a data repository.  SEF stand for Standards Exchange Format.  SEF files are repositories of standards information that can then be exchanged between people and applications to define the format of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-961" title="SEF_Matrix" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/11/SEF_Matrix.jpg" alt="SEF Matrix What is SEF?  " width="131" height="83" />Starting off work on my On-line Status Repository, one of the things that I will be starting with is uploading and downloading SEF file from a data repository.  SEF stand for Standards Exchange Format.  SEF files are repositories of standards information that can then be exchanged between people and applications to define the format of EDI documents.</p>
<p>If you have used a standards editor, you probably know what an SEF file is, or have used it.  Some applications and EAI even use SEF files as part of their document creation and validation processes.  It becomes useful to describe briefly what SEF files look like, and what type of information they contain.</p>
<p><span id="more-318"></span></p>
<p><strong>What is in there?</strong></p>
<p>If you are familiar with EDI, and have cracked open an SEF file with your standard text editor of choice, you will already know what I am about to say.  The contents of the SEF file don&#8217;t look that complex to someone who is used to and familiar with how various EDI files look.  For those that are not so brave, I will explain this painlessly.</p>
<p>First, the SEF file is really just a text file.  It can be edited by hand, but I don&#8217;t really recommend it.  (not because you can&#8217;t, but because it is tedious.)</p>
<p>Second, it contains its data in sections.  There is a section for doc types, segments, elements, and encoded data.  There is also a few housekeeping sections like version and name etc.</p>
<p><strong>What is an SEF file for?</strong></p>
<p>SEF stands for Standards Exchange Format.  This is literally a file format that was designed to contain information about EDI standards.  It was created so that a computer application could understand an EDI file.  It is used by some application like Standard Repositories and Standards Editors to allow us humans to deal with a standard like it was a text document.  While at the same time keeping a repository that can be used by an integration application to form and validate an EDI file.</p>
<p style="padding-left: 30px;">If you are familiar with the concept of metadata then an SEF file is the EDI standard&#8217;s metadata.  If you are not familiar with metadata, then skip this part.</p>
<p><strong>Do I need to know about SEF files and EDI?</strong></p>
<p>Nope.  SEF is only useful if you are exchanging standards using the format.  If your standard and usage is in the form of a PDF or a spreadsheet, that is fine.  Many people do just that.</p>
<p>For me, I need to know this because I am trying to build some Standard Repository tools, and want to use the SEF format to manage them.</p>
<p>And for those that want a deeper look, I will be following this article with some deeper and more detailed articles dealing with the internals of the SEF file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/what-is-sef/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usage of EDI specifications</title>
		<link>http://www.theintegrationengineer.com/usage-of-edi-specifications/</link>
		<comments>http://www.theintegrationengineer.com/usage-of-edi-specifications/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 15:54:48 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[integration plan]]></category>
		<category><![CDATA[Specification]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[usage]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=45</guid>
		<description><![CDATA[When two trading partners agree to send each other electronic documents.  And they begin to describe what EDI documents they will exchange and how the documents will flow, they should also exchange EDI specification documents.  EDI usage or specification documents describe what fields and what segments a trading partner will send or expect to convey [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-875" title="blue2_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/11/blue2_pzl.jpg" alt="blue2 pzl Usage of EDI specifications" width="192" height="145" />When two trading partners agree to send each other electronic documents.  And they begin to describe what EDI documents they will exchange and how the documents will flow, they should also exchange EDI specification documents.  EDI usage or specification documents describe what fields and what segments a trading partner will send or expect to convey the information necessary to complete a transaction.  It doesn&#8217;t matter if we are ordering widgets, or invoicing, or transmitting catalog data, or checking insurance claims eligibility, the EDI needs to contain the data that the two parties need to communicate.  To explain this, and document it to that both trading partners know what is expected, we create an EDI usage specification.</p>
<p><span id="more-45"></span></p>
<p><strong>EDI Specifications</strong></p>
<p>In the larger sense, the EDI specification is the set of rules that define each document type, the segments they contain, and the size and type of data in the elements.  When we talk about the EDI Standard Specification, we are talking about the whole set of valid EDI document types.  If something is valid EDI, then it complies with the EDI Standard Specification.  However, this large, all encompassing specification is not useful in coordinating the exchange of documents between two trading partners.</p>
<p><strong>What goes in an EDI Usage Specification?</strong></p>
<p>So we take EDI Standard Specification and we reduce it.  We remove the unused document types and the unused segments within the documents we will use.  And we even remove the unused elements and encoded values within the segments we will use.  At this point, we have created an EDI Usage Specification.  We can also add to the specification by including values that we need, like designating the an optional value or ID as required and specifying what type is should be.</p>
<p><strong>How is an EDI specification Used?</strong></p>
<p>Now that we have a usage specification we can use it to do to basic things.  First, it is the source of information for us to set-up our integration for our EDI document exchange.  And Second it is the format that we validate our EDI documents with to determine a valid transaction.</p>
<p>EDI Usage Specifications can be a source of data and integration documentation.  This can become extremely valuable when the choices and information about how your EDI interface works is recorded into the notes of the Usage Specification.</p>
<p>Beyond a visual validation of looking at the EDI file and comparing it with the specification, many times a specification can be found in the form of an SEF file.  The SEF file can be used in an EDI validation application.  This allows a potentially large and unwieldy EDI file to be scanned for compliance and accuracy.</p>
<p>There may be other uses, but these are the main two, integration data repository, tool for EDI validation.</p>
<p><strong>EDI Specification Examples:</strong></p>
<p>To walk through how a usage specification works, and is used, check out this review of <a href="http://www.theintegrationengineer.com/booknetcanada-real-life-standards-and-usage-spec/">BookNet Canada&#8217;s specification.</a></p>
<p>Then you can take a look at the <a href="http://www.macysnet.com/edi/">EDI specifications published by Macy&#8217;sNet</a> that they keep online to assist their trading partners in making and keeping effective integrations.</p>
<p>Sometimes we only use the EDI specification, they way we have always used them.  It can be instructive to browse the usage specifications of other companies.  We see what they remove, what they include, what comments they make, and what rules they document.  And seeing how others do things can help us to be more effective in how we use EDI specification documents.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/usage-of-edi-specifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Line Item Part Three, The ACK</title>
		<link>http://www.theintegrationengineer.com/line-item-part-three-the-ack/</link>
		<comments>http://www.theintegrationengineer.com/line-item-part-three-the-ack/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 17:03:57 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Line Item]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[ACK]]></category>
		<category><![CDATA[PO1]]></category>
		<category><![CDATA[Segment]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=831</guid>
		<description><![CDATA[ACK is an Acknowledgment segment.  It is commonly found on response transactions to Purchase Orders or 855.  It is one of the lines found in the PO1 loop or group.  As this line modifies the PO1 line data from the Purchase Order, what it can contain and how that data is handled is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-840" title="ACK_Block" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/ACK_Block.png" alt="ACK Block Line Item Part Three, The ACK" width="120" height="40" />ACK is an Acknowledgment segment.  It is commonly found on response transactions to Purchase Orders or 855.  It is one of the lines found in the PO1 loop or group.  As this line modifies the PO1 line data from the Purchase Order, what it can contain and how that data is handled is important for the stability of the supply chain integration.  For clarity, we are going to use the 4010 x12 standard.</p>
<p><span id="more-831"></span></p>
<p><strong>Parts of ACK</strong></p>
<p>Here is a diagram of a sample ACK segment:</p>
<p><strong><img class="alignnone size-full wp-image-844" title="ACK_Diagram" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/ACK_Diagram.png" alt="ACK Diagram Line Item Part Three, The ACK" width="629" height="304" /><br />
</strong></p>
<p>Like any other segment in EDI, the ACK segment is composed of elements.  Here is a list, element by element and what it contains.</p>
<table border="1" cellspacing="0" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_01</em></td>
<td>This is the Line Item Status Code.  This code can be the entire purpose of the ACK line if it indicates that the line is cancelled, or it can indicate that something has changed.  The Diagram above has a Status Code of &#8220;IP&#8221; indicating that the price from the Order has changed.  The ACK should then reflect the changed price here.  In the case of an 855 that indicates the part number has changed or substituted the status will be &#8220;IS&#8221; and the new part number will be listed in the Product or Service ID element.  The PO1 line that this ACK is a part of should contain the original part number, price, quantity, or whatever was on the order, and the ACK will contain the modification.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_02 </em></td>
<td>This is the quantity modified.  This is not required, but is very important.  If the order was for 10 items, and there is a change, substitution or delay in 5 of them, a PO1 group should contain 2 ACK lines one with the accepted status on the 5 that are ok, and another for the 5 that are</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_03 </em></td>
<td>This is the Unit of Measure.  It is a 2 character, Alpha-Numeric value.  It is also an encoded value.  Being “encoded” means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.When the ACK_02 and ACK_03 are used together, we can tell how much of something is being modified or acknowledged</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_04 </em></td>
<td>This is the date Qualifier.  This is not required, even if ACK_05 is present, this element may be empty.  When it is present, it is an encoded value that identifies what type of data is in the ACK_05.  In the case of our example, it is the PO date.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_05 </em></td>
<td>This is a Date element.  It is required if ACK_04 is populated.  The format is CCYYMMDD.  This element is always 8 characters long when it is populated.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_06 </em></td>
<td>This is a reference number.  I have never seen this used, but if you have a use for it, go ahead.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_07 </em></td>
<td>This is a Product or Service Qualifier.  This element is a 2 character, encoded value.  All of the “Qualifier” defined elements are encoded values.  This, again, means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.This qualifier defines what type of value is found in the next element, the ACK_08.  So if the ACK_07 has a “VC”, then the ACK_08 contains a Vendor’s Catalog Number.  (This means it is a part number as found in the Vendor Catalog.)</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_08 </em></td>
<td>This is a Product or Service ID.  It is Alpha-Numeric, and can be from 1 to 48 characters in length.  It is conditional with the ACK_07, if one is present, the other must be present.  This value is an identifier like a part number or other type of line item data.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>ACK_09 to ACK_26 </em></td>
<td>This pattern continues all way to <em>ACK_25 </em>and <em>ACK_26. </em>All of the segment pairs from ACK_07 to ACK_26 that have the same potential values for each pair.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top">ACK_27</td>
<td>This is Agency Qualifier Code.  It is an 2 character encoded value to designate what agency, state or entity is being referenced.  It is not required and I have never seen this used.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top">ACK_28</td>
<td>This is Source SubQualifier.  It is an 15 character Alpha-Numeric value that references the source table being used.  It is not required and I have never seen this used.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top">ACK_29</td>
<td>This is Industry Code.  It is an 30 character Alpha-Numeric value that references an industry code list.  It is not required and I have never seen this used.</td>
</tr>
</tbody>
</table>
<p><strong>Best Practices</strong></p>
<p>With the ACK the best practices are more in how to implement and what to expect.  So here are some things to remember when implementing this segment.</p>
<ol>
<li>An ACK is part of a PO1 line for a response to another PO1 line transaction.  This segment supplies a status, and can modify the line item contents.</li>
<li>There can be more than one ACK segment for a line item.  (4010 855s allow 104 repetitions of the ACK)</li>
<li>When an ACK explicitly changes the line item it can only change that one type.</li>
<li>There is a status called Accepted With Changes.  &#8220;AC&#8221;  For this, you will need to parse the ACK and see if any of the values have changed.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/line-item-part-three-the-ack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Line Item part two, IT1</title>
		<link>http://www.theintegrationengineer.com/line-item-part-two-it1/</link>
		<comments>http://www.theintegrationengineer.com/line-item-part-two-it1/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 14:56:23 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[IT1]]></category>
		<category><![CDATA[Line Item]]></category>
		<category><![CDATA[PO1]]></category>
		<category><![CDATA[Segment]]></category>
		<category><![CDATA[usage]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=726</guid>
		<description><![CDATA[Like the PO1 segment, IT1 is another line item segment used in the supply chain.  This is the line item segment found in invoices.  And since invoices make up an important part of a supply chain, I wanted to spend another article on this segment.  (IT1 is a group or loop so it is more [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-820" title="IT1_Block" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/IT1_Block.png" alt="IT1 Block Line Item part two, IT1" width="100" height="75" />Like the PO1 segment, IT1 is another line item segment used in the supply chain.  This is the line item segment found in invoices.  And since invoices make up an important part of a supply chain, I wanted to spend another article on this segment.  (IT1 is a <a href="../edi-repeated-segments/">group or loop</a> so it is more than just a segment.)  In this article we will discuss what data is found on the IT1 segment, and how it should be handled on both inbound and outbound document.  For clarity, we are going to use the 4010 x12 standard.</p>
<p><span id="more-726"></span></p>
<p><strong>Parts of IT1</strong></p>
<p>Here is a diagram of a sample IT1 segment.<strong><br />
</strong></p>
<p><strong><img class="alignnone size-full wp-image-825" title="IT1_Diagram" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/IT1_Diagram1.png" alt="IT1 Diagram1 Line Item part two, IT1" width="563" height="329" /><br />
</strong></p>
<p>Like any other segment in EDI, the IT1 segment is composed of elements.  Here is a list, element by element and what it contains.</p>
<table border="1" cellspacing="0" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_01</em></td>
<td>This is the Line Identifier, or Line Number.  This is a value that must be unique among the lines or IT1 segments of a Invoice.  There is no rule that these must be incrementing integers starting at 1.  But it is normal for these to be Numeric even if the type is Alpha-Numeric.  And it is general practice to have them reflect the Line Number of the Purchase Order they are invoicing.  Because this is some times not possible, the IT101 is optional.  All effort should be made to include it, but for lines that have no number from the PO associated with them, it is sometimes a good practice to just leave this blank.  When handling IT1 lines in invoices produced by others, it is essential that you verify the line item with a secondary value other than just the line number.  Using a part number or &#8220;Product or Service ID Value&#8221; to match against the line is a good best practice.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_02 </em></td>
<td>This is the quantity invoiced.  Most of the time people will just call this the quantity, but there are places and times, (like in an invoices) that quantity ordered and other quantities have a distinction.  The quantity is Numeric integers only.  Invoicing fractions of something is not supported.  The IT1_02 is conditional with the IT1_03 and IT1_04, if one exists all others are required.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_03 </em></td>
<td>This is the Unit of Measure.  It is a 2 character, Alpha-Numeric value.  It is also an encoded value.  Being “encoded” means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.When the IT1_02 and IT1_03 are used together, we can tell how much of something is being Invoiced.  1 CA (1 case) is not the same as Invoicing 1 EA (1 each) of an item.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_04 </em></td>
<td>This is the Price.  This is a Numeric, but can be decimal it is not strictly currency formatted, so it is possible to have item prices precise past $0.01.  This is the price of a single item, so we would multiply the IT1_02 and the IT1_04 to arrive at the cost of the line item.  (We might also have a additional charges or tax on a line item in another segment within the IT1 loop.  If this is the case, that cost would also be included in the cost total of the line item but not multiplied by the quantity.)</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_05 </em></td>
<td>This is the Price Basis Code.  This is optional, and most of the time is not used.  If it is used, it denotes where the IT1_04 price was derived from.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_06 </em></td>
<td>Is a Product or Service Qualifier.  This element is a 2 character, encoded value.  All of the “Qualifier” defined elements are encoded values.  This, again, means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.This qualifier defines what type of value is found in the next element, the IT1_07.  So if the IT1_06 has a “VC”, then the IT1_07 contains a Vendor’s Catalog Number.  (This means it is a part number as found in the Vendor Catalog.)</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_07 </em></td>
<td>This is a Product or Service ID.  It is Alpha-Numeric, and can be from 1 to 48 characters in length.  It is conditional with the IT1_06, if one is present, the other must be present.  This value is an identifier like a part number or other type of line item data.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_08 </em></td>
<td>The IT1_08 has the exact same definition as the IT1_06 with the exception that it defines the type of value is found in the IT1_09.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_09 </em></td>
<td>The IT1_09 has the exact same definition as the IT1_07.  This is a Product or Service ID.  It is Alpha-Numeric, and can be from 1 to 48 characters in length.  It is conditional with the IT1_08, if one is present, the other must be present.  This value is an identifier like a part number or other type of line item data.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>IT1_06 to IT1_25</em></td>
<td>This pattern continues all way to <em>IT1_24 </em>and <em>IT1_25. </em>All of the segment pairs from IT1_06 to IT1_25 that have the same potential values for each pair.  In earlier version of EDI, like 3010, the IT1 segment only had 23 elements.  Or in other words it was one Product or Service pair shorter that what we have in  4010.</td>
</tr>
</tbody>
</table>
<p>I wrote a section on Line Item Good Form and Best Practices in the article about <a href="http://www.theintegrationengineer.com/line-item-part-one-po1/">PO1 Line Items</a>.  Instead of repeating that I will just let you hop over there are read it.</p>
<p><strong>IT1 Loop Segments</strong></p>
<p>As we said in the beginning, the IT1 is a segment, and a <a href="../edi-repeated-segments/">loop/group.</a> And as you may have noticed, there is data that you may need that is not covered in the elements available in the IT1 Segment that belong to the line item.  Values like Tax information, found in the TAX and TXI segments.  These and other values are found on the line item, but are not on the IT1 segment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/line-item-part-two-it1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Line Item Part one, PO1</title>
		<link>http://www.theintegrationengineer.com/line-item-part-one-po1/</link>
		<comments>http://www.theintegrationengineer.com/line-item-part-one-po1/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 16:40:28 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[850]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[Line Item]]></category>
		<category><![CDATA[PO]]></category>
		<category><![CDATA[Purchase Order]]></category>
		<category><![CDATA[Segment]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=725</guid>
		<description><![CDATA[When we are dealing with supply chain or e-commerce related EDI, we probably will deal with line item data.  On a Purchase Order, (PO) or 850, the line item data is contained on the PO1 segment or the PO1 group.  (PO1 is a group or loop so it is more than just a segment.)  In [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-761" title="PO1_Block" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/PO1_Block.png" alt="PO1 Block Line Item Part one, PO1" width="101" height="54" />When we are dealing with supply chain or e-commerce related EDI, we probably will deal with line item data.  On a Purchase Order, (PO) or 850, the line item data is contained on the PO1 segment or the PO1 group.  (PO1 is a <a href="http://www.theintegrationengineer.com/edi-repeated-segments/">group or loop</a> so it is more than just a segment.)  In this article we will discuss what data is found on the PO1 segment, and how it should be handled on both inbound and outbound document.  For clarity, we are going to use the 4010 x12 standard.  The PO1 hasn&#8217;t changed in content for a while, but it has gotten longer, (you will see how this works when we talk about the PO1 elements).<span id="more-725"></span></p>
<p><strong>Parts of the PO1</strong></p>
<p>Here is a diagram of a sample PO1 segment:</p>
<p style="text-align: center;">
<p><img class="size-full wp-image-757 aligncenter" title="PO1_Diagram" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/PO1_Diagram.png" alt="PO1 Diagram Line Item Part one, PO1" width="566" height="319" /></p>
<p>Like any other segment in EDI, the PO1 segment is composed of elements.  Here is a list, element by element and what it contains.</p>
<table border="1" cellspacing="0" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_01</em></td>
<td>This is the Line Identifier, or Line Number.  This is a value that must be unique among the lines or PO1 segments of a purchase order.  There is no rule that these must be incrementing integers starting at 1.  But it is normal for these to be Numeric even if the type is Alpha-Numeric.  And it is general practice to have them increment in some fashion.  Thus having the first line item number as 1.  The second as 2, and so forth.  I have also seen the first line item being 10 , the second 20 and so forth.  As well as 001 and 002.</p>
<p>In any case, I would discourage using random numbers.  And I would discourage using Alpha-Numerics.  These may confuse your trading partners and cause them to have exceptions that there is no need to have.  On the other hand, when planning on handling line numbers from other parties, you should expect that they might not be using nice incrementing numbers.  This will prevent getting exceptions in your system when your trading partner does something odd.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_02 </em></td>
<td>This is the quantity ordered.  Most of the time people will just call this the quantity, but there are places and times, (like in order responses, invoices and shipping notices) that quantity ordered and other quantities have a distinction.  The quantity is Numeric integers only.  Ordering fractions of something is not supported.  The PO1_02 is conditional with the PO1_03, if one exists the other is required.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_03 </em></td>
<td>This is the Unit of Measure.  It is a 2 character, Alpha-Numeric value.  It is also an encoded value.  Being &#8220;encoded&#8221; means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.</p>
<p>When the PO1_02 and PO1_03 are used together, we can tell how much of something is being ordered.  1 CA (1 case) is not the same as ordering 1 EA (1 each) of an item.  Generally this is not a problem.  The data in the catalog is accurate.  When there is a problem, it is important to go back to the PO to find out exactly how many items were ordered and in what UOM.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_04 </em></td>
<td>This is the Price.  It is optional, but most of the time is present.  It is required if the PO1_05 is present.  This is a Numeric, but can be decimal  it is not strictly currency formatted, so it is possible to have item prices that precise past .01.  This is the price of a single item, so we would multiply the PO1_02 and the PO1_04 to arrive at the cost of the line item.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_05 </em></td>
<td>This is the Price Basis Code.  This is optional, and most of the time is not used.  If it is used, it denotes where the PO1_04 price was derived from.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_06 </em></td>
<td>Is a Product or Service Qualifier.  This element is a 2 character, encoded value.  All of the &#8220;Qualifier&#8221; defined elements are encoded values.  This, again, means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.</p>
<p>This qualifier defines what type of value is found in the next element, the PO1_07.  So if the PO1_06 has a &#8220;VC&#8221;, then the PO1_07 contains a Vendor&#8217;s Catalog Number.  (This means it is a part number as found in the Vendor Catalog.)</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_07 </em></td>
<td>This is a Product or Service ID.  It is Alpha-Numeric, and can be from 1 to 48 characters in length.  It is conditional with the PO1_06, if one is present, the other must be present.  This value is an identifier like a part number or other type of line item data.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_08 </em></td>
<td>The PO1_08 has the exact same definition as the PO1_06 with the exception that it defines the type of value is found in the PO1_09.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_09 </em></td>
<td>The PO1_09 has the exact same definition as the PO1_07.  This is a Product or Service ID.  It is Alpha-Numeric, and can be from 1 to 48 characters in length.  It is conditional with the PO1_08, if one is present, the other must be present.  This value is an identifier like a part number or other type of line item data.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top">PO1_06 to PO1_25</td>
<td>This pattern continues all way to <em>PO1_24 </em>and <em>PO1_25. </em>All of the segment pairs from PO1_06 t PO1_25 that have the same potential values for each pair.  In earlier version of EDI, like 3010, the PO1 segment only had 23 elements.  Or in other words it was one Product or Service pair shorter that what we have in  4010.</td>
</tr>
</tbody>
</table>
<p><strong>Good Form on PO1 line</strong></p>
<p><a href="http://www.theintegrationengineer.com/edi-in-good-form/">EDI in Good Form</a> is both style and best practice tips to avoid common exceptions.  Paying attention to good form tips and best practices helps you create an integration solution that is not only complies to the standard, but functions to help you and your trading partner have an unnecessary support burden due to the avoidable unexpected.</p>
<p>1.  It is bad from to have PO1 Product and Service pairs that are empty.  This relates to not having any trailing element delimiters.  It also goes along with not having empty pairs in the line with populated Product and Service element pairs following.  Thus it is best to build your mapping so that optional data doesn&#8217;t create empty elements when it opts out.</p>
<p>2.  When reading a PO1 line, it is best to assume that an expected Product and Service value could be in any pair.  So the map needs to walk down the pairs of elements until it finds the qualifier that indicates the value you are looking for.  This allows you to use the same input map with multiple EDI producing trading partners that may have interpreted the priority of data in different ways, and avoid exceptions.</p>
<p>3.  When producing EDI with a PO1 line, it is best to be as consistent as possible with your placement of the Product and Service data.  Create your logic and mapping so that mandatory data occurs early in the PO1 line, and optional data is moved to the end.  This will keep your required data from hopping around positionally.  This will help your trading partners that may not have had the foresight to follow Good Form Tip number 2 from having exceptions that slow down you process.</p>
<p><strong>PO1 Loop Segments</strong></p>
<p>As we said in the beginning, the PO1 is a segment, and a <a href="http://www.theintegrationengineer.com/edi-repeated-segments/">loop/group.</a> And as you may have noticed, there is data that you may need that is not covered in the elements available in the PO1 Segment that belong to the line item.  Values like Item Description, found in the PID segment. Or Tax information, found in the TAX and TXI segments.  These and other values are found on the line item, but are not on the PO1 segment.  We will have talk about some of these other segments and where to find other common data on another day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/line-item-part-one-po1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dot Net EDI framework</title>
		<link>http://www.theintegrationengineer.com/dot-net-edi-framework/</link>
		<comments>http://www.theintegrationengineer.com/dot-net-edi-framework/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 14:05:33 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tcl]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=375</guid>
		<description><![CDATA[A reader asked me a question, and I want to pass it along: &#8220;Do you know of any DOT NET frameworks for working with EDI?&#8221;
I didn&#8217;t, and a search of the web didn&#8217;t reveal anything that I could, in any confidence, recommend.  So I bring this question to you.  Do you know of a DOT [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-670" title="picture-frame" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/09/picture-frame.jpg" alt="picture frame Dot Net EDI framework" width="163" height="129" />A reader asked me a question, and I want to pass it along: &#8220;Do you know of any DOT NET frameworks for working with EDI?&#8221;</p>
<p>I didn&#8217;t, and a search of the web didn&#8217;t reveal anything that I could, in any confidence, recommend.  So I bring this question to you.  Do you know of a DOT NET framework that can be used for generating and or parsing EDI data?  If  you do, please comment below and let everyone know.  I will also pass it on to my friend who is looking for this.</p>
<p><strong><span id="more-375"></span></strong></p>
<p><strong>Development Frameworks</strong></p>
<p>The reader that I mentioned asked about Dot Net, but there are other times and environments where companies need to setup and EDI interface for their implementation.  I have spent most of my career working with enterprise level applications to handle the EDI transportation and transformation.  But I have seen a few times when it would have been useful to code an interface for and EDI file onto a stand alone application.  But I am not a developer in that sense.  Hoping that some of you may be, what are some EDI frameworks or modules etc that you have used or know about?  Java, C++, VB, or even perl, python, tcl, php, etc.  Please leave a comment with the framework or tool that you know of.  You can say a few words of eveluation if you can, or just leave a link to it and I will look them over and try to post about them over the next few weeks.</p>
<p><strong>EDI and B2B tools</strong></p>
<p>This brings up another point.  I have been trying to add to my Toolbox page as I have gone along.  I have posted a few tables and spreadsheets.  I also had a post about tools that an effective integration engineer should use.  I plan on posting more tools in my Toolbox too.  And I have a reall love of free tools.  But that is not the only kind of tool that I use, or will recomend.  If you know of a tool or technology that you think others should know about, or might help them, post a link, or drop me a line and I will add it to my Toolbox or write a post about it.  (or both)</p>
<p>So bring me your suggestions and I will share them with others and write an article about them when I can.</p>
<p>Thanks</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/dot-net-edi-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>BooknetCanada:  Real Life Standards and Usage Spec</title>
		<link>http://www.theintegrationengineer.com/booknetcanada-real-life-standards-and-usage-spec/</link>
		<comments>http://www.theintegrationengineer.com/booknetcanada-real-life-standards-and-usage-spec/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 14:32:31 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[BIG]]></category>
		<category><![CDATA[Good Form]]></category>
		<category><![CDATA[ISA]]></category>
		<category><![CDATA[Mapping Rules]]></category>
		<category><![CDATA[N1]]></category>
		<category><![CDATA[Usage Specification]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=230</guid>
		<description><![CDATA[From time to time I am asked if I know where such and such standard can be found.  This is more than idle curiosity.  People are trying to integrate, or update integrations, and the standard documentation is not available or has been lost.  From the perspective of an integration engineer, such standards are more precious [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-568" title="canada_flag_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/canada_flag_pzl.jpg" alt="canada flag pzl BooknetCanada:  Real Life Standards and Usage Spec" width="144" height="106" />From time to time I am asked if I know where such and such standard can be found.  This is more than idle curiosity.  People are trying to integrate, or update integrations, and the standard documentation is not available or has been lost.  From the perspective of an integration engineer, such standards are more precious than gold.  I keep a collection of the standards that I have used over the years, (something that I recommend) but what I really encourage is for companies to publish their standards in a publicly accessible location.  Booknet Canada is an example of a company that has done this.  Lets take a look and see what it says&#8230;.</p>
<p><span id="more-230"></span>Here is the<a href="http://www.booknetcanada.ca/mambo/images/media/edi/bnc-810-ratified-2005.pdf"> standard</a>, if you want to look at what they have published.  I will crop out a few pieces to talk about.  You might want to look over the full published standard.</p>
<p><strong>ISA</strong></p>
<p>The <a href="http://www.theintegrationengineer.com/edi-enveloping-part-two-the-isa/">ISA</a> segment contains some essential information that your trading partners will need.  Integrations of EDI rest on accurate trading partner values in the ISA values.  Sometimes even trading partners with existing connections will need to verify the ISA information and trading partner IDs.  For new trading partners, having this information available makes it possible for proactive partners to get a jump on integrations.</p>
<p style="text-align: center;"><img class="size-full wp-image-576 aligncenter" title="BookNet_ISA" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/BookNet_ISA.jpg" alt="BookNet ISA BooknetCanada:  Real Life Standards and Usage Spec" width="575" height="394" /></p>
<p>One thing of note here is their use of a sample segment to illustrate what the ISA segment will look like.  This can be very useful especially when dealing with trading partners that lack EDI experience.  Also useful when dealing with unusual segments or difficult to describe structures.</p>
<p>However, there is one caution.  I once had a trading partner hard code all of the sample segments into their map.  Thus we had an N1 with their ID and other information, and then an N1 with the same qualifiers but with the sample data from our specification.  This caused some problems for both of us.  Admittedly this only happened the once, but I was careful after that.  In any case, be sure that your examples are clearly marked as such to avoid repeating this mistake.</p>
<p><strong>BIG</strong></p>
<p>Every document has a beginning segment that is specific to that document type.  This segment will hold specific information that relates to that document type.</p>
<p style="text-align: center;"><img class="size-full wp-image-580 aligncenter" title="BookNet_BIG" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/BookNet_BIG.jpg" alt="BookNet BIG BooknetCanada:  Real Life Standards and Usage Spec" width="581" height="394" /></p>
<p style="text-align: left;">There are two things of note here.  First, is that they have listed the &#8220;not used&#8221; segments in their specification.  I don&#8217;t always to this myself but it can be done, and in this case illustrates one of the aspects of EDI <a href="http://www.theintegrationengineer.com/edi-in-good-form/">good form practices.</a> In the example segment they have none of the trailing elements that are not used, but they do have the one filed that is not used, but comes before a used element.  Thus illustrating the &#8220;no trailing delimiters&#8221; best practices rule.</p>
<p style="text-align: left;">The Second thing of note is their use of &#8220;Notes&#8221; to leave indication of a precedence rule in their mapping.  You can see here that they have a rule that uses the BIG_04 as the purchase order number only when there is no superseding PO number on the IT1 segment.  This type of notation is really helpful to trading partners and others in your own company down the road when problems happened and people need to discover what went wrong.</p>
<p><strong>N1</strong></p>
<p>N1 segments and N1 groups are important segments and can contain valuable data.  N1 segments are found in every EDI document that I have dealt with.</p>
<p style="text-align: left;"><img class="size-full wp-image-584 aligncenter" title="BookNet_N1" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/BookNet_N1.jpg" alt="BookNet N1 BooknetCanada:  Real Life Standards and Usage Spec" width="577" height="382" /></p>
<p style="text-align: left;">You&#8217;ll notice that there are three N1 segments listed in this Standards Document.  We know that the N1 can repeat, but this is not the way that is indicated.  This is one of the ways that the Standards Specification and the Usage Specification differ.  In the Standard, we talk about what may happen, or what may occur.  But in the Usage Specification, we talk about what should happen or what will occur.</p>
<p style="text-align: left;">All of the <a href="http://www.theintegrationengineer.com/edi-repeated-segments/">looping or repeating segment</a> values have not been shown in this document.  The looping of the IT1 and N1 still happen, but the looping is not pertinent to the Usage Specification here. (at least to BookNet)  They have also included a short list of the acceptable code qualifiers to be used in the N1_03.  And you will note that they have defined them so that trading partners won&#8217;t have to look them up, or guess, and have indicated their preference.</p>
<p><strong>Standards</strong></p>
<p>Crafting a Standard and Usage Specification can make a real difference in the ease of boarding trading partners.  It can make future trouble shooting easier for your, and for others both at your company, and at the trading partner&#8217;s.  And it can illustrate the look and feel of EDI to less EDI sophisticated individuals.</p>
<p>Now that you have looked over the BookNet specification, is there anything that you think they should have changed to add clarity?  Or are there any thing that you have learned that you want to add to your own Usage Specification documentation?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/booknetcanada-real-life-standards-and-usage-spec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EDI Standards Reference</title>
		<link>http://www.theintegrationengineer.com/edi-standards-reference/</link>
		<comments>http://www.theintegrationengineer.com/edi-standards-reference/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 16:25:23 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[ASC]]></category>
		<category><![CDATA[doctypes]]></category>
		<category><![CDATA[EDISIM]]></category>
		<category><![CDATA[Foresight]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[sample data]]></category>
		<category><![CDATA[SEF]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[X12]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=102</guid>
		<description><![CDATA[I have sitting on my desk, a very expensive book published by the ASC that contain the guidelines for the X12 3010 EDI standard.  I have rarely used them.  The EDI standards tool that I have used the most and can highly recommend is EDISIM from Foresight.  The last version that I used was version [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-450" title="DeskBooks_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/07/DeskBooks_pzl.jpg" alt="DeskBooks pzl EDI Standards Reference" width="113" height="128" />I have sitting on my desk, a very expensive book published by the ASC that contain the guidelines for the X12 3010 EDI standard.  I have rarely used them.  The EDI standards tool that I have used the most and can highly recommend is <a href="http://www.foresightcorp.com/products/edisim.htm">EDISIM from Foresight</a>.  The last version that I used was version 5.0 and they are on version 6.8 as I write this post.  But for a long time, Foresight has nailed the conceptualization of working with EDI standards.</p>
<p>One of the things that in invaluable is the ability to share your standard documentation both internally and externally.  EDISIM is a tool that has allowed me to do that.  They produce a very professional looking document for external consumption and the standard is exportable so that everyone using EDISIM can share the same standards file in a format called SEF.</p>
<p><span id="more-102"></span></p>
<p><strong> Features of a Good Standards Reference</strong></p>
<p><em>Navigate Standards</em> (multiple versions, doctypes, segments, etc)</p>
<p style="padding-left: 30px;">A Standards Reference needs to offer a navigation interface of some kind.  You need to be able to see the versions,  standards and document types.  You will also want to drill in and view the reference outside of the document types, and  browse the segments or data element definitions.  But at the core, you need to be able to see a graphical representation of the standard, view the format and see the structure of how data will be represented in the EDI format and document.</p>
<p><em>Edit Standards</em></p>
<p style="padding-left: 30px;">Just browsing the standard is not going to get the job done.  You need to be able to make alteration so that you don&#8217;t just have the high level X12 standard, like the book on my desk, but can make a standard that is your usage specification.  This means you will need to be able to do two operations on the standard.</p>
<p style="padding-left: 30px;">First you will need to make changes to what elements and segments are displayed, and make changes to the encoded values that these elements support.  Editing these structures will aid you when you use the standard to validate and check for compliance based on your usage specification, and when creating documents to share and publish.</p>
<p style="padding-left: 30px;">Second you will be able to add some of your business rules documentation to clarify the default definition of the standard.  This is especially useful if you need to pass some data that uses a mutually defined qualifier.  This lets you define what the &#8220;mutually defined&#8221; value should be.  This again helps when you publish and share your standard.</p>
<p><em>Export and Import</em> (Read SEF)</p>
<p style="padding-left: 30px;">All of the standards references that I have used had the ability to import and export a standard in an SEF file format.  SEF or &#8220;Standard Exchange Format&#8221; is a file that holds the standard dictionary and format for EDI files.  This is a nice way to  not only transfer and store the standard your company uses so that everyone has a copy of the same usage implementation.  But if no proprietary information is stored in the notes, it can be sent to trading partners out side of the company to aid in their integration efforts.  Any other export and import is a bonus, but SEF is a requirement..</p>
<p><em>Print</em> (export to doc or pdf, or printer)</p>
<p style="padding-left: 30px;">In spite of all this paperlessness, some times we still need to print things out.  Printing to a pdf or printing to paper is useful when sharing the standard and usage specification in a non-editable format so that others can view it, and make use of the information.  So for managers, or clients, or other parties that only need a viewable format to follow, this feature is a must have.</p>
<p><em>Save as editable file</em> (RTF or other.)</p>
<p style="padding-left: 30px;">Ok, just like printing, sometimes companies want all of their documentation to look the same.  To facilitate this, it is nice to be able to save the specification out to a rtf, or doc, and then add the company header, logo, watermark, etc.  This allows you to take the standards reference and really own the edits and notes that you have added.  For companies that have extensive documentation processes, this feature is a must have.</p>
<p><strong>Other Good Reference Features</strong></p>
<p><em>Validation</em></p>
<p style="padding-left: 30px;">Validation is not a feature of an EDI standards reference, but it is a good tool that sometimes comes with them.  Validation tools read and EDI file, and compare the contents with the standard.  They should then identify all of the errors they can see and report on them.</p>
<p style="padding-left: 30px;">In my experience validations may need to be run repeatedly as some errors in an EDI file will mask following errors.  For instance, if  the N1 segment is wrong, the validator may not be able to tell if all of the other lines in the N1 loop are valid.  So when I validate an EDI file, I correct the errors seen on the first pass and re-validate.  This has saved me from telling a trading partner to fix an issue, only to have to tell them about another issue later.  After all, we do want our integrations to go quickly.</p>
<p><em>Test Data</em></p>
<p style="padding-left: 30px;">Sometimes looking at the standard is just not enough to show us how things will look when formed into the document.  Seeing sample data is essential, and one of the first things I request at the beginning of any integration project.  A Standards Reference will sometimes have tools that will create a test data EDI file based on the standard.  This can be useful if you are working with a new document type that you haven&#8217;t encountered before and need to see how the standard looks in the formed document.</p>
<p><strong>Evaluation of Standards Reference Technologies</strong></p>
<p>Is there a feature that I have missed?  Please let me know.  Also,what EDI standards reference tools have you used?  What do you like or dislike about them?  How about any non-EDI specific tools?  Please let me know what you have used.  I would like to compile a list of tools and run some comparisons of what is out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/edi-standards-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Parts of EDI</title>
		<link>http://www.theintegrationengineer.com/the-parts-of-edi/</link>
		<comments>http://www.theintegrationengineer.com/the-parts-of-edi/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 16:12:40 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[doctype]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[EDI Primer]]></category>
		<category><![CDATA[element]]></category>
		<category><![CDATA[Envelope]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[parts]]></category>
		<category><![CDATA[Segment]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[structure]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=74</guid>
		<description><![CDATA[As part of our series &#8220;EDI Primer&#8221; we are going to go over the various parts of EDI. EDI is neither truly delimited, nor fixed width.  EDI has some fixed position components, and uses delimiters in a different way than a truly delimited file.  This post it going to overview some facts about EDI and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-427" title="carPart_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/07/carPart_pxl.jpg" alt="carPart_pzl" width="97" height="82" />As part of our series &#8220;<a href="http://www.theintegrationengineer.com/the-edi-primer/">EDI Primer</a>&#8221; we are going to go over the various parts of EDI. EDI is neither truly delimited, nor fixed width.  EDI has some fixed position components, and uses delimiters in a different way than a truly delimited file.  This post it going to overview some facts about EDI and its parts in an introductory fashion.  If you are unfamiliar with EDI, you might want to start with the post, &#8220;<a href="http://www.theintegrationengineer.com/what-is-edi/">What is EDI?</a>&#8221;</p>
<p><span id="more-74"></span></p>
<p><strong>Structure</strong></p>
<p>Two important concepts in EDI are not exactly parts.  They are the structures of Enveloping and Segments:</p>
<ul>
<li><em><span style="text-decoration: underline;"><a href="http://www.theintegrationengineer.com/edi-enveloping-part-one/">Enveloping</a></span></em>, as we discuss in another post, is a way for an EDI file to be self determining.  In the first segment of an EDI file, the <a href="http://www.theintegrationengineer.com/edi-enveloping…rt-two-the-isaedi-enveloping-part-two-the-isa/">ISA segment</a>, all of the information can be found to allow a system designed to interpret EDI to know where it is going, where it came from, what version it is, and what characters it is using as <a href="http://www.theintegrationengineer.com/edi-delimiters/">delimiters</a>.</li>
<li><em><span style="text-decoration: underline;"><a href="http://www.theintegrationengineer.com/edi-segments/">Segments</a></span></em> following this first segment are not fixed position.  White space is not used unless it is part of the data in the element.  Each segment has a header element that indicates the definition used for the rest of the data elements in that segment.  A segment may not need to use all of the possible elements in its definition.  When this is the case, the segment terminates with the segment delimiter or terminator.</li>
</ul>
<p><strong>The parts:</strong></p>
<ul>
<li><span style="text-decoration: underline;"><a href="http://www.theintegrationengineer.com/edi-is-a-standard/"><em>Standard</em></a></span> is a concept that has more than one meaning, There is the standard, that is the overall X12 compliance rules that regulate what is and may be an EDI document.  But there is also the concept of a specific use case, or usage specification.  Both of these are referred to as &#8216;Standards&#8217; but in this description of the parts of EDI, the standard is the first concept.  This is that when an EDI document is parsed, it must comply with this standard of segments, delimiters, and format, or it is rejected as being corrupt.</li>
<li><span style="text-decoration: underline;"><em>Version</em></span> is a sub-component of the standard.  It is declared in the ISA, and lets the parser know what version of the EDI standard will be contained inside the envelope.  This is  important as to format and structure of the data that has changed as technology and needs have matured.</li>
<li><span style="text-decoration: underline;"><em>Doctype</em></span> is not declared in the ISA, but is declared in the ST.  We may also know when we see the functional declaration in the GS.  The doctype determines which segments and in what order and structure may be present.  Not all EDI documents will need all segment types, so the doctype is very important when parsing the EDI file.  This is covered more in the ST Enveloping section.</li>
<li><span style="text-decoration: underline;"><em>Segments</em></span> are the most basic part that makes and EDI file and EDI file is the segment.  There is a more detailed discussion of the nuances of <a href="http://www.theintegrationengineer.com/edi-segments/">segments here</a>.  Segments are defined by their type, the characters that are located before the first delimiter in the segment.  And segments are terminated by a special delimiter called either the segment delimiter or segment terminator.</li>
<li><span style="text-decoration: underline;"><em>Element </em></span>exist inside the segment.  Elements hold the data.  Elements are separated by element delimiters.  On rare occasions some elements can have sub-elements.  There is a more detailed discussion of <a href="http://www.theintegrationengineer.com/edi-elements/">elements</a> here.</li>
<li><span style="text-decoration: underline;"><em>Envelope Segments</em></span> There are three pairs of special segments that must be found, and can only be found, in the enveloping structure.  Enveloping contains the origin and destination identification, as well as content definition identification values.  A more detailed discussion of <a href="http://www.theintegrationengineer.com/edi-enveloping-part-one/">enveloping</a> can be found here.</li>
<li><span style="text-decoration: underline;"><em>Files</em></span> are not really a part of EDI, but when EDI is formed, it is generally saved in a file.  The file can contain any mix of EDI document types and going to any number of destination.  Generally, for sanity&#8217;s sake, this is not done.  But there is nothing in the name of the EDI file that matters to the contents.  There is no really expected extention like &#8220;.edi&#8221; for instance, and there is not need for white space removal from the begining or end of an EDI file.</li>
<li><span style="text-decoration: underline;"><em>Documents</em></span> are another matter.  An EDI document is the sebments that reside within the ST envelope.  As such, they are a set of data that has a single format, (EDI standard), a single sender and single receiver.  Thus when an EDI doscument is discussed, we are really discussing the payload of the EDI envelopes.</li>
</ul>
<p>&#8211;</p>
<p>Looking for something else relating to EDI?  Check out the <a href="../the-edi-primer/">EDI Primer</a> post</p>
<p>Next in our series is a more in-depth look into <a href="http://www.theintegrationengineer.com/edi-segments/">Segments</a>.</p>
<p>&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/the-parts-of-edi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mapping Excersizes: EDI Invoice to Open Office Tables (part One)</title>
		<link>http://www.theintegrationengineer.com/mapping-excersizes-edi-invoice-to-open-office-tables-part-one/</link>
		<comments>http://www.theintegrationengineer.com/mapping-excersizes-edi-invoice-to-open-office-tables-part-one/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 17:30:24 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Mapping Exercise]]></category>
		<category><![CDATA[Invoice]]></category>
		<category><![CDATA[Open Office]]></category>
		<category><![CDATA[Paper Map]]></category>
		<category><![CDATA[target]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=37</guid>
		<description><![CDATA[This is a mapping exercise that will go through the process of creating a paper map, or mapping document.  We will start with an empty paper map that you can get here.  And we will end with a completed paper map document that documents what data from the source goes into what fields on the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-162" title="math" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/06/math.jpg" alt="math Mapping Excersizes: EDI Invoice to Open Office Tables (part One)" width="173" height="173" />This is a mapping exercise that will go through the process of creating a paper map, or mapping document.  We will start with an empty paper map that you can get <a href="http://www.theintegrationengineer.com/tool-box/#papermap">here</a>.  And we will end with a completed paper map document that documents what data from the source goes into what fields on the target.  This process will take more than one post, and I will link them together so that you can follow from one to the next.  Along the way, we will discuss the things that we are doing so that you can apply this technique in your mapping using the target and source in your own mapping tasks.<span id="more-37"></span></p>
<p><strong>The Target</strong></p>
<p>Open Office tables are divided into two tables. <em> Invoice</em> and <em>Invoice Details</em>.  This can be mapped in two ways; The first way is to map the data into one common format and rely on whatever ETL tool is importing the data to catch and split the data.  Second, a key can be acquired or constructed in the transformation and then the the data can be divided in to matching input formats.  Then when these inputs are moved into the database, they will relate to each other on this key.<a href="http://65e92d0uv89gefp2xcimn8dp2a.hop.clickbank.net/" target="_top"><img class="alignright size-full wp-image-116" title="ssn_databasejpeg" src="http://www.databasedesign-resource.com/images/NormalizationBook.jpg" alt="Paper Database" width="176" height="338" /></a></p>
<p>The choice of how you will do this will depend on your environment.  Questions like, &#8220;Will I have enough data to provide a unique key?&#8221;, or &#8220;is there a way to get a key with an API call or database query?&#8221;  The answers to these questions will determine what course you will take.</p>
<p>If the system ultimately receiving the data is asynchronous to the transformation, and you need to send the invoice and invoice details data separately, some care needs to be taken to ensure that the data can be related after it is separated.</p>
<p>So what data in the invoice can be used to tie the invoice to the invoice details?  The first answer might be, &#8220;The Invoice Number.&#8221;  But this number is not guaranteed to be unique across multiple vendors.  In EDI and cXML there are document unique identifiers.  Since we are using EDI, we can use a combination of the ISA Sender, Receiver, and Control number.  We will also want to use the GS control number, and ST control number in the event that more than one invoice is sent in a single <a href="http://www.theintegrationengineer.com/edi-enveloping-part-one/">envelope</a>.  And we might as well tack on the actual invoice number from the BIG_02.</p>
<p style="padding-left: 30px;"><em><strong>Database Tables</strong></em></p>
<table border="0" cellspacing="10">
<tbody>
<tr valign="top">
<td>
<p style="padding-left: 30px;">Invoice Table:</p>
</td>
<td>
<p style="padding-left: 30px;">Invoice Details Table:</p>
</td>
</tr>
<tr valign="top">
<td><img class="aligntopsize-full wp-image-54" title="Invoice Table Definition" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/11/invoicetabledef.jpg" alt="invoicetabledef Mapping Excersizes: EDI Invoice to Open Office Tables (part One)" width="203" height="205" /></td>
<td><img class="aligntop size-full wp-image-55" title="Invoice Details Table Definition" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/11/invoicedetailstabledef.jpg" alt="invoicedetailstabledef Mapping Excersizes: EDI Invoice to Open Office Tables (part One)" width="203" height="148" /></td>
</tr>
</tbody>
</table>
<p><strong>The Paper Map</strong></p>
<p>Now that we know what the target looks like, we fill out the target side of the paper map.  Since we will create two &#8220;files&#8221; in our output.  We are creating the Invoice and the InvoiceDetails file, but we can use one paper map for both, and will distinguish this with a bar between the two &#8220;files&#8221;.  (I am saying files, but this could be a queue, or a post, or an insert over odbc, etc)</p>
<p style="text-align: center;"><img class="size-full wp-image-181 aligncenter" title="invoiceMap_target" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/06/invoiceMap_target.png" alt="invoiceMap target Mapping Excersizes: EDI Invoice to Open Office Tables (part One)" width="281" height="435" /></p>
<p><strong>What&#8217;s Next</strong></p>
<p>Today we went through the process of identifying the target, and creating a paper map with the target format identified.  We talked about some of the strategy that we use in deciding what to map and how to map it.  Next time we will identify the source, and begin mapping data from the source.</p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/mapping-excersizes-edi-invoice-to-open-office-tables-part-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EDI Repeated Segments</title>
		<link>http://www.theintegrationengineer.com/edi-repeated-segments/</link>
		<comments>http://www.theintegrationengineer.com/edi-repeated-segments/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 17:13:59 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[context]]></category>
		<category><![CDATA[Envelope]]></category>
		<category><![CDATA[Group]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[Repeating]]></category>
		<category><![CDATA[Segment]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=133</guid>
		<description><![CDATA[In EDI there is a construct called a Loop.  But this is not like you think of a loop using an while  statement.  EDI is a file format, not a programming language.  When we speak of Loops in EDI, what we are really talking about is repeated structures, or segments.
EDI is not a flat file, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-134" title="loop" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/05/loop.jpg" alt="loop EDI Repeated Segments" width="102" height="102" />In EDI there is a construct called a Loop.  But this is not like you think of a loop using an while  statement.  EDI is a file format, not a programming language.  When we speak of Loops in EDI, what we are really talking about is repeated structures, or segments.</p>
<p>EDI is not a <a href="http://www.theintegrationengineer.com/flat-files/">flat file</a>, but it does have repeated lines or segments.  Some times this repetition comes in groups and sometimes its just a line that get repeated in part of the document.  Repeating structured data is fundamental to EDI, but can become difficult to interpret at times.  Understanding the types of repeating structures and when and where they may occur can save a lot of time.<span id="more-133"></span></p>
<h2>Repetition</h2>
<p>There are three kinds of loops/repeated segments; First there is a simple segment that can appear more than once.  Lets call this a Repeating Segment.  Second there is a group of segments that appear together, and may repeat.  Lets call this a Repeating Group.  And finally there is a segment or group that repeats within a beginning and ending loop envelope.  Lets call this a Repeating Envelop.</p>
<h2>Repeating Segments</h2>
<p>A repeating segment is pretty much just what it sounds like, a segment that may occur more than one time.  A good example of this would be the AMT segment.  The AMT is a segment that contains a monetary value.  The AMT_01 declares what type of value it is, and the AMT_02 has the amount of money.  In an EDI document like an invoice, we may need to have many values, subtotals, taxes, base price, and so on.  Having a repeating segment lets us put all of these values on their own independent segment to be interpreted and included as best fits the Trading Partners and the nature of the transaction.<a href="http://65e92d0uv89gefp2xcimn8dp2a.hop.clickbank.net/" target="_top"><img class="alignright size-full wp-image-116" title="ssn_databasejpeg" src="http://www.databasedesign-resource.com/images/NormalizationBook.jpg" alt="Paper Database" width="176" height="338" /></a></p>
<p>Here is an example of an <a href="http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/">unwrapped</a> N1 group where the N3 is repeated:</p>
<p>N1*AC*ARTHUR JONES*1*9012345918341*11*SE~<br />
N2*GEORGE WASHINGTON~<br />
N3*157 WEST 57TH STREET~<br />
N3*Suite 2001*5th Floor~<br />
N4*CINCINNATI*OH*43017~</p>
<p>When segments are repeatable, they are indicated with a &#8220;Max Use&#8221; value of greater than one in the <a href="http://www.theintegrationengineer.com/tool-box/#Spec">standards and usage specification</a>.  In the N1 Group, the N2 and N3 segments may have a max use of 2.</p>
<h2>Repeating Groups</h2>
<p>A repeating group is also what it sounds like.  It is a group of segments that work together and get repeated.  This loop is generally referred to by the primary segment.  This segment is required in this group.  This means that if this group occurs, this segment must also occur.</p>
<p>Most Repeating Groups are contextual.  This means that they are defined by the segments that surround them, and are terminated by the first segment that is not in the group, or starting the group again.  So a Repeating Group may repeat, but as soon as we move out of the segments in this group, we are done repeating it and move on to the next segments or groups defined in the standard.</p>
<p>The N1 is a good example.  The N1 group contains name, address and contact related information.  The only required segment is the N1.  Subordinate to the N1 (that contains name and such) is the N2 (that contains secondary name or attention type data.) Then comes the N3 (with the street address) and then the N4 (with the city, state, country, zip).</p>
<p>Not all groups have the same letters, like &#8216;N&#8217; and the N1 group is no different.  It also contains the PER segment that contains a persons name, and contact info like phone number or email.  Any PER that happens under an N1 is for that location.</p>
<p>In a document like an order you may want to have the address and contact for the shipper, the receiver, a biller, and a payer.  There are many possibilities, and these are all repeated in this group. Here is an example of an <a href="http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/">unwrapped</a> N1 group where the that is repeated:</p>
<p>N1*ST*MRS JONES*1*123456789*11*SE~<br />
N2*BEVERLY SIMPSON~<br />
N3*157 WEST 57TH STREET~<br />
N4*CINCINNATI*OH*43017~<br />
N1*SF*MR JONES*1*9012345918341*11*SE~<br />
N2*MAGGIE MCGILLICUTTY~<br />
N3*1001 MAPLE STREET~<br />
N4*PITTSBURGH*PA*86753~</p>
<p>Segments that are in a repeating group are listed as being in a Loop.  They may be repeated whenever the loop is repeated as specified in the <a href="http://www.theintegrationengineer.com/tool-box/#Spec">standards and usage specification</a>.  Thus you may have a max use of the N3 as 2, and an N1 Loop that has a max use of 1000.  So really you could see 2000 N3 segments, (2 for each of the 1000 possible N1 loops).</p>
<h2>Repeating Envelope</h2>
<p>A repeating envelope makes reference to EDI Enveloping.  Basically, the ISA-IEA envelope can contain one or more GS-GE envelopes.  And each GS-GE can contain more than one ST-SE envelope.  These levels of enveloping are covered in greater detail on the <a href="http://www.theintegrationengineer.com/edi-enveloping-part-one/">EDI Enveloping</a> page.  But it doesn&#8217;t have to stop there.  In the 3050 850 document there is a loop called LS-LE that contains terms.  This section happens inside the ST-SE.  And there is nothing to prevent other sub envelops from happening where there is a need.</p>
<p>What is fundamental to these types of loops is that they have a designated beginning, and ending.  They must have both.  Repeating Groups end when a beginning of a new iteration of the loop is found, or a segment that is not in the group is found.  This can leave some ambiguity if the standard is not followed closely.  The Repeating Envelope leaves nothing to chance and declares that it is done.</p>
<h2>A note about Required segments</h2>
<p>You may have noticed in the examples above or in the specification that we referenced that there are required segments in loops that are optional.  This is not a contradiction and I will explain this here.  A loop may be optional.  If it is, then it may be ommitted entirely from a document while still compliant with the standard.  If the loop is included, then the required and optional segments within that loop apply.  And they apply in each instance of the loop.  (We can&#8217;t have an second N1 loop unless we include the required N1 segment.)</p>
<p>Basically this is like scope in XML.  The requirements of mandatory or optional only apply within the scope of the loop where they are defines. in the same fashion as sub nodes in and XML hierarchy.</p>
<h2>Basic Fundamentals to Remember</h2>
<ol>
<li>Some segments can occur more than once, or can be repeated.</li>
<li>Some groups of segments can and often do occur more than once.  These are contextual and are terminated by segments after the group in the standard.</li>
<li>Some segments are encapsulated in beginning and ending segments like enveloping.  These segments can repeat, but only in another encapsulation or envelope.</li>
<li>The standard will indicate when repetition is allowed.</li>
</ol>
<p>&#8211;</p>
<p>Looking for something else relating to EDI?  Check out the <a href="http://www.theintegrationengineer.com/the-edi-primer/">EDI Primer</a> post</p>
<p>&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/edi-repeated-segments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EDI Enveloping Part Four (The ST)</title>
		<link>http://www.theintegrationengineer.com/edi-enveloping-part-four-the-st/</link>
		<comments>http://www.theintegrationengineer.com/edi-enveloping-part-four-the-st/#comments</comments>
		<pubDate>Tue, 26 May 2009 16:00:44 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Envelope]]></category>
		<category><![CDATA[ST]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[Control Numbers]]></category>
		<category><![CDATA[counter]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[Document Identifier]]></category>
		<category><![CDATA[Document Type]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[SE]]></category>
		<category><![CDATA[segment counter]]></category>
		<category><![CDATA[ST-SE]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=124</guid>
		<description><![CDATA[The 3rd layer of the EDI envelope is the ST segment.  The ST segment contains a Document Identifier, and a control number. The ST and its partner the SE segment define the beginning and ending of the Document.  The SE segment contains a counter of segments within the document, and the corresponding control number to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-129" title="scroll" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/05/scroll.jpg" alt="scroll EDI Enveloping Part Four (The ST)" width="76" height="101" />The 3rd layer of the EDI envelope is the ST segment.  The ST segment contains a Document Identifier, and a control number. The ST and its partner the SE segment define the beginning and ending of the Document.  The SE segment contains a counter of segments within the document, and the corresponding control number to the ST.  Relatively simple compared to the ISA and the GS.<span id="more-124"></span></p>
<p><strong>Document Identifier</strong></p>
<p>The document Identifier is not encoded.  That is to say, for an 850 the ST document ID is &#8220;850&#8243;.  For an 810, the Document Identifier is &#8220;810&#8243; and so on.  Thus if you open an EDI file, and don&#8217;t recognize the GS_01, skip to the ST_01 and it will tell you what standard you will need to find to read this document.</p>
<p>Good form would dictate that the GS_01 and the ST_01 would specify the same type of document.  The GS would specify it on a functional level, and the ST on the standard level.  Thus they would not be identical strings but would indeed convey the same message about what the document(s) would be.  Some EDI translator or processing software will validate this relationship and some may not.  But in the end consistency is the best policy.</p>
<p><strong>Control Number</strong></p>
<p>The control number is different for the ST than we saw in both the ISA and GS.  The ST_02 is a 3 to 9 digit number.  This means that it will start with 001 not 000000001.  Of course you can still use a 000000001 but don&#8217;t be surprised when you see less than 9 digits in the ST-SE control number.  Whichever you chose, you must do the same for both the ST and SE.</p>
<p>(Using 000 or 000000000 may be allowed, but is not recommended as any application that trims the zeroes will get an empty string and produce an error.  Be nice and only use values greater than zero.)</p>
<p><strong>Segment Counter</strong></p>
<p>The SE segment counter is the part of the ST-SE that gives people hand editing an EDI document the most trouble.  If the counter is inaccurate it indicates that the document is corrupted.  This should fail in all good translators as processing a corrupt EDI file is saying, &#8220;Its okay if we get bad data.&#8221;  This counter represents the number of segment between the ST and before the SE.</p>
<p>And it is just that simple.  Remember that you can have more than one GS-GE envelope inside an ISA-IEA, and you can have more than one ST-SE inside a GS-GE, but you can only have one document of one type in side a ST-SE envelope.</p>
<p>–</p>
<p>For an overview of Enveloping go <a href="http://www.theintegrationengineer.com/edi-enveloping-part-one/">here</a>.</p>
<p>Looking for the <a href="http://www.theintegrationengineer.com/edi-enveloping-part-two-the-isa/">ISA enveloping page</a>?</p>
<p>Looking for the  <a href="http://www.theintegrationengineer.com/edi-enveloping-part-three-the-gs">GS enveloping page?</a></p>
<p>Looking for something else relating to EDI?  Check out the <a href="http://www.theintegrationengineer.com/the-edi-primer/">EDI Primer</a> post</p>
<p><object id="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400px" height="150px" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&amp;Operation=GetDisplayTemplate" /><param name="name" value="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" /><param name="align" value="middle" /><embed id="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" type="application/x-shockwave-flash" width="400px" height="150px" src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&amp;Operation=GetDisplayTemplate" align="middle" name="Player_b2b49725-0564-4e90-a2d5-2f349cb25499" allowscriptaccess="always" bgcolor="#FFFFFF" quality="high"></embed></object> <noscript><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&#038;Operation=NoScript" mce_HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Ftheinteengi-20%2F8010%2Fb2b49725-0564-4e90-a2d5-2f349cb25499&amp;Operation=NoScript">Amazon.com Widgets</A></noscript></p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/edi-enveloping-part-four-the-st/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EDI:  Wrapped and Unwrapped</title>
		<link>http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/</link>
		<comments>http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/#comments</comments>
		<pubDate>Mon, 18 May 2009 16:00:14 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[Flat File]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[MS word]]></category>
		<category><![CDATA[new line]]></category>
		<category><![CDATA[newline]]></category>
		<category><![CDATA[search and replace]]></category>
		<category><![CDATA[substitution]]></category>
		<category><![CDATA[unwrap]]></category>
		<category><![CDATA[Unwrapped]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[wrap]]></category>
		<category><![CDATA[Wrapped]]></category>
		<category><![CDATA[\n]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=126</guid>
		<description><![CDATA[EDI in its proper form is wrapped.  This means that there is nothing between the segment terminator and the beginning of the next segment.  Sometimes this is hard to read, for humans anyway.  And at those times people will unwrap the EDI so that it looks more like a flat file.  This is not hard [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-127" title="emptywrapper" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/05/emptywrapper.jpg" alt="emptywrapper EDI:  Wrapped and Unwrapped" width="96" height="96" />EDI in its proper form is wrapped.  This means that there is nothing between the segment terminator and the beginning of the next <a href="http://www.theintegrationengineer.com/edi-segments/">segment</a>.  Sometimes this is hard to read, for humans anyway.  And at those times people will unwrap the EDI so that it looks more like a flat file.  This is not hard to do, and is useful for debugging and trouble shooting processes.  A good parser or validator should be able to read either file.<span id="more-126"></span></p>
<p><strong>Wrapped</strong></p>
<p>As I said wrapped EDI has nothing between the segment terminator and the next segment, in this format;</p>
<p style="text-align: center;">SEG|||~SEG||||||~</p>
<p>and so on.  Wrapped EDI looks like this:</p>
<p>ISA*00*          *00*          *01*9012345720000  *01*9088877320000  *090508*1459*U*00200*000000001*0*T*:~GS*PO*901234572000*908887732000*090508*1459*1*T*004010~ST*850*0001~BEG*01*BK*99AKDF9DAL393*39483920193843*20090508*AN3920943*AC*IBM*02*AE*02*BA~DTM*002*20090508*1615*CT*CM*DATE TIME PERIOD~N1*AC*ARTHUR JONES*1*9012345918341*11*SE~N2*MAGGIE MCGILLICUTTY*BEVERLY SIMPSON~N3*PO BOX 123*157 WEST 57TH STREET~N4*CINCINNATI*OH*43017*US*IP*02535~PER*AC*ARTHUR JONES*TE*(614)555-1212*TE*(614)555-1212*TE*(614)555-1212*ADDL CONTACT DESC~PO1*AAA849*100*DP*100.00*PD*AB*ASSEMBLY*BL*BRAND OR LABEL*ON*CUST12345*AB*ASSEMBLY*BL*BRAND OR LABEL*ON*CUST12345*AB*ASSEMBLY*BL*BRAND OR LABEL*ON*CUST12345*AB*ASSEMBLY~PID*F*BC*AX*UNSCENTED*GENERAL PURPOSE*BS*SUBQUALIFIER*N*ENG~CTT*10*855*12345678*HB*40*QD*GENERAL PURPOSE~SE*12*0001~GE*1*1~IEA*1*000000001~</p>
<p><strong>Unwrapped</strong></p>
<p>When we unwrap the EDI, we don&#8217;t just place any character between the segment terminator and the next segment, we place a carriage return and line feed.  This makes all of the segments appear to be justified like separate lines of a text file.  Thus the format is changed in this manner;</p>
<p style="text-align: center;">SEG|||~</p>
<p style="text-align: center;">SEG||||||~</p>
<p style="text-align: left;">and so on.  Unwrapped EDI looks like this:</p>
<p style="text-align: left;">ISA*00*          *00*          *01*9012345720000  *01*9088877320000  *090508*1459*U*00200*000000001*0*T*:~<br />
GS*PO*901234572000*908887732000*090508*1459*1*T*004010~<br />
ST*850*0001~<br />
BEG*01*BK*99AKDF9DAL393*39483920193843*20090508*AN3920943*AC*IBM*02*AE*02*BA~<br />
DTM*002*20090508*1615*CT*CM*DATE TIME PERIOD~<br />
N1*AC*ARTHUR JONES*1*9012345918341*11*SE~<br />
N2*MAGGIE MCGILLICUTTY*BEVERLY SIMPSON~<br />
N3*PO BOX 123*157 WEST 57TH STREET~<br />
N4*CINCINNATI*OH*43017*US*IP*02535~<br />
PER*AC*ARTHUR JONES*TE*(614)555-1212*TE*(614)555-1212*TE*(614)555-1212*ADDL CONTACT DESC~<br />
PO1*AAA849*100*DP*100.00*PD*AB*ASSEMBLY*BL*BRAND OR LABEL*ON*CUST12345*AB*ASSEMBLY*BL*BRAND OR LABEL*ON*CUST12345*AB*ASSEMBLY*BL*BRAND OR LABEL*ON*CUST12345*AB*ASSEMBLY~<br />
PID*F*BC*AX*UNSCENTED*GENERAL PURPOSE*BS*SUBQUALIFIER*N*ENG~<br />
CTT*10*855*12345678*HB*40*QD*GENERAL PURPOSE~<br />
SE*12*0001~<br />
GE*1*1~<br />
IEA*1*000000001~</p>
<p style="text-align: left;"><strong>Converting from Wrapped to Unwrapped and back</strong></p>
<p style="text-align: left;">When you need to do this, you need to do this fast, not manually.  Sure the manual way works with small files, but if you are trying to edit a big invoice or order, you will want to do something snappier than walking through the file segment at a time.  Here are two ways to do it with common tools.</p>
<p style="text-align: left;"><em><strong>VI</strong></em></p>
<p style="text-align: left;">To unwrap:</p>
<ol>
<li>open the file.  Type &#8220;vi [file name]&#8220;</li>
<li>Hit &#8220;:&#8221; to get the command prompt</li>
<li>Type &#8220;%&#8221; to do a every line replace. (may not be needed as this is wrapped, but it doesn&#8217;t hurt.)</li>
<li>Type &#8220;s&#8221; for a substitution.</li>
<li>Type &#8220;/&#8221; to begin the string to find.  (you may need to escape characters like ~ and | with a \.  I will show this in the example)</li>
<li>Type the delimiter to be replaced.</li>
<li>Type &#8220;/&#8221; to begin the replaced string (again with the possible need to escape characters.)</li>
<li>Type the delimiter again, as we don&#8217;t want to lose it, then follow it will a [crtl]+v and [crtl]+m</li>
<li>Type &#8220;/&#8221; to end the substitution</li>
<li>Type &#8220;g&#8221; to make it global or indicating all of the instances not just the first one.</li>
</ol>
<p style="text-align: left;">It looks like this:  &#8220;%s/[delimiter]/[delimiter]^M/g&#8221;</p>
<p style="text-align: left;">Put another way, here is what I typed for our example:  &#8220;%s/\~/\~^M/g&#8221;  (notice that I am escaping the ~ with a \)</p>
<p style="text-align: left;">To re-wrap:</p>
<ol>
<li>open the file.  Type &#8220;vi [file name]&#8220;</li>
<li>Hit &#8220;:&#8221; to get the command prompt</li>
<li>Type &#8220;%&#8221; to do a every line replace. (may not be needed as this is wrapped, but it doesn&#8217;t hurt.)</li>
<li>Type &#8220;s&#8221; for a substitution.</li>
<li>Type &#8220;/&#8221; to begin the string to find.  (you may need to escape characters like ~ and | with a \.  I will show this in the example)</li>
<li>Type &#8220;\n&#8221; to designate the newlines.</li>
<li>Type &#8220;/&#8221; to begin the replaced string (again with the possible need to escape characters.)</li>
<li>Type &#8220;//&#8221; to begin and end the substitution.</li>
<li>Type &#8220;g&#8221; so that it will get any multiples of the newline.</li>
</ol>
<p style="text-align: left;">It looks like this: &#8220;%s/\n//g&#8221;</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;"><em><strong>MS Word</strong></em></p>
<p style="text-align: left;">To Unwrap:</p>
<ol>
<li>Open file.</li>
<li>Select Edit&gt;Replace or press [ctrl]+h</li>
<li>In the &#8220;Find what&#8221; field insert the delimiter.</li>
<li>In the &#8220;Replace with&#8221; field insert the delimiter, and then click on the &#8220;More&#8221; button on the bottom of the control.</li>
<li>In more, there is another button called &#8220;Special&#8221;  Click on this button and select &#8220;Manual Line Break&#8221;</li>
<li>Click replace all and the EDI will unwrap.</li>
</ol>
<p>To re-wrap:</p>
<ol>
<li>Open file.</li>
<li>Select Edit&gt;Replace or press [ctrl]+h</li>
<li>In the &#8220;Find what&#8221; field click on the &#8220;More&#8221; button on the bottom of the control.</li>
<li>In more, there is another button called &#8220;Special&#8221;  Click on this button and select &#8220;Manual Line Break&#8221;</li>
<li>Don&#8217;t put anything in the  &#8220;Replace with&#8221; field.</li>
<li>Click replace all and the EDI will re-wrap.</li>
</ol>
<p><em><strong>Other Tools:</strong></em></p>
<p>There are lots of other tools that can do the search and replace with newlines, these are only two ways.  If you have one that you would like to share, please let me know.</p>
<p>&#8212;</p>
<p>Looking for something else relating to EDI?  Try <a href="ttp://www.theintegrationengineer.com/the-edi-primer/">here</a>.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EDI Elements</title>
		<link>http://www.theintegrationengineer.com/edi-elements/</link>
		<comments>http://www.theintegrationengineer.com/edi-elements/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 16:44:18 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[data type]]></category>
		<category><![CDATA[Delimited]]></category>
		<category><![CDATA[element]]></category>
		<category><![CDATA[Element Notation]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=59</guid>
		<description><![CDATA[What is an Element?
In the context of delimited data files, an element is the contents between two delimiters.  Like in a spreadsheet, the element is the contents of a cell.  In EDI, we have delimited segments, and just like a delimited file, the contents between the delimiters is the element.
So in this segment &#8220;PO1*1*8*EA*10**SW*H11510.REF*CT*089480-00-B-0336~&#8221;, the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-61" title="Element" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/12/atomic_particle.png" alt="Element" width="99" height="95" /><strong>What is an Element?</strong></p>
<p>In the context of delimited data files, an element is the contents between two delimiters.  Like in a spreadsheet, the element is the contents of a cell.  In EDI, we have delimited segments, and just like a delimited file, the contents between the delimiters is the element.</p>
<p>So in this segment &#8220;PO1*1*8*EA*10**SW*H11510.REF*CT*089480-00-B-0336~&#8221;, the 5th element or PO1_04 is &#8220;10&#8243;, while the 6th element or PO1_05 is empty.</p>
<p><em>Empty elements are <a href="http://www.theintegrationengineer.com/the-nature-of-null">not necessarily null</a>.  Calling something null when the data type is know like an empty element can cause some data theory debates.  I don&#8217;t want to start one here, but may write about that philosophical discussion at a later time.</em></p>
<p><span id="more-59"></span></p>
<p><strong>What types of elements are there?</strong></p>
<p><img class="alignright size-full wp-image-85" title="Type" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/01/typeset.jpg" alt="typeset EDI Elements" width="114" height="85" />What we are really talking about is the data type.  Each element in an EDI file has a specific data type defined.  Part Numbers are Alpha-Numeric which means that they may contain letters in the alphabet, and number in any mixture.  Where a price is not just a number, but is a currency.  Letters are not acceptable in the price field, so one can&#8217;t populate it with &#8220;N/A&#8221; in any case.</p>
<p>I won&#8217;t describe all of the data types here.  That is a discussion for some other time.  Most of the time these are fairly easy to work with, especially when you have samples to work from.  But there is another type of element.  This is the encoded value element.  This element does still contain a value, but it is in a code.</p>
<p>UOM or Unit Of Measure is the easiest to relate to, as it deals with something physical.  In the PO1 segment above, we find the UOM in the PO1_03 element.  In this case it means &#8220;each&#8221;  and by putting &#8220;EA&#8221; in this position we don&#8217;t have to type out &#8220;each&#8221; every time we just us EA as the abbreviation for this.</p>
<p>Why do we do this?  Well as I said the UOM is the easiest encoded element.  Some of the other encoded elements that are available define larger concepts.  Also, by having an encoded element, the EDI standard constrains the data to a rational type of data.</p>
<p>For instance, if you have an order response, we don&#8217;t want to have to process a free form response, we want to know if the product is accepted, back ordered or canceled.  And I want to know this in the same way for everyone.</p>
<p><strong>What is Element Notation?</strong></p>
<p><img class="alignleft size-full wp-image-86" title="actuarial_notation" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/01/actuarial_notation.jpg" alt="actuarial notation EDI Elements" width="72" height="53" />Elements are contained in segments.  The segment is referred to by the characters that preceded the first delimiter.  Each element in the segment has the name of the segment followed by its position in the segment.  Sometimes these are not separated, or they are separated by a space or underscore.  The position of the element is 0 based counting.  This means that the first position, the position preceding the first delimiter where the name of the segment is found, is position 0.</p>
<p>Thus in this segment, &#8220;N1^ST^Bill&#8217;s Grill^01^123456789~&#8221;, the N1 is N1_00.  I prefer the underscore to the space or no delimiter format for clarity.  But they are all used, so this would be the same as N101 and N1 01.  We use a two digit position designator even for positions less than 10 for clarity as well.  If there are any segments that develop more than 99 positions, there won&#8217;t be many.  And even fewer will ever be used.  And we don&#8217;t reduce it to just one digit, as N11 might actually exist, and that could cause confusion.</p>
<p>Now back to our example;  N1_01 is &#8220;ST&#8221;.  N1_02 is &#8220;Bill&#8217;s Grill&#8221; as so forth.</p>
<p>An example of how this is used is first found in our mapping rules that we need to write down.  And then in our notes and documentation.  If you wanted to say, &#8220;Whenever we have a ship to address for &#8216;Bill&#8217;s Grill&#8217; we need to used the Duns number of &#8216;123456789&#8242;.&#8221;  We could say , &#8220;When N1_01 = &#8216;ST&#8217; and N1_02 = &#8216;Bill&#8217;s Grill&#8217; then N1_03 = &#8216;01&#8242; and N1_04 = &#8216;123456789&#8242;.&#8221;  This way we are not leaving anything open to interpretation and clarity is our friend when writing rules for mapping and forming data.</p>
<p>You will see this used extensively in the mapping exercises here, and once you get the hang of using Element Notation, you will never write it any other way.</p>
<p>–</p>
<p>Looking for something else relating to EDI?  Check out the <a href="../the-edi-primer/">EDI Primer</a> post</p>
<p>–</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/edi-elements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flat Files</title>
		<link>http://www.theintegrationengineer.com/flat-files/</link>
		<comments>http://www.theintegrationengineer.com/flat-files/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 18:38:47 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Delimiters]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[Character Delimited]]></category>
		<category><![CDATA[Comma Delimited]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[Data Export]]></category>
		<category><![CDATA[Data Import]]></category>
		<category><![CDATA[delimiter]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Fixed Position]]></category>
		<category><![CDATA[Fixed Width Files]]></category>
		<category><![CDATA[Space]]></category>
		<category><![CDATA[spreadsheet]]></category>
		<category><![CDATA[White Space]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=5</guid>
		<description><![CDATA[What is a flat file?
Files are called &#8220;Flat Files&#8221; when they contain a single data structure.  Generally this structure is the column and row structure like a spreadsheet or table, but a file in binary or encrypted with a single encryption key could also be called a flat file.  Files that are not flat; marked [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-75" title="Flat File" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/01/flatfile.jpg" alt="flatfile Flat Files" width="160" height="120" /><strong>What is a flat file?</strong></p>
<p>Files are called &#8220;Flat Files&#8221; when they contain a single data structure.  Generally this structure is the column and row structure like a spreadsheet or table, but a file in binary or encrypted with a single encryption key could also be called a flat file.  Files that are not flat; marked up files like XML or HTML, <a href="http://www.theintegrationengineer.com/what-is-edi/">EDI </a>files, other formats like HL7 or SEF files and others.  Here I am going to briefly discuss two flat file types; Delimited Files, and Fixed Width Files.<span id="more-5"></span></p>
<p><strong>What is a Delimited File?</strong></p>
<p>Ok, to describe it briefly, a delimited file is a file where the data is organized in rows and columns.  Each row has a set of data, and each column has a type of data.  If it sounds like I am describing a spreadsheet, you are right on the money.  To make the column, each row has the columns separated with a character called a delimiter.  See the example below.</p>
<p><img class="aligncenter size-full wp-image-72" title="Illustration of Delimited Data" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/01/delimitedillustration.jpg" alt="delimitedillustration Flat Files" width="554" height="128" /></p>
<p>Tables of data and spreadsheets are both similar to a delimited file in the way they organize data.  In the delimited file all of the empty space, or white space is removed.  What we see here is a classic example of exporting a spreadsheet table as a comma delimited file.  In theory, this data can be imported by any other application that can read a delimited file.</p>
<p><em>Believe it of not, a space is a character, and takes up space in a file.  Back in the day people went out of their way to save space so that files could be send over slow modem connections.</em></p>
<p><strong>What is a Fixed Width File?</strong></p>
<p>There is another type of file, is is called a Fixed Width or Fixed Position file.  It is different from a delimited file in that the data fields are defined by the character position.  See the example below.</p>
<p><img class="aligncenter size-full wp-image-73" title="Fixed Width File Illustration" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/01/wffileillustration.jpg" alt="wffileillustration Flat Files" width="570" height="132" /></p>
<p>In a fixed width file, the delimiter characters are eliminated.  If the data is formulated such that the data fields are the same size, this format can be more compact than a delimited file. You can see here that we know the size of the Birthdate data, so we eliminate all the spaces between the Bdate and Department fields.  If all of the data was formatted for size like this, we could really make this file small, so that it only contains the data.</p>
<p>We also eliminate the pesky problem of delimiters found in data.  The issue of a comma delimited file containing a field that has a comma in the data.  How does the parser know that this comma is not really a delimiter, but is part of the data?  Anyway, that problem is eliminated in a fixed width file.</p>
<p><strong>Comparison</strong></p>
<p>This is not a contest of which format is superior.  Both file architectures are useful and both are used commonly enough that you need to be at ease working with both.  Delimited files are really easy to work with as long as your data is clean of the delimiter character.  Doing quick integration of data common in ETL tasks, delimited files are far more common that Fixed Width.  Continuous operations of data integration and importation many times find that Fixed Width or Position files are more reliable for the unattended operation, even ETL if it is unattended.</p>
<p>As with many things in integration work, we want to pick the best option.  Knowing and working with both fixed and delimited files will help you determine which is the right choice for the task you have before you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/flat-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
