<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>The Integration Engineer</title>
	
	<link>http://www.theintegrationengineer.com</link>
	<description>When it just has to work.</description>
	<lastBuildDate>Mon, 08 Mar 2010 15:42:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheIntegrationEngineer" /><feedburner:info uri="theintegrationengineer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://www.theintegrationengineer.com/favicon.ico</link><url>http://www.theintegrationengineer.com/favicon.ico</url><title>The Integration Engineer</title></image><feedburner:emailServiceId>TheIntegrationEngineer</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>When Words Fail use a Whiteboard</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/A60f7oWl4Gw/</link>
		<comments>http://www.theintegrationengineer.com/when-words-fail-use-a-whiteboard/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 15:42:46 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[diagram]]></category>
		<category><![CDATA[illustrate]]></category>
		<category><![CDATA[picture]]></category>
		<category><![CDATA[white board]]></category>
		<category><![CDATA[whiteboard]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1050</guid>
		<description><![CDATA[
			
				
			
		
I know it may sound cleche to state that a picture is worth a thousand words.  But some things are just really difficult to communicate in text.  You may have noticed a few diagrams showing up in my posts here.  Well, I have found that there are times in a conversation with other programmers, and [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhen-words-fail-use-a-whiteboard%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhen-words-fail-use-a-whiteboard%2F&amp;style=normal" height="61" width="50" title="When Words Fail use a Whiteboard" alt=" When Words Fail use a Whiteboard" /><br />
			</a>
		</div>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art.jpg"><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 When Words Fail use a Whiteboard" width="150" height="150" /></a>I know it may sound cleche to state that a picture is worth a thousand words.  But some things are just really difficult to communicate in text.  You may have noticed a few diagrams showing up in my posts here.  Well, I have found that there are times in a conversation with other programmers, and more often in conversations with non-technical collegues that I am saying, &#8220;I need a whiteboard.&#8221;</p>
<p>Because of this propensity to illustrate my explanations, people have jokingly said that I couldn&#8217;t talk if they took my dry erase markers away.  At the same time, being able to communicate with others that are not versed in programming, databases, chemestry, or any other disapline that you find yourself will be a useful skill that will help you with your immediate project, and can advance your career.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhen-words-fail-use-a-whiteboard%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhen-words-fail-use-a-whiteboard%2F&amp;style=normal" height="61" width="50" title="When Words Fail use a Whiteboard" alt=" When Words Fail use a Whiteboard" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/eqvz0GgIVocJweQIsvmi5GugUzM/0/da"><img src="http://feedads.g.doubleclick.net/~a/eqvz0GgIVocJweQIsvmi5GugUzM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/eqvz0GgIVocJweQIsvmi5GugUzM/1/da"><img src="http://feedads.g.doubleclick.net/~a/eqvz0GgIVocJweQIsvmi5GugUzM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/A60f7oWl4Gw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/when-words-fail-use-a-whiteboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/when-words-fail-use-a-whiteboard/</feedburner:origLink></item>
		<item>
		<title>Undefined Data or the Catalyst of Chaos</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/Ll4rBIEGwmI/</link>
		<comments>http://www.theintegrationengineer.com/undefined-data-or-the-catalyst-of-chaos/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 16:16:14 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[CDATA]]></category>
		<category><![CDATA[Integration Tip]]></category>
		<category><![CDATA[Undefined Data]]></category>
		<category><![CDATA[ZZ]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1043</guid>
		<description><![CDATA[
			
				
			
		
When the definition for a data field or element is undefined or otherwise open to the whim of the user, we are asking for trouble.  Not in the sense that this causes trouble.  But how it is then used that causes trouble.  And this is not to pick on the CDATA tag in XML or [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fundefined-data-or-the-catalyst-of-chaos%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fundefined-data-or-the-catalyst-of-chaos%2F&amp;style=normal" height="61" width="50" title="Undefined Data or the Catalyst of Chaos" alt=" Undefined Data or the Catalyst of Chaos" /><br />
			</a>
		</div>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art.jpg"><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 Undefined Data or the Catalyst of Chaos" width="150" height="150" /></a>When the definition for a data field or element is undefined or otherwise open to the whim of the user, we are asking for trouble.  Not in the sense that this causes trouble.  But how it is then used that causes trouble.  And this is not to pick on the CDATA tag in XML or ZZ qualified elements in EDI.  It seems that every data format of any size of adoption commits this sin of categorisation.</p>
<p>My general recommendation is to avoid using undefined or user defined data.  Relying on a user defined field that we use to solve a problem by working around some limitation (or perceived limitation) of the file data definition, may give us a feeling of power.  But over the long haul turns the implementation into a proprietary implementation that is not reusable with more than one trading partner.</p>
<p>And having each integration using a slightly unique implementation leads to chaos.  Both in suppport, and in the applicaiton of updates.</p>
<p>Undefined data exists.  People will use it.  You will have to deal with it as some time, but whenever possible. avaid making it a critical part of the implementation, and always provide it with a healty dose of error handling.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fundefined-data-or-the-catalyst-of-chaos%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fundefined-data-or-the-catalyst-of-chaos%2F&amp;style=normal" height="61" width="50" title="Undefined Data or the Catalyst of Chaos" alt=" Undefined Data or the Catalyst of Chaos" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/z4KXjRPpzFVofcJsOLnZfNpNH8w/0/da"><img src="http://feedads.g.doubleclick.net/~a/z4KXjRPpzFVofcJsOLnZfNpNH8w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/z4KXjRPpzFVofcJsOLnZfNpNH8w/1/da"><img src="http://feedads.g.doubleclick.net/~a/z4KXjRPpzFVofcJsOLnZfNpNH8w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/Ll4rBIEGwmI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/undefined-data-or-the-catalyst-of-chaos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/undefined-data-or-the-catalyst-of-chaos/</feedburner:origLink></item>
		<item>
		<title>Sum of its Tasks</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/AA18534nF0c/</link>
		<comments>http://www.theintegrationengineer.com/sum-of-its-tasks/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 16:06:45 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[Integration Tip]]></category>
		<category><![CDATA[Project Planning]]></category>
		<category><![CDATA[Time Estimates]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1015</guid>
		<description><![CDATA[
			
				
			
		
Just like synergy, a projects time-line is generally greater than the sum of its tasks.  Taking the time to complete tasks in a project together, there will need to be time between tasks.  Some of this time will just be spent updating people, and coordination of project participants.  There are also other needs, like water [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsum-of-its-tasks%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsum-of-its-tasks%2F&amp;style=normal" height="61" width="50" title="Sum of its Tasks" alt=" Sum of its Tasks" /><br />
			</a>
		</div>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art.jpg"><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 Sum of its Tasks" width="150" height="150" /></a>Just like synergy, a projects time-line is generally greater than the sum of its tasks.  Taking the time to complete tasks in a project together, there will need to be time between tasks.  Some of this time will just be spent updating people, and coordination of project participants.  There are also other needs, like water and bio-breaks.</p>
<p>Just like productivity during the day generally gives people a 15 minute break every 3 hrs or so.  When we plan our projects, we need to include not just the time that it takes to perform the collective tasks, but other activities that will be happening during the course of the project.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsum-of-its-tasks%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsum-of-its-tasks%2F&amp;style=normal" height="61" width="50" title="Sum of its Tasks" alt=" Sum of its Tasks" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/clxNIR7fJzzxUo7-AiELemyWb4I/0/da"><img src="http://feedads.g.doubleclick.net/~a/clxNIR7fJzzxUo7-AiELemyWb4I/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/clxNIR7fJzzxUo7-AiELemyWb4I/1/da"><img src="http://feedads.g.doubleclick.net/~a/clxNIR7fJzzxUo7-AiELemyWb4I/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/AA18534nF0c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/sum-of-its-tasks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/sum-of-its-tasks/</feedburner:origLink></item>
		<item>
		<title>Validate all Inbound Data</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/hWXhVHHB6-w/</link>
		<comments>http://www.theintegrationengineer.com/validate-all-inbound-data/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 15:24:44 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[Error Handling]]></category>
		<category><![CDATA[Inbound Data]]></category>
		<category><![CDATA[Integration Tip]]></category>
		<category><![CDATA[Pre-processing]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1013</guid>
		<description><![CDATA[
			
				
			
		
Odd errors can occur when you get data that doesn&#8217;t fit the format, but matches close enough not to fail outright.  This type of error can be really hard to unravel. Preventing these messy errors, it is a good practice to implement a validation process before processing the data.  Some integration technologies come with validation, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fvalidate-all-inbound-data%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fvalidate-all-inbound-data%2F&amp;style=normal" height="61" width="50" title="Validate all Inbound Data" alt=" Validate all Inbound Data" /><br />
			</a>
		</div>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art.jpg"><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 Validate all Inbound Data" width="150" height="150" /></a>Odd errors can occur when you get data that doesn&#8217;t fit the format, but matches close enough not to fail outright.  This type of error can be really hard to unravel. Preventing these messy errors, it is a good practice to implement a validation process before processing the data.  Some integration technologies come with validation, if yours doesn&#8217;t you should pre-process inbound data for validation.</p>
<p>In addition to this, pre validation can be used as a way to catch and handle other errors early.  Leveraging pre-processing with validation and error handling can give you a one stop place to catch, and report or correct systemic problems.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fvalidate-all-inbound-data%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fvalidate-all-inbound-data%2F&amp;style=normal" height="61" width="50" title="Validate all Inbound Data" alt=" Validate all Inbound Data" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/Z7FzenF25JEOiPkrfPjrZwPNuFk/0/da"><img src="http://feedads.g.doubleclick.net/~a/Z7FzenF25JEOiPkrfPjrZwPNuFk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Z7FzenF25JEOiPkrfPjrZwPNuFk/1/da"><img src="http://feedads.g.doubleclick.net/~a/Z7FzenF25JEOiPkrfPjrZwPNuFk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/hWXhVHHB6-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/validate-all-inbound-data/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/validate-all-inbound-data/</feedburner:origLink></item>
		<item>
		<title>Document Choreography of an EDI Purchase</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/0T4d7nrgm3w/</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[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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdocument-choreography-of-an-edi-purchase%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdocument-choreography-of-an-edi-purchase%2F&amp;style=normal" height="61" width="50" title="Document Choreography of an EDI Purchase" alt=" Document Choreography of an EDI Purchase" /><br />
			</a>
		</div>
<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 gennerally people keep these to only one PO.</p>
<p>820 is Remittance, and is sent to the Vendor.  It contains information relating to payment.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdocument-choreography-of-an-edi-purchase%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdocument-choreography-of-an-edi-purchase%2F&amp;style=normal" height="61" width="50" title="Document Choreography of an EDI Purchase" alt=" Document Choreography of an EDI Purchase" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/6lir4p7OJ9ThiKhMHZZymeZ5y7I/0/da"><img src="http://feedads.g.doubleclick.net/~a/6lir4p7OJ9ThiKhMHZZymeZ5y7I/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6lir4p7OJ9ThiKhMHZZymeZ5y7I/1/da"><img src="http://feedads.g.doubleclick.net/~a/6lir4p7OJ9ThiKhMHZZymeZ5y7I/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/0T4d7nrgm3w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/document-choreography-of-an-edi-purchase/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/document-choreography-of-an-edi-purchase/</feedburner:origLink></item>
		<item>
		<title>Accuracy of the timeline</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/H40cLQGHgqY/</link>
		<comments>http://www.theintegrationengineer.com/accuracy-of-the-timeline/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 15:01:26 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[Integratoin Tip]]></category>
		<category><![CDATA[Project Planning]]></category>
		<category><![CDATA[Time Estimates]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1010</guid>
		<description><![CDATA[
			
				
			
		
The accuracy of the timeline will only be as acurate as the accuracy of the least acurate task estimate.
The time estimate part of project planning is a tricky thing.  Generally there is some guessing involved.  To keep us from falling short a good practice is to pad estimates to account for the unforeseeable.  Project planners [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Faccuracy-of-the-timeline%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Faccuracy-of-the-timeline%2F&amp;style=normal" height="61" width="50" title="Accuracy of the timeline" alt=" Accuracy of the timeline" /><br />
			</a>
		</div>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art.jpg"><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 Accuracy of the timeline" width="150" height="150" /></a>The accuracy of the timeline will only be as acurate as the accuracy of the least acurate task estimate.</p>
<p>The time estimate part of project planning is a tricky thing.  Generally there is some guessing involved.  To keep us from falling short a good practice is to pad estimates to account for the unforeseeable.  Project planners can&#8217;t just pad and pad.  There is pressure from the other side to keep your estimates accurate and keep your timeline short.  Time is money after all.</p>
<p>So how do we put enough time in the timeline to not fall short, and keep the timeline from getting too long and expensive?  Well that is a dance that takes some practice to learn.</p>
<p>Just remember, when you pad your estimate to your project leader or get and estimate from someone on your project, that padding is necessary, and you should discuss it openly.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Faccuracy-of-the-timeline%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Faccuracy-of-the-timeline%2F&amp;style=normal" height="61" width="50" title="Accuracy of the timeline" alt=" Accuracy of the timeline" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/fVOWg9eKf8rLJ2uWqOiZXRtiH2U/0/da"><img src="http://feedads.g.doubleclick.net/~a/fVOWg9eKf8rLJ2uWqOiZXRtiH2U/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/fVOWg9eKf8rLJ2uWqOiZXRtiH2U/1/da"><img src="http://feedads.g.doubleclick.net/~a/fVOWg9eKf8rLJ2uWqOiZXRtiH2U/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/H40cLQGHgqY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/accuracy-of-the-timeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/accuracy-of-the-timeline/</feedburner:origLink></item>
		<item>
		<title>Architecture of an Integration</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/7rJouqgjkQA/</link>
		<comments>http://www.theintegrationengineer.com/arcitecture-of-an-integration/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 16:11:40 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[diagram]]></category>
		<category><![CDATA[drawing]]></category>
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1028</guid>
		<description><![CDATA[
			
				
			
		


			
				
			
		
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Farcitecture-of-an-integration%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Farcitecture-of-an-integration%2F&amp;style=normal" height="61" width="50" title="Architecture of an Integration" alt=" Architecture of an Integration" /><br />
			</a>
		</div>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/Arcitecture1.jpeg"><img class="alignnone size-full wp-image-1027" title="Arcitecture" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/Arcitecture1.jpeg" alt=" Architecture of an Integration" width="680" height="447" /></a>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Farcitecture-of-an-integration%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Farcitecture-of-an-integration%2F&amp;style=normal" height="61" width="50" title="Architecture of an Integration" alt=" Architecture of an Integration" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/W8xlYZ8lZ3-IX2j4Jee3qgE2eUg/0/da"><img src="http://feedads.g.doubleclick.net/~a/W8xlYZ8lZ3-IX2j4Jee3qgE2eUg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/W8xlYZ8lZ3-IX2j4Jee3qgE2eUg/1/da"><img src="http://feedads.g.doubleclick.net/~a/W8xlYZ8lZ3-IX2j4Jee3qgE2eUg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/7rJouqgjkQA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/arcitecture-of-an-integration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/arcitecture-of-an-integration/</feedburner:origLink></item>
		<item>
		<title>Learn the Basic Tools</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/hGZqImAUT7w/</link>
		<comments>http://www.theintegrationengineer.com/learn-the-basic-tools/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:51:20 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[Integration Tip]]></category>
		<category><![CDATA[Integration Tools]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1008</guid>
		<description><![CDATA[
			
				
			
		
Learn the basic tools.  Learn them first, and learn them well.  Sure, you can find some fancy XSLT tools or text editors.  And you can carry them around on a thumb drive and install them on all of you computers, workstations, laptops, and servers.  But sometime, some day, you will need to make a change, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Flearn-the-basic-tools%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Flearn-the-basic-tools%2F&amp;style=normal" height="61" width="50" title="Learn the Basic Tools" alt=" Learn the Basic Tools" /><br />
			</a>
		</div>
<p><a href="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art.jpg"><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 Learn the Basic Tools" width="150" height="150" /></a>Learn the basic tools.  Learn them first, and learn them well.  Sure, you can find some fancy XSLT tools or text editors.  And you can carry them around on a thumb drive and install them on all of you computers, workstations, laptops, and servers.  But sometime, some day, you will need to make a change, or fix a problem and you won&#8217;t have the fancy tool.  My experience says that this will also happen in the middle of the night when you are under pressure.  Knowing the basic tools like VI and Notepad, and any other tools that are a standard part of your systems will allow you to get your integration back up and running quickly and get you back to bed so you can go in and answer the questions about what happened with just that much more sleep.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Flearn-the-basic-tools%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Flearn-the-basic-tools%2F&amp;style=normal" height="61" width="50" title="Learn the Basic Tools" alt=" Learn the Basic Tools" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/g4AQHlCgZYYEYYB4-7r9HOsV4GA/0/da"><img src="http://feedads.g.doubleclick.net/~a/g4AQHlCgZYYEYYB4-7r9HOsV4GA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/g4AQHlCgZYYEYYB4-7r9HOsV4GA/1/da"><img src="http://feedads.g.doubleclick.net/~a/g4AQHlCgZYYEYYB4-7r9HOsV4GA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/hGZqImAUT7w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/learn-the-basic-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/learn-the-basic-tools/</feedburner:origLink></item>
		<item>
		<title>Defining the data Target is the First Step</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/ezOZo0u9bPI/</link>
		<comments>http://www.theintegrationengineer.com/defining-the-data-target-is-the-first-step/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:35:52 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[destinantion]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[target]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1003</guid>
		<description><![CDATA[
			
				
			
		
This is like the Covey proverb, &#8220;Begin with the end in mind.&#8221;  In an integration project, the first step is always to define the target of where your data is going to end up.  This is true for a document conversion like XSLT or a EDI or Flat File transformation to XML or another version.  [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdefining-the-data-target-is-the-first-step%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdefining-the-data-target-is-the-first-step%2F&amp;style=normal" height="61" width="50" title="Defining the data Target is the First Step" alt=" Defining the data Target is the First Step" /><br />
			</a>
		</div>
<p><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 Defining the data Target is the First Step" width="150" height="150" />This is like the Covey proverb, &#8220;Begin with the end in mind.&#8221;  In an integration project, the first step is always to define the target of where your data is going to end up.  This is true for a document conversion like XSLT or a EDI or Flat File transformation to XML or another version.  It is also true for ETL tasks where we are getting data in and out of a Database or repository.</p>
<p>Starting the work of transforming data or files without a well defined target for the data will cause you to do extra and unnecessary work, and to repeat some steps when the true destination is known.  It may seem obvious, but many many people fall into this trap, and then don&#8217;t understand why their projects keep exceeding their time budgets.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdefining-the-data-target-is-the-first-step%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fdefining-the-data-target-is-the-first-step%2F&amp;style=normal" height="61" width="50" title="Defining the data Target is the First Step" alt=" Defining the data Target is the First Step" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/d-JXzGi3JkeFDPUaUPIE4Jf1qzs/0/da"><img src="http://feedads.g.doubleclick.net/~a/d-JXzGi3JkeFDPUaUPIE4Jf1qzs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/d-JXzGi3JkeFDPUaUPIE4Jf1qzs/1/da"><img src="http://feedads.g.doubleclick.net/~a/d-JXzGi3JkeFDPUaUPIE4Jf1qzs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/ezOZo0u9bPI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/defining-the-data-target-is-the-first-step/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/defining-the-data-target-is-the-first-step/</feedburner:origLink></item>
		<item>
		<title>Keep a personal copy of all documentation you create.</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/U8cNXkAHs_c/</link>
		<comments>http://www.theintegrationengineer.com/keep-a-personal-copy-of-all-documentation-you-create/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 16:25:46 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Integration Tips]]></category>
		<category><![CDATA[Documentatoin]]></category>
		<category><![CDATA[Tip]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=1000</guid>
		<description><![CDATA[
			
				
			
		
Keeping a copy of all of the documentation you create is a pretty general benifit.  It helps you in three major ways;

Having a personal copy means that if the systems that have the public copies become unavilable, you will still have access to them.
Some times projects that get shelved, lose their documentation.  If you have [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fkeep-a-personal-copy-of-all-documentation-you-create%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fkeep-a-personal-copy-of-all-documentation-you-create%2F&amp;style=normal" height="61" width="50" title="Keep a personal copy of all documentation you create." alt=" Keep a personal copy of all documentation you create." /><br />
			</a>
		</div>
<p><img class="alignleft size-thumbnail wp-image-999" title="buddha-clip-art" src="http://www.theintegrationengineer.com/wp-content/uploads/2010/01/buddha-clip-art-150x150.jpg" alt="buddha clip art 150x150 Keep a personal copy of all documentation you create." width="150" height="150" />Keeping a copy of all of the documentation you create is a pretty general benifit.  It helps you in three major ways;</p>
<ol>
<li>Having a personal copy means that if the systems that have the public copies become unavilable, you will still have access to them.</li>
<li>Some times projects that get shelved, lose their documentation.  If you have a personal copy, when the project comes back to life, you will not be starting over.</li>
<li>And you never know what future project you will be working on that will spark the memory, &#8220;Hey we solved a problem like this on this other project&#8230;&#8221;  And having the documentation for it will help you.</li>
</ol>
<p>I have never regretted keeping a personal copy of documentation.  But I have always regretted knowing that I didn&#8217;t keep one when I could have used it.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fkeep-a-personal-copy-of-all-documentation-you-create%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fkeep-a-personal-copy-of-all-documentation-you-create%2F&amp;style=normal" height="61" width="50" title="Keep a personal copy of all documentation you create." alt=" Keep a personal copy of all documentation you create." /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/3s1g_ZAqtplSDFIcCW2dTeDKhu8/0/da"><img src="http://feedads.g.doubleclick.net/~a/3s1g_ZAqtplSDFIcCW2dTeDKhu8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/3s1g_ZAqtplSDFIcCW2dTeDKhu8/1/da"><img src="http://feedads.g.doubleclick.net/~a/3s1g_ZAqtplSDFIcCW2dTeDKhu8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/U8cNXkAHs_c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/keep-a-personal-copy-of-all-documentation-you-create/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/keep-a-personal-copy-of-all-documentation-you-create/</feedburner:origLink></item>
		<item>
		<title>How to talk about work with friends</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/-K1BlJe6QY4/</link>
		<comments>http://www.theintegrationengineer.com/how-to-talk-about-work-with-friends/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 13:57:44 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Supply Chain]]></category>
		<category><![CDATA[Supply Chain Managment]]></category>
		<category><![CDATA[conversation]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[non-technical]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=553</guid>
		<description><![CDATA[
			
				
			
		
Not to be masochistic, but among friends and neighbours a common topic of conversation between men is our occupations.  &#8220;What do you do?&#8221; is a common question and conversation starter.  As we all know, sometimes it is difficult to explain what we do to those outside of our business.  There are people that I [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fhow-to-talk-about-work-with-friends%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fhow-to-talk-about-work-with-friends%2F&amp;style=normal" height="61" width="50" title="How to talk about work with friends" alt=" How to talk about work with friends" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-607" title="Cocktail_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/12/Cocktail_pzl.jpg" alt="Cocktail pzl How to talk about work with friends" width="87" height="89" />Not to be masochistic, but among friends and neighbours a common topic of conversation between men is our occupations.  &#8220;What do you do?&#8221; is a common question and conversation starter.  As we all know, sometimes it is difficult to explain what we do to those outside of our business.  There are people that I have known for years that still don&#8217;t really understand what it is that I do at work.<span id="more-553"></span></p>
<p><strong>What do you do?</strong></p>
<p>Partially this is caused by the relative youth of the Information Technology fields.  Other fields with a longer history have a high degree of context.  The Butcher, Baker and Candle Stick Maker are all occupations that are so well understood that they are almost self explanatory.  A Systems Administrator or Database Administrator are relatively new and unknown, but they share something with the butcher and maker in that they sound like what they are.</p>
<p><strong>The challenge of history</strong></p>
<p>My first job was doing technical support, and my mother still tells people that I &#8216;fix computers&#8217; for a living.  Consequently her acquaintances continue to try to get free support from me.  (Don&#8217;t even get me started on what my Father-in-law thinks I do.)  I may still have some abilities here, but this is not my job.  It is like saying that a surgeon gives people shots.  Certainly the surgeon has this skill, but this is not what he does.  (And you will have a much less painful experience if you just let the nurse give you the shot.  Trust me.)</p>
<p>So how do I explain what I do?  The first rule is to realize that the part of this job that are exciting to you and me, won&#8217;t really translate to conversation with your neighbour hood storekeeper, farmer, or even teacher.  So I recommend not trying.  This does not mean that I don&#8217;t talk about it.  This means that I start with what is easily understood and then work towards Integration Engineering.</p>
<p><strong>Lie</strong></p>
<p>Okay, that may be harsh.  But really saying, &#8220;I am a computer programmer.&#8221;  Only requires explanation if there is a follow up question.  This might come as more and more people dabble in programming.  (And really, &#8220;computer programmer&#8221; is a rather nebulous term anyway.)  When you say this in at a parent-teacher conference or other semi-social occasion it lets you answer the question and move on to the topic at hand.</p>
<p><strong>Dodge</strong></p>
<p>Again, this is not meant to be harsh.  Say something like, &#8220;I work in procurement/supply chain management/on computers is still easy to understand, and is more accurate.  It keeps the relationship with your priest honest, but it doesn&#8217;t put him to sleep.  If you try this one on, you will come up with a very effective dodge that is entirely accurate but does not put people into comas or confuse them.  (Always gauge your audience and chose the level of detail carefully.)</p>
<p><strong>Be honest</strong></p>
<p>Normally honesty is the best policy.  Sometimes that works here too.  &#8220;I do supply chain automation and integration.  But generally if I go into detail I put people to sleep.  It is very exciting to do, but deathly boring to discuss.&#8221;  There, I have been honest and tried to explain why I am shutting the door on further conversation.  I have found that this one works well after your Mom or your spouse has just tried to explain what you do, and mangled it to the point that the &#8220;lie&#8221; and the &#8220;dodge&#8221; will no longer work.</p>
<p><strong>So what do you do?</strong></p>
<p>I mean, what do you do when asked what you do.  Do you have a pat answer or do you fumble each time trying to maintain conciousness in your listeners?  Or do you have no trouble with this because you don&#8217;t have any social engagements that don&#8217;t involve your co-workers?  Post your answers to this simple question, &#8220;What do you do?&#8221;
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fhow-to-talk-about-work-with-friends%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fhow-to-talk-about-work-with-friends%2F&amp;style=normal" height="61" width="50" title="How to talk about work with friends" alt=" How to talk about work with friends" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/WT_004GExAW7oSEJEv7GamVyJD0/0/da"><img src="http://feedads.g.doubleclick.net/~a/WT_004GExAW7oSEJEv7GamVyJD0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WT_004GExAW7oSEJEv7GamVyJD0/1/da"><img src="http://feedads.g.doubleclick.net/~a/WT_004GExAW7oSEJEv7GamVyJD0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/-K1BlJe6QY4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/how-to-talk-about-work-with-friends/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/how-to-talk-about-work-with-friends/</feedburner:origLink></item>
		<item>
		<title>Passive Monitor</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/SqW2au4JUTY/</link>
		<comments>http://www.theintegrationengineer.com/passive-monitor/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 15:20:16 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Supply Chain Managment]]></category>
		<category><![CDATA[file based]]></category>
		<category><![CDATA[missing data]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[passive]]></category>
		<category><![CDATA[point of failure]]></category>
		<category><![CDATA[queue based]]></category>
		<category><![CDATA[Supply Chain]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=131</guid>
		<description><![CDATA[
			
				
			
		
I remember a day when we had a problem with our order processing.  When we finally figured out what was wrong, there were a few embarrassed people.  We had introduced some new monitoring to the system, but had done so in such a way that we added a point of failure to the ordering process.
This [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fpassive-monitor%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fpassive-monitor%2F&amp;style=normal" height="61" width="50" title="Passive Monitor" alt=" Passive Monitor" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-596" title="monitoring_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/monitoring_pzl.jpg" alt="monitoring pzl Passive Monitor" width="232" height="148" />I remember a day when we had a problem with our order processing.  When we finally figured out what was wrong, there were a few embarrassed people.  We had introduced some new monitoring to the system, but had done so in such a way that we added a point of failure to the ordering process.</p>
<p>This was and is a bad thing.  And it can be avoided easily by making sure that you use a passive monitoring system.  By its very nature the state of a passive system has no impact on the system being monitored.<span id="more-131"></span></p>
<p><strong>File Based System</strong></p>
<p>In a file based system, the pieces that are being monitored create files to report status to the monitor.  The files sit on the file system where the monitor picks them up and processes them.  In this way, if the monitor develops problems, goes down, or gets behind in processing, the production process stays unaffected. (Unless you fill up the disk with files.  But this too can be managed and monitored, passively.)</p>
<p>By designing the status files so that they contain the relevant timestamps and data, it doesn&#8217;t even matter in which order they are picked up and processed by the monitor.  And the health of the monitor can be watched by watching the depth and age of files waiting for processing.</p>
<p><strong>Queue Based System</strong></p>
<p>In a queue based system, the process being monitored writes its status to a queue.  This can be a queue that is part of the system, or residing on the database that the product relies on.  It should not be a queue that is on a non-essential system.  Doing so places the queue as a point of failure for monitoring, or worse, for the product.</p>
<p>Similar to the file system, the monitor goes out and reads from the queue.  This allows the same flexibility for the monitor to get behind without impairing production processes.  And the queue depth and age can be monitored in the same way as the file system to check on the health and activity of the monitor.</p>
<p><strong>Missing points of data</strong></p>
<p>This can be frustrating when trying to plug all of the time stamps for the life cycle of your process onto a map, graph, or other representation.  And when there is only a small amount of traffic on your system, losing even one data point can seem important or even critical.  But including some deductive logic into the monitor, these points can be filled in with the data that exists.</p>
<p>This is the same technique I talked about on my post about Sanjay Shaw and <a href="http://www.theintegrationengineer.com/rfid-supply-chain-managment/">RFID in Supply Chain Managment</a>.  When we gather data points from more locations than needed, and one goes missing, we just gloss it over with an estimated point.  And with a passive system we can insert the real point of data later if it shows up.</p>
<p>We had a problem that sometimes we would not get the final status.  Orders were going out, but the monitor was not getting the last status of the system that delivered them.  We were getting the Order responses.  So we tied in the order response status to the order, and when an order that had no transmission time received a status, we filled in the transmitted time with the Order Response transmission time.  This was not entirely accurate, but stopped hundreds of tickets from being created for investigation where the only problem was the status file.</p>
<p><strong>Insurance</strong></p>
<p>To ensure that your passive system is truly passive, the best test is to turn it off, shut it down, and block access to it and any peices of it that can be turned off and still have the production system running.  This test will show you if you have missed or added something that introduces a new point of failure to your environment.  Anything less will not ensure that the monitor is passive.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fpassive-monitor%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fpassive-monitor%2F&amp;style=normal" height="61" width="50" title="Passive Monitor" alt=" Passive Monitor" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/GKF84X_vJOpQcVtrm1wNMkDwoY8/0/da"><img src="http://feedads.g.doubleclick.net/~a/GKF84X_vJOpQcVtrm1wNMkDwoY8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GKF84X_vJOpQcVtrm1wNMkDwoY8/1/da"><img src="http://feedads.g.doubleclick.net/~a/GKF84X_vJOpQcVtrm1wNMkDwoY8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/SqW2au4JUTY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/passive-monitor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/passive-monitor/</feedburner:origLink></item>
		<item>
		<title>Everything takes 2 weeks</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/nwYSnI0odSs/</link>
		<comments>http://www.theintegrationengineer.com/everything-takes-2-weeks/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 15:14:03 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Mapping]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[Scope]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=558</guid>
		<description><![CDATA[
			
				
			
		
&#8220;So, how long will that take?&#8221;  Is a question that some of us have grown to hate.  And it seems that it is a question, that in various forms, we are asked daily.  (If not more frequently)  And if you have been doing this for any time, you have probably come up with a way [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Feverything-takes-2-weeks%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Feverything-takes-2-weeks%2F&amp;style=normal" height="61" width="50" title="Everything takes 2 weeks" alt=" Everything takes 2 weeks" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-975" title="stopwatch" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/11/stopwatch.jpg" alt="stopwatch Everything takes 2 weeks" width="53" height="71" />&#8220;So, how long will that take?&#8221;  Is a question that some of us have grown to hate.  And it seems that it is a question, that in various forms, we are asked daily.  (If not more frequently)  And if you have been doing this for any time, you have probably come up with a way to answer these questions.  There was a time when I started answering this question with a standard answer of, &#8220;2 weeks.&#8221;  And let me explain why.</p>
<p><strong><span id="more-558"></span>My Answer:</strong></p>
<p>First, let me just say that my answer was really, &#8220;40 hours or 2 calendar weeks.&#8221;  When asked if I could do it in 40 hours but in one week, I would say, &#8220;No.&#8221; and explain that I always had interruptions and other priorities to juggle.  There was never a time that I could only focus on just one issue for a whole week.  Thus it would not make sense to give them the expectation that I could be done in a week, even if the actual hours worked on project was 40 hours.</p>
<p>Second, let me say that these where all mapping change requests, or new document mapping requests.  I am extremely good at this, and have a system for keeping things simple and effective.  You can read more about that by reading some of my mapping posts here.  And following that system, I could pull of a changed or new map in 2 weeks with confidence.</p>
<p>When asked if I was sure that it wouldn&#8217;t take longer, I would shrug and say, &#8220;It never has before.&#8221;  Well not a detailed justification for my time spent, this was an expression of confidence to get my time estimate accepted and put on the plan.</p>
<p><strong>Other Answers:</strong></p>
<p>There are many ways to come up with a time estimate.  I took a class once, that discussed project planning and explained Gantt charts and time lines.  I had been using versions of these for years without knowing they had a name.  I called mine a &#8220;white board&#8221; but I did learn the lingo of projects that was useful when communicating with other how your time line is looking.</p>
<p>Project Planning is a great skill to have, but don&#8217;t get carried away.  Lots of time can be spent on making a project plan instead of actually working.  When you are working as a lone ranger, or small team, extensive planning can actually get in the way.</p>
<p><strong>Team Work:</strong></p>
<p>One of the things that let me get away with the &#8220;2 Week&#8221; time estimate was that I was the only one doing what I was doing.  Its not that I am anti social, it just that I was the only one left from what was once a team of 6.  I was helping support the product, building new features, and writing my own requirements based on tickets and user/manager responses.  And not having to coordinate with other people made me much much faster.  (but of course you have to know what you are doing to pull this off)</p>
<p>I remember sitting in a meeting with a group of developers.  They had been working on an integration process for 6 months and were still months away from completion.  I remember feeling really sorry for them when I realised that my boss had asked me to produce an integration solution for the same thing they had been working on.  Without knowing their situation, I responded with my 2 week estimate.</p>
<p>Well, they were floored, and didn&#8217;t believe I could do it.  I did, and they realised why.  I didn&#8217;t have team meetings, (it was just me).  I didn&#8217;t follow their coding standards and review processes, (not having to teach a team about what I had just done).  I had a test system that looked just like production that I built on, (they had a dev system, that all of their projects were being built on.  And this meant they were always in each others way.)</p>
<p>In the end, (after I had done it my way) they redeveloped it in their way and the project got completed.</p>
<p>This is not a knock on teams.  Teams are important to have.  But sometimes it is smarter and faster, just to give a guy a direction, and then get out of his way.  Teams help with stability and code longevity, but they can slow the process of creation down.  And the bigger the team, the slower it can go.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Feverything-takes-2-weeks%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Feverything-takes-2-weeks%2F&amp;style=normal" height="61" width="50" title="Everything takes 2 weeks" alt=" Everything takes 2 weeks" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/hTNR60ylIrfDuWT7QHyR5Ev5sRw/0/da"><img src="http://feedads.g.doubleclick.net/~a/hTNR60ylIrfDuWT7QHyR5Ev5sRw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/hTNR60ylIrfDuWT7QHyR5Ev5sRw/1/da"><img src="http://feedads.g.doubleclick.net/~a/hTNR60ylIrfDuWT7QHyR5Ev5sRw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/nwYSnI0odSs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/everything-takes-2-weeks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/everything-takes-2-weeks/</feedburner:origLink></item>
		<item>
		<title>Mapping Excersize: 832 to DB</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/eTin4cFzHBk/</link>
		<comments>http://www.theintegrationengineer.com/mapping-excersize-832-to-db/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 22:54:29 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Mapping Exercise]]></category>
		<category><![CDATA[832]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[Mapping]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=896</guid>
		<description><![CDATA[
			
				
			
		
Its time for another mapping exercise.  This time we will receive an EDI 832 in 4010 format, and map the data to a DB or flat file.  Getting catalog data into your procurement system is an important task.  And creating  variety of mapping exercises provides us with a better understanding of how mapping projects work [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fmapping-excersize-832-to-db%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fmapping-excersize-832-to-db%2F&amp;style=normal" height="61" width="50" title="Mapping Excersize: 832 to DB" alt=" Mapping Excersize: 832 to DB" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-276" title="mapping_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/07/mapping_pzl.jpg" alt="mapping pzl Mapping Excersize: 832 to DB" width="200" height="108" />Its time for another mapping exercise.  This time we will receive an EDI 832 in 4010 format, and map the data to a DB or flat file.  Getting catalog data into your procurement system is an important task.  And creating  variety of mapping exercises provides us with a better understanding of how mapping projects work than just having one that tries to be everything.  And mapping is one of the fun things that we get to do.  Following this exercise we will have worked through the the common issues and demonstrated how this process comes together.</p>
<p><strong>Mapping Steps </strong></p>
<p>There are five steps to this mapping process.  Here is a list with a brief description of each one;</p>
<ul>
<li><em>Defining the target</em>:  This is the first step to mapping.  We must know where we are going if we plan on getting there.  And using a <a href="http://www.theintegrationengineer.com/data-mapping/">Target based mapping</a> process we decrease the time and efort of the other steps.</li>
<li><em>Defining the Data Source</em>:  This is the second step to mapping.  Once we know what the target looks like, we know what data we need to complete it.  So this naturally leads us to defining the source(s) of the data.  This can be a single input data file or record, or it can be multiple types of data from multiple sources.</li>
<li><em>Defining the Processes</em>:  Some of the data that we will need in our target will not be in the proper form or format in the source.  We will have to have a process defined in our map to convert the source data into the correct form for the target format.</li>
<li><em>Handling customisation Points</em>:  When we are mapping data, we will see points where we will want to make a decision on what to do.  Not all data is created or received in an equal form.  Thus we may have points in our mapping process where we will need to do a different process depending on the source or content of the data.</li>
<li><em>Monitoring the Process</em>:  After we have created a mapping process we will need to monitor it so that we can know when something unexpected happens.  To do this we must identify the right places in the mapping process for it to report its status to a monitoring process.  This is the last step in the mapping process.</li>
</ul>
<p><strong>Catalog Target</strong></p>
<p>If you have a catalog, then you will have your own schema.  We are getting our schema from a standard Open Office DB template.  This way you can create your own version for this exercise.</p>
<p>The Product table in the Open Office Business table has these fields:</p>
<ul>
<li>ID, INT</li>
<li>CategoryID, INT</li>
<li>Discontinued, BOOLEAN</li>
<li>LeadTime, VARCHAR</li>
<li>ProductID, INT</li>
<li>ProductDescription, VARCHAR</li>
<li>ProductName, VARCHAR</li>
<li>ReorderLevel, INT</li>
<li>Serialnumber, VARCHAR</li>
<li>SupplierID, INT</li>
<li>UnitPrice, DECIMAL</li>
<li>UnitsInStock, INT</li>
<li>UnitsOnOrder, INT</li>
</ul>
<p>These are the basic fields that we will be inserting data into.  We will probably have a process that will validate the supplier ID before inserting new records, but that will come in during the process step.</p>
<p><strong>Next Steps</strong></p>
<p>Following defining our target, we will define our source.  But we will do that in the next instalment of this exercise.   <a href="http://www.theintegrationengineer.com/wp-content/uploads/2009/02/basepapermap.xls">Download</a> and create start your paper map now, we will show them in the next post as well.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fmapping-excersize-832-to-db%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fmapping-excersize-832-to-db%2F&amp;style=normal" height="61" width="50" title="Mapping Excersize: 832 to DB" alt=" Mapping Excersize: 832 to DB" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/pItJmJ5szfdilPhR0vIAbzmIeOw/0/da"><img src="http://feedads.g.doubleclick.net/~a/pItJmJ5szfdilPhR0vIAbzmIeOw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pItJmJ5szfdilPhR0vIAbzmIeOw/1/da"><img src="http://feedads.g.doubleclick.net/~a/pItJmJ5szfdilPhR0vIAbzmIeOw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/eTin4cFzHBk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/mapping-excersize-832-to-db/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/mapping-excersize-832-to-db/</feedburner:origLink></item>
		<item>
		<title>What is SEF?</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/L1ZHeUotuvo/</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[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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhat-is-sef%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhat-is-sef%2F&amp;style=normal" height="61" width="50" title="What is SEF?  " alt=" What is SEF?  " /><br />
			</a>
		</div>
<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.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhat-is-sef%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhat-is-sef%2F&amp;style=normal" height="61" width="50" title="What is SEF?  " alt=" What is SEF?  " /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/-7d4lqYxgp5kO89skMpsttymOGI/0/da"><img src="http://feedads.g.doubleclick.net/~a/-7d4lqYxgp5kO89skMpsttymOGI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-7d4lqYxgp5kO89skMpsttymOGI/1/da"><img src="http://feedads.g.doubleclick.net/~a/-7d4lqYxgp5kO89skMpsttymOGI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/L1ZHeUotuvo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/what-is-sef/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/what-is-sef/</feedburner:origLink></item>
		<item>
		<title>What’s the DIFF?</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/KdkZtNUdsXk/</link>
		<comments>http://www.theintegrationengineer.com/whats-the-diff/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 14:50:18 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[File]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[compare]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[difference]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=517</guid>
		<description><![CDATA[
			
				
			
		

One of the basic tasks Integration Engineers do is to compare files that we use or receive.  There are some interesting and useful tools that people can get out there to DIFF files.  But on Linux and Unix machines around the world there is a native tool that is almost always present.  Amazingly it is [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhats-the-diff%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhats-the-diff%2F&amp;style=normal" height="61" width="50" title="Whats the DIFF?" alt=" Whats the DIFF?" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-518" title="apple-and-orange_pzl" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/08/apple-and-orange_pzl.jpg" alt="apple and orange pzl Whats the DIFF?" width="191" height="159" /></p>
<p>One of the basic tasks Integration Engineers do is to compare files that we use or receive.  There are some interesting and useful tools that people can get out there to DIFF files.  But on Linux and Unix machines around the world there is a native tool that is almost always present.  Amazingly it is called DIFF.</p>
<p>Like some other command-line tools, its interface is not really intuitive.  Lets walk through the basics of how to get use out of this handy file comparing tool.  (If you are working with and comparing EDI files, you might want to look at the <a href="http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/">post on how to unwrap</a> your EDI file so that our line by line comparison is more meaningful.)</p>
<p><span id="more-517"></span></p>
<p><strong>How to used &#8220;diff&#8221;</strong></p>
<p>You can get the real basics by executing &#8220;diff &#8211;help&#8221; to get the basic help and options for this application.  But in short, here is the thumb nail. &#8220;diff&#8221; is followed by some options.  Options are designated by a &#8220;-&#8221; and then a letter indicating the option.  Any options are then followed by the two file names that are being compared.  Lets look at an example.</p>
<p><span style="text-decoration: underline;"><em>Example:</em></span></p>
<p>We have two files, file1.txt and file2.txt</p>
<table style="height: 151px;" border="1" cellspacing="5" cellpadding="5" width="477">
<tbody>
<tr style="text-align: center;">
<th>File1.txt</th>
<th>File2.txt</th>
</tr>
<tr>
<td width="50%">This is a test file:<br />
And this is the first line of the first file.<br />
Thanks.</td>
<td>This is a test file:<br />
And this is the first line of the second file.<br />
Thanks.<br />
Again.</td>
</tr>
</tbody>
</table>
<p>When we issue this command:  &#8220;diff file1.txt file2.txt&#8221; we get this result.</p>
<p style="padding-left: 60px;">2c2<br />
&lt; And this is the first line of the first file.<br />
&#8212;<br />
&gt; And this is the first line of the second file.<br />
3a4<br />
&gt; Again.</p>
<ul>
<li>The first thing we see is &#8220;2c2&#8243;  This is line 2 of the first file, compared or changed to line 2 of second file.</li>
<li>Next we have a &lt; indicating the first file, and the line echoed.</li>
<li>Following this we have a &#8220;&#8212;&#8221; as a separator between the line compared.</li>
<li>Next we have &gt; indicating the second file, and then that line is echoed.</li>
<li>This is a comparison between to lines that were found to be different.</li>
<li>For the next line that is shown, we have &#8220;3a4&#8243; that indicates that there is a line added to the file.</li>
<li>Finally, &gt; indicates the second file followed by the line being echoed.</li>
</ul>
<p>If we were to compare them in the other order, we end with these two lines:</p>
<p style="padding-left: 60px;">4d3<br />
&lt; Again.</p>
<ul>
<li>Here, &#8220;4d3&#8243; that the 4th line on the first file is deleted from the second file.</li>
<li>Following this is &lt; indicating the first file, and echoing the line.</li>
</ul>
<p><strong>Regular Options</strong></p>
<p>Here are the list of options that &#8220;&#8211;help&#8221; gives you, with maybe some more explanation.</p>
<p><em>diff [-b] [-i] [-t] [-w] [-c] [-C] [-e] [-f] [-h] [-n] [-D string] [-l] [-r] [-s] [-S name] [fileone filetwo ] [directoryone directorytwo]</em></p>
<table class="mtable" style="width: 100%;" border="0" cellspacing="1" cellpadding="5">
<tbody>
<tr class="tcw">
<td style="width: 120px;" valign="top">-b</td>
<td valign="top">Ignores spacing differences.  This is useful when white-space doesn&#8217;t matter in what you are comparing.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-i</td>
<td valign="top">Ignores case.  This is useful when case doesn&#8217;t matter in what you are comparing.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-t</td>
<td valign="top">Expands TAB characters in output lines. Normal or -c output adds character(s) to the front of each  line that may adversely affect the indentation of the original source lines and make the output lines difficult to interpret. This option will preserve the original source&#8217;s indentation.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-w</td>
<td valign="top">Ignores spaces and tabs.  Again, for when we don&#8217;t want to include changes in the white-space.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-c</td>
<td valign="top">Produces a listing of differences with three lines of context. With this option output format is modified slightly: output begins with identification of the files involved and their creation dates, then each change is separated by a line with a dozen *&#8217;s. The lines removed from file1 are marked with &#8216;-&#8217;; those added to file2 are marked &#8216;+&#8217;. Lines that are changed from one file to the other are marked in both files with &#8216;!&#8217;.</p>
<p>With our two files we get this output:</p>
<p>*** file1.txt    2009-11-17 10:20:38.000000000 -0700<br />
&#8212; file2.txt    2009-11-17 10:20:51.000000000 -0700<br />
***************<br />
*** 1,3 ****<br />
This is a test file:<br />
! And this is the first line of the first file.<br />
Thanks.<br />
&#8212; 1,4 &#8212;-<br />
This is a test file:<br />
! And this is the first line of the second file.<br />
Thanks.<br />
+ Again.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-C</td>
<td valign="top">Produces a listing of differences identical to that produced by -c with number lines of context.</p>
<p>There is no difference to just -c with our examples if you supply a number.  i.e diff -c 1 file1.txt file1.txt</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-e</td>
<td valign="top">Output an ed script.  I have looked at these, but really haven&#8217;t used this feature for anything real.  I may later if I have time.</p>
<p>With our files it looks like this:</p>
<p>3a<br />
Again.<br />
.<br />
2c<br />
And this is the first line of the second file.<br />
.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-f</td>
<td valign="top">Produces a similar script, not useful with ed , in the opposite order.  (Really, this is exactly like -e except in reverse order.)</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-h</td>
<td valign="top">Does a fast, half-hearted job. It works only when changed stretches are short and well separated, but does work on files of unlimited length.  Options -c, -e, -f, and -n are unavailable with -h. diff does not descend into directories with this option.</p>
<p>With our example files it produces the same output as with no options.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-n</td>
<td valign="top">Produces a script similar to -e, but in the opposite order and with a count of changed  lines on each insert or delete command.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-D string</td>
<td valign="top">Creates a merged version of file1 and file2 with C preprocessor controls included so that a compilation of the result without defining string is equivalent to compiling file1, while defining string will yield file2.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-l</td>
<td valign="top">Produce output in long format. Before the diff, each text file is piped through &#8216;pr&#8217; to paginate it. Other differences are remembered and summarized after all text file differences are reported.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-r</td>
<td valign="top">Applies diff recursively to common subdirectories encountered.  Just like you would expect if you have ever used this with any other command line tools like grep or rm.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-s</td>
<td valign="top">Reports files that are the identical; these would not otherwise be mentioned.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">-S name</td>
<td valign="top">Starts a directory diff in the middle, beginning with the file name.  Basically this is a compare directory after a supplied file name.  Make sure this file exists in both directories or you will be disappointed.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">filenameone</td>
<td valign="top">File one for comparing.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">filenametwo</td>
<td valign="top">File two for comparing.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">directoryone</td>
<td valign="top">Directory one for comparing.</td>
</tr>
<tr class="tcw">
<td style="width: 120px;" valign="top">directorytwo</td>
<td valign="top">Directory two for comparing.</td>
</tr>
</tbody>
</table>
<p>For comparing file, the first four options (-b, -i, -t, -w) are the most useful.  I don&#8217;t start with any options and add them as I need them to reduce the amount of change noise reported in the result set.</p>
<p><strong>diff is your friend</strong></p>
<p>Like many basic tools, &#8220;diff&#8221; is almost always there.  And if you know how to use it effectively, it can really save time and frustration.  Sure there are other cool file comparison tools.  Some are even embedded into other products.  But knowing how to use the basic tools that are always there will be a life saver in a crisis situation.  And the only way to know how to use them is to actually use them sometimes.</p>
<p>Do you use &#8220;diff&#8221; with a set of options that does a specific task for you?  If so, what are they, please share.  And what other basic tools do you use?
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhats-the-diff%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fwhats-the-diff%2F&amp;style=normal" height="61" width="50" title="Whats the DIFF?" alt=" Whats the DIFF?" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/tyh0ahaQ0nOS9bbut5AVHtYlF3I/0/da"><img src="http://feedads.g.doubleclick.net/~a/tyh0ahaQ0nOS9bbut5AVHtYlF3I/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tyh0ahaQ0nOS9bbut5AVHtYlF3I/1/da"><img src="http://feedads.g.doubleclick.net/~a/tyh0ahaQ0nOS9bbut5AVHtYlF3I/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/KdkZtNUdsXk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/whats-the-diff/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/whats-the-diff/</feedburner:origLink></item>
		<item>
		<title>Agile Mapping</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/R7SAaeLlxQs/</link>
		<comments>http://www.theintegrationengineer.com/agile-mapping/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 16:12:24 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Mapping Exercise]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[post process]]></category>
		<category><![CDATA[pre process]]></category>
		<category><![CDATA[Trading Partner]]></category>
		<category><![CDATA[Vendor]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=894</guid>
		<description><![CDATA[
			
				
			
		
If you have just a few Trading Partners, having a unique and separate map for each of them might be a good option.  However, if you have plans to scale your integration to 10s, 20s, or 100s and 1000s of trading partners, having a one map to one trading partner strategy is a recipe for [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fagile-mapping%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fagile-mapping%2F&amp;style=normal" height="61" width="50" title="Agile Mapping" alt=" Agile Mapping" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-912" title="Agile-Mapping-GPS" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/11/Agile-Mapping-GPS.jpg" alt="Agile Mapping GPS Agile Mapping" width="175" height="109" />If you have just a few Trading Partners, having a unique and separate map for each of them might be a good option.  However, if you have plans to scale your integration to 10s, 20s, or 100s and 1000s of trading partners, having a one map to one trading partner strategy is a recipe for a difficult to maintain and support integration solution.  And it doesn&#8217;t have to be this way.  There are a few strategies that will help you create an integration that will scale and be easy to support.</p>
<p><span id="more-894"></span></p>
<p><strong>Industries have common ways to handle data.</strong></p>
<p>This is something that we should understand.  Mandating that others use your standard usage implementation may work if you are Wal-Mart, but is not really necessary.  Most supply chain integrations are industry specific.  Probably most EDI integrations even the non-supply chain ones are also industry specific.  And you will find that most of the Trading Partners in a industry need to use the same data sets.  And you will find that most of them are using them in about the same way.</p>
<p>What this means is that when you set up a map for one Trading Partner, most of that mapping will also work for the next one.  This allows us to write maps that are flexible and can handle the variations in the data without having to have a map for each partner, or a crazy set of conditions that say, For Trading Partner 1 do xyz.&#8221;</p>
<p>This is of course for an inbound process of in other words, EDI data we receive from others.  And it is simple to accept a par number of other piece of data in more than one location and map that to our canonical.</p>
<p>What is more tricky to visualize is how this works on the outbound.  Well it is possible to map a part number or other piece of data to more than one location, this can be confusing to the trading partners that are receiving it.  Instead, we do a pre map manipulation or pre mapping for trading partners that step out of the normal map.  We could also have a post map process if your technology makes that the better choice.</p>
<p>Here is how that will look. First, we will have a map that is our standard preferred mapping.  This map takes our canonical data and maps it into our outbound EDI format.  Next, we create a process that will either modify the structure or content of our canonical to reflect the custom needs.  We also adjust the map to recognize and handle the new fields. Alternatively we could have a post map that maps our standard outbound EDI and alters data or structure.</p>
<p><strong>Strategies:</strong></p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;"><em>1.  Broad mapping:</em></span></p>
<p style="padding-left: 30px;">This is a mapping strategy that I have found works well on mapping data received well from Trading Partners.  One illustration can be found in the discussion of<a href="http://www.theintegrationengineer.com/line-item-part-one-po1/"> line item data</a>.   Where a specific piece of data may be found in more than one location, you create your map to accept this data in all of the valid locations and out put that into your canonical.</p>
<p style="padding-left: 30px;">It is also possible to do this on the outbound or map that formats data for consumption by your Trading Partners.  This is not as straight forward, but there are times when you can see conditions in the data that cause the format or output to change.  When these conditions exist, include them in the mapping and you will have a more agile and flexible map.</p>
<p style="padding-left: 30px;"><em><span style="text-decoration: underline;"> 2.  Pre mapping:</span></em></p>
<p style="padding-left: 30px;">This is a map before the map.  Well it doesn&#8217;t really have to be a whole map.  But the concept is this;  Data received or sent to a Trading Partner needs to be changed on a more Trading Partner specific basis.  It doesn&#8217;t actually need to be a TP condition, these pre maps can detect a data format, and alter it before sending it to the map.</p>
<p style="padding-left: 30px;">For instance, I had a instance where we had a TP that was consistently sending us a DUNS number with the ID of &#8220;1&#8243; and we needed &#8220;01&#8243; for our system.   So we put together a pre-process that would look for these qualifiers of &#8220;1&#8243; and altered it to &#8220;01&#8243;.  In this way our map didn&#8217;t have to have funky code, and we were able to integrate with these trading partners without having to ask them to change their vendor data in their DB that was trimming leading zeroes.  In any case, I have found that pre mapping is useful when there are consistent standards violations or data manipulation that can be corrected systematically.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;"><em>3.  Post mapping:</em></span></p>
<p style="padding-left: 30px;">This is similar to the pre mapping, but your process happens after the map.  This is a good use for mapping data out to your Trading Partner.  And again, they don&#8217;t have to be trading partner specific.  Data going out is altered slightly in form or format before it is delivered.</p>
<p style="padding-left: 30px;">Again, I had a trading partner that transmitted catalog and part lookups in a format with a dash in the part number.  But they didn&#8217;t like getting the dash back on their orders.  So we instituted a simple mapping change that would strip dashes for them.  But later we realized that having a process to fix part number formats was something that more than one Vendor Trading Partner was requesting.  So we moved the mapping condition to a post mapping process that would look at the TP and find any part number rule and apply it.</p>
<p><strong>Flexible and Agile is just better.</strong></p>
<p>Okay, so that is a broad generalization.  But I can back it up with years of experience.  I never regret mapping broadly and implementing pre and post processes.  But I do regret when I have mapped narrowly, tried to have a single trading partner specific map, or include all types of TP specific logic into a map.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fagile-mapping%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fagile-mapping%2F&amp;style=normal" height="61" width="50" title="Agile Mapping" alt=" Agile Mapping" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/IDfFFd6B1aw2PtklWPC81bkS2ac/0/da"><img src="http://feedads.g.doubleclick.net/~a/IDfFFd6B1aw2PtklWPC81bkS2ac/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/IDfFFd6B1aw2PtklWPC81bkS2ac/1/da"><img src="http://feedads.g.doubleclick.net/~a/IDfFFd6B1aw2PtklWPC81bkS2ac/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/R7SAaeLlxQs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/agile-mapping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/agile-mapping/</feedburner:origLink></item>
		<item>
		<title>Usage of EDI specifications</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/XljoJOBkQ2M/</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[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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fusage-of-edi-specifications%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fusage-of-edi-specifications%2F&amp;style=normal" height="61" width="50" title="Usage of EDI specifications" alt=" Usage of EDI specifications" /><br />
			</a>
		</div>
<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.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fusage-of-edi-specifications%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fusage-of-edi-specifications%2F&amp;style=normal" height="61" width="50" title="Usage of EDI specifications" alt=" Usage of EDI specifications" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/EUJ44sYmw8y_paTt4A-AkUcM9O4/0/da"><img src="http://feedads.g.doubleclick.net/~a/EUJ44sYmw8y_paTt4A-AkUcM9O4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/EUJ44sYmw8y_paTt4A-AkUcM9O4/1/da"><img src="http://feedads.g.doubleclick.net/~a/EUJ44sYmw8y_paTt4A-AkUcM9O4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/XljoJOBkQ2M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/usage-of-edi-specifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/usage-of-edi-specifications/</feedburner:origLink></item>
		<item>
		<title>7 Simple Steps of Integration</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/DYPUPw8Qlhs/</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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsimple-steps-of-integration%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsimple-steps-of-integration%2F&amp;style=normal" height="61" width="50" title="7 Simple Steps of Integration" alt=" 7 Simple Steps of Integration" /><br />
			</a>
		</div>
<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>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsimple-steps-of-integration%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fsimple-steps-of-integration%2F&amp;style=normal" height="61" width="50" title="7 Simple Steps of Integration" alt=" 7 Simple Steps of Integration" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/flQ9HWYG5dPBreaLZSSm4D3WBMg/0/da"><img src="http://feedads.g.doubleclick.net/~a/flQ9HWYG5dPBreaLZSSm4D3WBMg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/flQ9HWYG5dPBreaLZSSm4D3WBMg/1/da"><img src="http://feedads.g.doubleclick.net/~a/flQ9HWYG5dPBreaLZSSm4D3WBMg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/DYPUPw8Qlhs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/simple-steps-of-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/simple-steps-of-integration/</feedburner:origLink></item>
		<item>
		<title>Line Item Part Three, The ACK</title>
		<link>http://feedproxy.google.com/~r/TheIntegrationEngineer/~3/rpZuRUQq1zI/</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[Line Item]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[ACK]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[PO1]]></category>
		<category><![CDATA[Segment]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=831</guid>
		<description><![CDATA[
			
				
			
		
ACK is an Acknowledgement 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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fline-item-part-three-the-ack%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fline-item-part-three-the-ack%2F&amp;style=normal" height="61" width="50" title="Line Item Part Three, The ACK" alt=" Line Item Part Three, The ACK" /><br />
			</a>
		</div>
<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 Acknowledgement 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>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fline-item-part-three-the-ack%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.theintegrationengineer.com%2Fline-item-part-three-the-ack%2F&amp;style=normal" height="61" width="50" title="Line Item Part Three, The ACK" alt=" Line Item Part Three, The ACK" /><br />
			</a>
		</div>

<p><a href="http://feedads.g.doubleclick.net/~a/DNn7ZRp5J9b1A0jqbktty5Gp35M/0/da"><img src="http://feedads.g.doubleclick.net/~a/DNn7ZRp5J9b1A0jqbktty5Gp35M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DNn7ZRp5J9b1A0jqbktty5Gp35M/1/da"><img src="http://feedads.g.doubleclick.net/~a/DNn7ZRp5J9b1A0jqbktty5Gp35M/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/TheIntegrationEngineer/~4/rpZuRUQq1zI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/line-item-part-three-the-ack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.theintegrationengineer.com/line-item-part-three-the-ack/</feedburner:origLink></item>
	</channel>
</rss>
