<?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; b2b</title>
	<atom:link href="http://www.theintegrationengineer.com/category/b2b/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>Magento Analytics</title>
		<link>http://www.theintegrationengineer.com/magento-analytics/</link>
		<comments>http://www.theintegrationengineer.com/magento-analytics/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 16:08:06 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[conversions]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[tracking]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1642</guid>
		<description><![CDATA[If you are installing a Magento as a web store for yourself or for someone else, you will want to track how many visitors you have and how many of them convert into customers.  Magento makes this really easy if you are using Google Analytic.  Here is how it works.
First you will need [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/04/magento_button.png"><img class="alignleft size-full wp-image-1128" title="magento_button" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/04/magento_button.png" alt="magento button Magento Analytics" width="89" height="89" /></a>If you are installing a Magento as a web store for yourself or for someone else, you will want to track how many visitors you have and how many of them convert into customers.  Magento makes this really easy if you are using Google Analytic.  Here is how it works.</p>
<p>First you will need to have a Google Analytics account.  If you don&#8217;t have one, you might want to check it out.  Its free and you can sign up at <a href="http://www.google.com/analytics">http://www.google.com/analytics</a></p>
<p><span id="more-1642"></span>As soon as you are ready with you Google Analytics account.  And you have told it that you want to monitor your site.  It will generate some code for you to place on every page that you want to monitor.  But don&#8217;t worry, Magento doesn&#8217;t need you to do much to accomplish this.  If you look at your accounts page, you will see something like this:</p>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/google_analytics_example1.png"><img class="alignnone size-full wp-image-1653" title="google_analytics_example" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/google_analytics_example1.png" alt="google analytics example1 Magento Analytics" width="357" height="244" /></a></p>
<p>I have blurred out my domain and account, but what you will see in the red box, is the number that you will need to put into Magento.</p>
<p>So copy it to a text file or just leave the page up and go back to it when you need this number.</p>
<p>Now, go to your Admin page on your Magento installation.  You will need to go to System&gt;configuration as shown below.</p>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/Magento_navigation_config.png"><img class="alignnone size-full wp-image-1643" title="Magento_navigation_config" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/Magento_navigation_config.png" alt="Magento navigation config Magento Analytics" width="594" height="348" /></a></p>
<p>Once in configuration, you should find a set of navigation links on the left hand of the page.  In the &#8220;Sales&#8221; section you will find a &#8220;GoogleAPI&#8221; selection.</p>
<p>This will take you to the section with a Google Analytics control.</p>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/Magento_config_sales_GoogleAPI.png"><img class="alignnone size-full wp-image-1644" title="Magento_config_sales_GoogleAPI" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/Magento_config_sales_GoogleAPI.png" alt="Magento config sales GoogleAPI Magento Analytics" width="253" height="280" /></a></p>
<p>Expand the Google Analytics control and set Enabled to Yes.</p>
<p>Now here is where you type or past in your account number from the Google Analytics report page we saw at the top of this article.</p>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/Magento_config_Google_Analytics.png"><img class="alignnone size-full wp-image-1645" title="Magento_config_Google_Analytics" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/Magento_config_Google_Analytics.png" alt="Magento config Google Analytics Magento Analytics" width="626" height="159" /></a></p>
<p>Once you have typed it in, click on the &#8220;Save Config&#8221; button.</p>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/magento_save_config.png"><img class="alignnone size-full wp-image-1646" title="magento_save_config" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/magento_save_config.png" alt="magento save config Magento Analytics" width="125" height="38" /></a></p>
<p>When you see this message, you are ready to go.</p>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/magento_Config_Saved.png"><img class="alignnone size-full wp-image-1647" title="magento_Config_Saved" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/07/magento_Config_Saved.png" alt="magento Config Saved Magento Analytics" width="239" height="52" /></a></p>
<p>You might have to wait a few hours before the green check mark appears on the Google Analytics site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/magento-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>7 Simple Steps of Integration</title>
		<link>http://www.theintegrationengineer.com/simple-steps-of-integration/</link>
		<comments>http://www.theintegrationengineer.com/simple-steps-of-integration/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 16:00:26 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Supply Chain]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[plan]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[steps]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=855</guid>
		<description><![CDATA[I started thinking that I would create a comprehensive integration guide and framework.  A document that would guide a person from the beginning to end of an integration, covering all the bases, and addressing all the issues.  Then I ditched the idea.  No one would ever want to read it.  (not [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-858" title="steepSteps_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/steepSteps_pzl.jpg" alt="steepSteps pzl 7 Simple Steps of Integration" width="107" height="102" />I started thinking that I would create a comprehensive integration guide and framework.  A document that would guide a person from the beginning to end of an integration, covering all the bases, and addressing all the issues.  Then I ditched the idea.  No one would ever want to read it.  (not even me.) Instead here are 7 simple steps that should get your going, and that you should follow in each integration project.  The rest of the plan is largely, and subjectively up to you.<span id="more-855"></span></p>
<p><strong>1.  Identify the Trading Partners</strong></p>
<p style="padding-left: 30px;">This may seem really simple.  And it is.  But it is not too simple for us.</p>
<p style="padding-left: 30px;">We need to know who we will integrate with.  Are these new contacts that have never worked with our company before?  Or are they existing customers that will be moving to this new integrated connections?  Both groups have their own sets of challenges and benefits.</p>
<p style="padding-left: 30px;">Is this integration a one time event, or will we be integrating multiple trading partners using this same process?  This is also important and will make a difference on how trading partner specific we want to make it.</p>
<p style="padding-left: 30px;">What is the technical sophistication of the proposed trading partners?  Are they going to be able to comply with our needs or will we have to do everything?</p>
<p><strong>2.  Identify the Data</strong></p>
<p style="padding-left: 30px;">Again, this is basic but not too basic.</p>
<p style="padding-left: 30px;">We need to know if we are dealing with just orders, or if there will be invoicing and catalogs.  We need to know if what type of performance we are looking for.  Is this a once a month catalog load that can take hours and gets a couple or retry windows, or is this real time price comparison that need to respond in seconds.</p>
<p style="padding-left: 30px;">The data and how it needs to flow will be a big piece of what we need to know.</p>
<p><strong>3.  Identify the Target</strong></p>
<p style="padding-left: 30px;">What is the target?</p>
<p style="padding-left: 30px;">This can be taking some of your data and sending it to your Trading Partner.  In this case your target is the format and communication protocol that your partner can receive.</p>
<p style="padding-left: 30px;">Or it can be an internal <a href="http://www.theintegrationengineer.com/canonical-data/">Canonical Data</a> Format that your systems use that you are creating from transactions received from your partner sends you.</p>
<p style="padding-left: 30px;">Or it could be something else.  Whatever it is, you will need to know what it is, and know all about it before you can really get started.</p>
<p><strong>4.  Identify the Tools and Technology</strong></p>
<p style="padding-left: 30px;">Are you using EDI?  Or XML?  What EAI tools are you and your partner using?  SAP?  WebMethods?  GXS?  Other?</p>
<p style="padding-left: 30px;">How do complete the task will rely to a great degree on what tools and technologies you are working with.  If you are an employee, you may already know this, but if you are a consultant you probably don&#8217;t.  You need to find out.</p>
<p><strong>5.  Identify Support needs.</strong></p>
<p style="padding-left: 30px;">What happens when things go wrong?  Not necessarily &#8220;horribly wrong&#8221; but just wrong.  Is an error produced when the translation fails?  How about creating a 850 with no line items?  (no one wants to receive this.)  Or if the https post or SFTP send fails, can it retry, or does it die quietly?  These are questions that you need to ask and keep asking.  (Please include all of the answers in your documentation.)</p>
<p><strong>6.  Identify the Time Frame</strong></p>
<p style="padding-left: 30px;">How long do you have to complete the integration?  Is there a plan to find and fix bugs after implementation?  How long is the integration planning to be used?  (short term during the merger of two companies, or for as long as Walmart will buy your product?)</p>
<p style="padding-left: 30px;">All of the aspects of time, time to complete, time to live and time to revisit and fix problems are good things to know, or at least have an idea about.</p>
<p><strong>7.  Get started, and Document your work.</strong></p>
<p style="padding-left: 30px;">Getting started, and starting the <a href="http://www.theintegrationengineer.com/10-tips-on-making-effective-documentation/">Documentation</a> of a project should happen together.  Almost at the same moment.  Okay, really, at the same moment.</p>
<p style="padding-left: 30px;">Documenting the answers to the questions above along with others is really the start of the integration project.  And the documentation process will help you to focus your work on getting the answers that you need to finish the project.</p>
<p style="padding-left: 30px;">When you know what you should be doing, and how you should do it, many tasks become easy.  One of the illustrations of this is shown in my <a href="http://www.theintegrationengineer.com/mapping-exercise-edi-to-flat-file/">Mapping Excersizes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/simple-steps-of-integration/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>Validate to Standard, not to spec</title>
		<link>http://www.theintegrationengineer.com/validate-to-standard-not-to-spec/</link>
		<comments>http://www.theintegrationengineer.com/validate-to-standard-not-to-spec/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 13:31:08 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Standards]]></category>
		<category><![CDATA[Supply Chain]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[analyzer]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[Foresight]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=334</guid>
		<description><![CDATA[After you have created your usage specification, it can be useful to use a validation tool to check to verify that new trading partners comply during your boarding process.  I have used Foresight&#8217;s EDI Analyzer for this many times, and it lets be quickly see where the EDI file departs from the specification.
There is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-542" title="valid-logic-pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/valid-logic-pzl.jpg" alt="valid logic pzl Validate to Standard, not to spec" width="160" height="161" />After you have created your usage specification, it can be useful to use a validation tool to check to verify that new trading partners comply during your boarding process.  I have used <a href="http://www.foresightcorp.com/products/analyzer.htm">Foresight&#8217;s EDI Analyzer</a> for this many times, and it lets be quickly see where the EDI file departs from the specification.</p>
<p>There is a temptation to use this same validation in the production integration.  But this would be a mistake.  I&#8217;m not saying, &#8220;Don&#8217;t validate.&#8221;  I highly encourage validation on both standard compliance and required data validation in mapping and integration.  But to use the usage specification has a side effect that I witnessed once.  (Only once.)<span id="more-334"></span></p>
<p><strong>Validating Transactional EDI to Usage Specification</strong></p>
<p>We had an integration requirement once that required that we only allow EDI elements that were in our usage specification.  This was outside of our normal process and we all soon learned why.</p>
<p>When we validated EDI files based on the standard, we would error out documents that were corrupted, or in violation of the full EDi specification. (having mangled segments, or invalid UOMs and such.) But this one time, we thought it would be a good idea to also fail documents that had any extra data that we weren&#8217;t going to use.  So we pulled all of the segments and elements out so that we were just down to what was in our usage specification.</p>
<p>This worked just like we told it to.  As when the next file came in that was in bad form with extra trailing delimiters on the line item, it failed.  And then the next with an extra segment that we didn&#8217;t care about?  Well it failed too.  As so on.</p>
<p>We soon were buried under failed EDI files that were valid EDI, and did contain the data we needed, but simply had something extra.  And we were calling them all exceptions.</p>
<p>At first we added in a few of the common segments that were being sent.  This relieved the lion&#8217;s share of the errors.  But it still cropped up from time to time.  Each time we would have failures for this reason we had to explain why.  This grew tedious and embarrassing.</p>
<p>Eventually we re-mapped the doc-type using the complete standard in our validation.  Magically all of these errors went away, and so did the embarrassing explanations.</p>
<p><strong>Here is the way the process should work, generalized.</strong></p>
<p style="padding-left: 30px;">1.  EDI envelop is validated against EDI standard.<br />
2.  EDI document is validated against EDI standard<br />
3.  Mission critical values are validated against Usage Specification.<br />
4.  File is processed.</p>
<p>What this does is to establish an inherent hierarchy of exceptions.  Transactions that fail on step 1 are all falling because the envelope is corrupt or  in error.  Also, Transactions that fail on step 2 are failing for a general EDI reason.  Both of these steps will have exceptions that can be handled by anyone with EDI knowledge.  Operational and Application rules don&#8217;t necessarily need to be known to understand how to handle errors at these levels.</p>
<p>Step 3 and 4 are exactly the opposite.  Errors that happen because of mission critical data that is missing or in error must be handled by someone that knows what the mission critical form is supposed to look like.  And files that pass validation but fail later in processing may need to be corrected and the validation process updated.  Or they may point to an error in the application itself.  In any case, much more knowledge of the whole process is required at these stages.</p>
<p><strong>Take Away</strong></p>
<p>First, by sharing this experience I hope that everyone can appreciate that sometimes requirements make us to funny things.  But I also wanted to share the approach to validation that I have found most helpful.  I have seen implementation that don&#8217;t do any EDI or Enveloping validation.  These are just as dangerous and frustrating as my experience.  But now all of the errors are pushed down to step 3 and 4.</p>
<p>I&#8217;d also like to invite you to subscribe to my <a href="http://www.theintegrationengineer.com/subscribe/">newsletter</a>.  It comes out once a month, starting at the end of this month.  I&#8217;ve got some great ideas for it, and think it will be terrific.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/validate-to-standard-not-to-spec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is a SKU?</title>
		<link>http://www.theintegrationengineer.com/what-is-a-sku/</link>
		<comments>http://www.theintegrationengineer.com/what-is-a-sku/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 16:30:02 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Supply Chain]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[cXML]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[jargon]]></category>
		<category><![CDATA[keeping]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SK]]></category>
		<category><![CDATA[SKU]]></category>
		<category><![CDATA[stock]]></category>
		<category><![CDATA[stock-keeping]]></category>
		<category><![CDATA[Supplier Part Number]]></category>
		<category><![CDATA[Supply Chain Managment]]></category>
		<category><![CDATA[unit]]></category>
		<category><![CDATA[VC]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=404</guid>
		<description><![CDATA[Sometimes we hear and then use industry jargon without having a clear definition of what they are.  I think all of us are guilty of this from time to time.  This post clarifies what a SKU is, and discusses how SKUs are used in the supply chain, and in EDI.
Definition:  SKU stands for &#8220;Stock keeping [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-479" title="barcode_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/barcode_pzl.jpg" alt="barcode pzl What is a SKU?" width="177" height="133" />Sometimes we hear and then use industry jargon without having a clear definition of what they are.  I think all of us are guilty of this from time to time.  This post clarifies what a SKU is, and discusses how SKUs are used in the supply chain, and in EDI.</p>
<p><strong><a href="http://en.wikipedia.org/wiki/Stock-keeping_unit">Definition</a></strong>:  SKU stands for &#8220;Stock keeping Unit&#8221; initially used for identifying items that a company keeps in stock so that they can track how many they have and such.  Now also used for services, and for contracts or warranties.<span id="more-404"></span></p>
<p><strong>Usage</strong>:</p>
<p>The SKU is assigned to each thing.  And it is unique to the company that issues it.  You might think this is the Vendor Catalog Number, but this is not always the case.  The SKU does not just refer to the type of item, say a plate, but also how it is packaged.  So a plate, and a box of plates would have different SKU numbers.  This is one reason that the VCN will not always be the same.  If you order a case, but the vendor is out of cases, but has the same unit quantity of boxes, they may respond and ship the 10 boxes that comprise a case.</p>
<p style="padding-left: 30px;"><em>Sometimes this is not a great solution.  I had a customer once that ordered a case of tape refills.  The vendor was out of cases, but had the individual refills.  So they shipped 500 tape refills.  The customer then had to inventory and stock the individuals, they were not having a good day.</em></p>
<p>Sometimes the SKU contains some of the UPC number.  But again these numbers are not the same.  The UPC is about identifying the Unique item type, the SKU is about identifying the stocking unit.</p>
<p>Looking in my handy EDI Standards Reference, I see that on 4010 PO1 line items, the SKU number is qualified by the &#8220;SK&#8221; qualifier.  If you are using a number you think is  a SKU when you order, but you are qualifying it with a &#8220;VC&#8221; then you are really using the Vendor Catalog Number.</p>
<p><em>EDI Example:</em></p>
<p style="padding-left: 30px;">PO1*AAA849*100*DP*100.00**SK*123ABC******************~</p>
<p style="padding-left: 30px;">As you can see, the PO1_06 is &#8220;SK&#8221;.  This indicates that the PO1_07 is the SKU number.</p>
<p><em>cXML Example:</em></p>
<p style="padding-left: 30px;">&lt;ProductRequest itemNumber=&#8221;1”&gt;</p>
<p style="padding-left: 60px;">&lt;SupplierPartNumber&gt;123ABC&lt;/SupplierPartNumber&gt;</p>
<p style="padding-left: 60px;">&lt;UnitOfMeasure quantity=&#8221;1&#8243; unit=&#8221;DP&#8221;/&gt;</p>
<p style="padding-left: 60px;">&lt;Quantity&gt;100&lt;/Quantity&gt;</p>
<p style="padding-left: 30px;">&lt;/ProductRequest&gt;</p>
<p style="padding-left: 30px;">In cXML it is less specific.  The SKU number is found in the contents of the &#8220;SupplierPartNumber&#8221; tag.  This may not always be used for a SKU Number.  However, I don&#8217;t know that &lt;stockKeepingUnit&gt; or &lt;SKU&gt; are valid tags in cXML form.</p>
<p>And thus we see why the confusion comes in as to what a SKU is.  Some standards like cXML are loose in their definition of these item identifying numbers and some materials systems as well.  And then others want to know what the SKU is so that they know if a pallet or a envelop are being confirmed on the ship notice.</p>
<p>Rationalizing these systems becomes an important task.  And paying attention to when the type of part number changes can help a supply chain integration alert people in advance of 500 individual tape refills showing up on your table.</p>
<p><strong>Question</strong>?</p>
<p>What terms or peices of jargon have you heard people missusing?  Or have you done this yourself?  Let me know in the comments and I may post about some of them as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/what-is-a-sku/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>B2T (Business to Twitter)</title>
		<link>http://www.theintegrationengineer.com/b2t-business-to-twitterb2t/</link>
		<comments>http://www.theintegrationengineer.com/b2t-business-to-twitterb2t/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 22:24:13 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[airline]]></category>
		<category><![CDATA[B2T]]></category>
		<category><![CDATA[B2Twee]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[BtweeB]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[follow]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[southwest]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=524</guid>
		<description><![CDATA[I was reading an article on Spend Matters, by Jason Busch, and I had an idea.  Jason was writing about Twitter entering the B2B Mainstream. Now to be honest I had heard about Southwest&#8217;s proactive use of twitter to monitor and shape how their customer experience was being perceived.  And like many things with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com"><img class="alignleft size-full wp-image-529" title="goodies_bird" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/goodies_bird.png" alt="goodies bird B2T (Business to Twitter)" width="127" height="109" /></a>I was reading an article on <a href="http://www.spendmatters.com/index.cfm/2009/8/6/When-Will-Twitter-Hit-the-businesstobusiness-Mainstream">Spend Matters</a>, by <a href="http://www.spendmatters.com/pages/bios.cfm#jason">Jason Busch</a>, and I had an idea.  Jason was writing about Twitter entering the B2B Mainstream. Now to be honest I had heard about Southwest&#8217;s proactive use of twitter to monitor and shape how their customer experience was being perceived.  And like many things with Southwest&#8217;s business, I find it to be touched with brilliance.  So as I read about it, I was suddenly struck with a much deeper way that twitter and twitter like technologies could be used.<span id="more-524"></span></p>
<p><strong>Initial Idea for B2T</strong></p>
<p>First, I need to explain the background of the idea.  I know that not everyone on twitter is, er, human.  Yep, we have &#8220;people&#8221; that are not real flesh and blood on twitter, tweeting away about what they are doing and why you should visit their site, or buy their product.  Shocking I know, but some of them have quite a large following.  (other twitter bots I think)</p>
<p>So then I thought, (again, in context to the airline example that Jason was blogging about), &#8220;Hey, what if I could follow a flight on twitter?  Then I could know when it was due to arrive! When it had landed! And where to meet my buddy in baggage claim!&#8221;  (Yes, I think with lots of exclamation marks.)  But I still think this is a cool idea.  Each tweet could have a short statement about the flight status and a link to the airline&#8217;s page for people that needed to look up more about it.</p>
<p style="text-align: center;"><img class="size-full wp-image-533 aligncenter" title="600px-Airplane_clipart.svg" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/600px-Airplane_clipart.svg.png" alt="600px Airplane clipart.svg B2T (Business to Twitter)" width="482" height="151" /></p>
<p>Okay, then I had my second thought about how to use this.  You see so far I was still thinking, &#8220;customer service by managing the twiterverse&#8221;  which is fine, I am a customer expecting good service as well.  But then I put this together with another connection.  &#8220;What about Order notifications?&#8221;</p>
<p><strong>B2T Expanded to Supply Chain</strong></p>
<p>This is where Jason mentions a supplier monitoring their reputation and customer attitudes by following Southwest&#8217;s example.  But I thought, &#8220;What if Dell, let me follow my order on twitter? I could know when it was shipped!  When it would arrive!  And even know updates like delays, or arriving early!&#8221;  (Again, I think with lots of exclamations.)</p>
<p>Have worked on supply chain systems that sent out many email notifications.  Some users liked these, and some didn&#8217;t.  Using a twitter model, a user/customer could follow the orders or processes that were important to them on a case by case basis.  BPM could be followed in the same fashion.  And so forth, just by clicking on the follow like on the checkout confirmation page or equivalent.</p>
<p><strong>What do you think? </strong></p>
<p>What are other ways that you can integrate twitter with e-commerce, B2B, or Supply Chains?  I want to know your ideas.  And also, what do we call this?  (&#8220;B2T&#8221;, &#8220;B2Tweet&#8221;, &#8220;BtweeB&#8221;, etc)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/b2t-business-to-twitterb2t/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Default Deliver Disaster</title>
		<link>http://www.theintegrationengineer.com/default-deliver-disaster/</link>
		<comments>http://www.theintegrationengineer.com/default-deliver-disaster/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 20:02:39 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Supply Chain]]></category>
		<category><![CDATA[Supply Chain Managment]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[Delivery]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[Order]]></category>
		<category><![CDATA[Ship To]]></category>
		<category><![CDATA[Ship To Location]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=337</guid>
		<description><![CDATA[When setting up a supply chain integration, there is a lot of information that is exchanged.  One thing that should be explored is what the supplier will do if they can&#8217;t process the order.  This should be explored by making a list of all the errors that you can conceive of. This is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-338" title="forklift_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/07/forklift_pzl.jpg" alt="forklift pzl Default Deliver Disaster" width="121" height="163" />When setting up a supply chain integration, there is a lot of information that is exchanged.  One thing that should be explored is what the supplier will do if they can&#8217;t process the order.  This should be explored by making a list of all the errors that you can conceive of. This is the beginning of your test plan. Then having the Vendor respond with what they will do.  (this doesn&#8217;t have to be actual transfer of erroring files, it can just be filing out a form with what will happen when said error is sent.  But of course, actually sending bad files to and from your test systems is a good idea when possible.)  In the end you will have an idea of what will happen and what to expect when something goes wrong.  However, sometimes this doesn&#8217;t cover all the bases.</p>
<p><span id="more-337"></span><strong>When Defaults Attack</strong></p>
<p>Once upon a time there was a supply chain consultant.  (ok, so this was me.)  And this supply chain consultant setup and integration between a vendor and a service provider.  This hosted integration worked really well for years.  Then suddenly we received a delivery at the location of the supply chain consulting office.</p>
<p><em>Needless to say that our office was not setup to receive the large pallet of materials that were being ordered.</em></p>
<p>Yes you guessed it.  It was an order that had been processed from the service provider but sent to our location as the Ship To destination.  Well, we returned it and began a remediation process to find out why our address had been used instead of the correct customer.  In the mean time, the Vendor wanted to charge restocking fees.  The Provider wanted their product.  And we just wanted to figure out what was going wrong.</p>
<p><strong>Second Order</strong></p>
<p>While we were in these conversations, a second order showed up.  Yep, to our office.  Now we had everyone&#8217;s attention.  We walked the order through the process and finally found the error.  Default shipping location in the Vendors system was listing us, the supply chain consultant, as the default location.</p>
<p>The service provider had added a facility to their office.  But it had the same shipping location as the parent organization.  So when they were adding this with the Vendor, they indicated to use the Default Shipping Location.  They assumed that this would be the corporate office.  The Vendor didn&#8217;t know this was a problem.  But during the initial setup we didn&#8217;t have all of the shipping info, and we used our in the test environment.  Once the went live everything worked great.  No one realized that the vendor had retained our test shipping location.</p>
<p><strong>Resolution</strong></p>
<p>Well, being that we, the supply chain consultants figured out what was wrong, confidence resumed in the integration.  The Vendor removed us from their shipping information, and the Service Provider began to get their shipments for the new facility.  You would think that everyone would be happy.</p>
<p>But there were some shipping and restocking fees that were now on the books.  What a mess.  I think that we eventually spit up these fees and we had to pay a portion of them to clear the books.</p>
<p><strong>Lesson</strong></p>
<p>Find out what happens when things go wrong, before it happens.  Because it will happen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/default-deliver-disaster/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://12967i2wnvdrcfsnl1fdmv2gvr.hop.clickbank.net/" target="_top"><img class="alignright size-full" src="http://www.pdf-creator.us/images/m-softbox.jpg" width="176" height="338" title="EDI Repeated Segments" alt="m softbox EDI Repeated Segments" /></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>
	</channel>
</rss>
