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

<channel>
	<title>Graversen &#187; pi</title>
	<atom:link href="http://graversen.org/category/pi/feed/" rel="self" type="application/rss+xml" />
	<link>http://graversen.org</link>
	<description>Daniels comments</description>
	<lastBuildDate>Fri, 20 Jan 2012 13:31:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>#SAPPHIRE youtube challenge: Meet the right people for you</title>
		<link>http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/</link>
		<comments>http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/#comments</comments>
		<pubDate>Thu, 12 May 2011 20:47:53 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[pi71]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[sap pi]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/</guid>
		<description><![CDATA[I&#8217;m leaving from home in a few hours for SAPPHIRE, and really looking forward to meet all the really cool people there. But you mostly meet people at random, some will help get your objectives. But you have to be lucky. So I thought that it could be interesting to see how was at the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m leaving from home in a few hours for <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwww.sapandasug.com%2F&sref=rss">SAPPHIRE</a>, and really looking forward to meet all the really cool people there. But you mostly meet people at random, some will help get your objectives. But you have to be lucky.
</p>
<p>So I thought that it could be interesting to see how was at the event that could make a difference. The ideal people for me to meet would be people working with SAP Process Integration (PI). It is difficult to find them and you have to meet a lot of people, which is nice though.
</p>
<p>I decided to make a video saying how I wanted to meet. It would though probably be nicer if other people did the same. So if you are up for the challenge. Create a youtube video about how you want to meet. The format can be whatever you can make. If it is with your mobile phone it is also great.
</p>
<p>Just make a video reply to my movie and tag the video with #sapphire and #sapphiremeet.
</p>
<p>Hire is my video.
</p>
<p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/fBpLTAxaCKg?hl=da&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/fBpLTAxaCKg?hl=da&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
 </p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book of the week: Cradle to cradle and SAP development</title>
		<link>http://graversen.org/2011/05/11/book-of-the-week-cradle-to-cradle-and-sap-development/</link>
		<comments>http://graversen.org/2011/05/11/book-of-the-week-cradle-to-cradle-and-sap-development/#comments</comments>
		<pubDate>Wed, 11 May 2011 09:58:56 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[enviorment]]></category>
		<category><![CDATA[sap pi]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://graversen.org/?p=349</guid>
		<description><![CDATA[This week I was reading Cradle to Cradle from Michael Braungart and William McDonugh. The book gave room for thought. Both on how we create more enviormental friendly products. But was triggered me most was how it also applys to the usage in SAP. Vishal Sikka mention the timeless software. Where software can continue to [...]]]></description>
			<content:encoded><![CDATA[<p>This week I was reading Cradle to Cradle from Michael Braungart and William McDonugh. The book gave room for thought. Both on how we create more enviormental friendly products. But was triggered me most was how it also applys to the usage in SAP.</p>
<p>Vishal Sikka mention the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fvishalsikka.blogspot.com%2F2008%2F10%2Ftimeless-software.html&sref=rss">timeless software</a>. Where software can continue to run for ever, but just get a new front.</p>
<p>As a developer you can also apply some of this. How do you make software that is easy to get started with.</p>
<p>See the video hire.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/9Z0Pj4tyj2Q?hl=da&#038;fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/9Z0Pj4tyj2Q?hl=da&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></object></p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2011/05/11/book-of-the-week-cradle-to-cradle-and-sap-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using SFTP for windows in PI</title>
		<link>http://graversen.org/2009/07/29/using-sftp-for-windows-in-pi/</link>
		<comments>http://graversen.org/2009/07/29/using-sftp-for-windows-in-pi/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 19:20:12 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/07/29/using-sftp-for-windows-in-pi/</guid>
		<description><![CDATA[SAP Process Integration (PI) does not have the ability to fetch data from a SFTP server running the SSH protocol. This script will make it possible to fetch data via SSH SFTP. ]]></description>
			<content:encoded><![CDATA[<p>Last December I <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F12426&sref=rss">wrote</a> about how to use SFTP SSH from a Unix server, without using a Seeburger Adapter. SAP PI/XI cannot be used to access SSH SFTP sites directly, but this script can help. There have been many requests for a version which also works on windows. I do not have access to a windows server with PI or XI so it is a little difficult to test for me.
</p>
<p>I have now written the following script, which works on my Vista labtop. I have not tested it on Windows 2003 or Windows 2008, where most PI systems will run.
</p>
<p>I have used <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwww.chiark.greenend.org.uk%2F%7Esgtatham%2Fputty%2F&sref=rss">Putty</a> for creating the SSH connection. I have used the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fthe.earth.li%2F%7Esgtatham%2Fputty%2Flatest%2Fx86%2Fpscp.exe&sref=rss">pscp</a> (an SCP client, i.e. command-line secure file copy). To try something different then using SFTP. SCP makes it easier to get files which should exist in a directory.  Pscp should be downloaded and saved in the same directory as the script.     
</p>
<p>The script looks like the following.
</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@echo off<br />
REM PARAMETERS<br />
REM %1 target file &nbsp;PI %F<br />
REM %2 query for where the file is located ie. root@figaf.com:dir/* <br />
REM %3 SSH Password<br />
<br />
REM RESET the target file <br />
echo '' &gt;%1<br />
<br />
<br />
SET TARGETDIR=%~d1%~p1download<br />
echo %TARGETDIR%<br />
<br />
IF EXIST %TARGETDIR% GOTO SKIPCREATEDIR<br />
&nbsp; &nbsp;mkdir &nbsp;%TARGETDIR%<br />
:SKIPCREATEDIR<br />
del /Q %TARGETDIR%\*<br />
<br />
<br />
pscp.exe -pw %3 %2 %TARGETDIR%<br />
<br />
type &nbsp;%TARGETDIR%\* &gt; %1</div></div>
<p>The script takes the following parameters.
</p>
<ol>
<li>The %F which is the name of the file, which the adapter is currently reading.
</li>
<li>A the location of the file on the server side in the form &#8220;user@server:path/[filter*] ie. root@sftp.figaf.com:dir/SKB*. This command logon with the user root on the host sftp.figaf.com. Then looks in the directory dir, relative to the login dir and the selects all files starting with SKB.
</li>
<li>The users password.
</li>
</ol>
<p>The command in the communication channel  should look something like.
</p>
<p><em>C:\scripts\sshftp.bat %F  </em>root@sftp.figaf.com:dir/SKB*. <em><br />
		</em></p>
<p>I have only tested with password, but pscp might also work with using ssh keys.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/07/29/using-sftp-for-windows-in-pi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP PI XML Mappings using groovy</title>
		<link>http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/</link>
		<comments>http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 11:50:42 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi]]></category>
		<category><![CDATA[pi71]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[process integration]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[transformation]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/</guid>
		<description><![CDATA[Using Groovy as java mappings for transformation of XML documents in the SAP PI or XI. ]]></description>
			<content:encoded><![CDATA[<p>Creating XML mapping in Java have for me always been difficult, it has been possible but I would prefer other tools. I was looking at scripting languages like Ruby/JRuby or Groovy for creating some web apps. Those languages seem quite hot right now. On the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwiki.sdn.sap.com%2Fwiki%2Fdisplay%2Fevents%2FComposition%2Bon%2BGrails%2B-%2BComposition%2BEvolved&sref=rss">SCN Wiki</a> a group has implemented the Grails (groovy on Rails) on the Netweaver system, as Composition on Grails. With this tool it is possible to applications with a Webdynpro look and feel.  Grails is a framework for creating webapps with less coding.</p>
<p><a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fgroovy.codehaus.org%2FGetting%2BStarted%2BGuide&sref=rss">Groovy</a> is a scripting language designed on the basis of Java. Groovy script is compiled into Java classes, and both Java and Groovy can be mixed. This makes the implementation easier, just start writing Java and when you feel like use some of the smarter features of Groovy you can use them.</p>
<p>While I was looking at Grails, I thought that I would be possible to use it in PI. One place could be in java mappings. I&#8217;ll describe the steps that I have taken to implement this.</p>
<ol>
<li><a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fgroovy.codehaus.org%2FDownload&sref=rss">Download</a> and install the groovy library</li>
<li>Get the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fgroovy.codehaus.org%2FEclipse%2BPlugin&sref=rss">Groovy plugin</a> to Eclipse, this make developing much easier.</li>
<li>Create a new Eclipse project</li>
<li>Insert the aii_map_api.jar in the project, to be able to implement Streamtransformation service.</li>
<li>Create a new Groovy file in the source folder, with the name GroovyMapIdoc.groovy, then Eclipse know that it is a groovy file.</li>
<li>Create the mapping of your file. I have attached my example code bellow.</li>
<li>Compile the Groovy files using the context menu on the GroovyMapIdoc.groovy file.</li>
<li>Zip the content of the bin-groovy in the project folder and upload it, as an imported archive in the Integration builder. Alternative use <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F5341&sref=rss">ant build</a> to create the zip files.</li>
<li>Upload the two files Groovy-1.6.1.jar and asm-2.2.3.jar as imported archives. They can be found in &lt;GROOVY_HOME&gt;\lib</li>
<li>Activate and use the mapping.</li>
</ol>
<p>I would expect people trying this to have a good knowledge of using XI or PI Java mappings, because it is a requirement for the development of mappings.</p>
<p>One example I always have considered, was my first challenging mapping experience. Posting financial post with more than 1000 lines to the FIDCCP02 idoc. The FIDCCP02 only accepts 999 lines. The posting can be created multiply idocs with 998 lines and the post a balance on each item. This way all documents will balance.</p>
<p>The document is transformed from the left document to the right. I have for this example used a max size of 3 to make testing easier.</p>
<p><img src="http://graversen.org/wp-content/070309_1150_SAPPIXMLMap1.png" alt="" height="265" /><img src="http://graversen.org/wp-content/070309_1150_SAPPIXMLMap2.png" alt="" height="265" /></p>
<p>The code that I have used for the mapping is.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package com.figaf.mapping<br />
<br />
import com.sap.aii.mapping.api.StreamTransformation;<br />
import java.io.InputStream;<br />
import java.io.OutputStream;<br />
import java.util.Map;<br />
<br />
import groovy.xml.MarkupBuilder<br />
<br />
class GroovyMapIdoc implements StreamTransformation{<br />
<br />
&nbsp; &nbsp;Map param;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; void setParameter(Map param) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.param = param;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; // Number of lines pr idoc<br />
&nbsp; &nbsp; def step=3 <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp;* Implementation of the execution method<br />
&nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; void execute(InputStream input, OutputStream out) {<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Parse the input using the XMLSlurper<br />
&nbsp; &nbsp; &nbsp; &nbsp; def FICCP01 = new XmlSlurper().parse(input)<br />
&nbsp; &nbsp; &nbsp; &nbsp; // get the different lines using the GPath<br />
&nbsp; &nbsp; &nbsp; &nbsp; def Lines = FICCP01.IDOC.LINE<br />
&nbsp; &nbsp; &nbsp; &nbsp; // create a writer example <br />
&nbsp; &nbsp; &nbsp; &nbsp; def writer = new OutputStreamWriter(out)<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; def xml = new MarkupBuilder(writer)<br />
&nbsp; &nbsp; &nbsp; &nbsp; // create the root element and fill data into it. <br />
&nbsp; &nbsp; &nbsp; &nbsp; xml.FICCP01(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get the number of idocs to be created. <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; def numIdocs = &nbsp; Lines.size()/step + (Lines.size()%step&gt;0?1:0) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // loop for each idoc<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for ( i in 0..numIdocs-1 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // find the limit for the current idoc<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; def max = Math.min( Lines.size(), i* step+2)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // create sum ellement to create balances<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; def sum = 0.0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;def lineno=1;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IDOC(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // create the number segment, using GPATH<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NR(FICCP01.IDOC.NR )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // for each line in the range do the following<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Lines[i*step..max].each{oldline-&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// create a &nbsp;new Line node, in the out put element<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// with the following content<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LINE(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NO(lineno++)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Text(oldline.Text.text())<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Amount(oldline.Amount.toBigDecimal())<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// update the sum<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sum +=oldline.Amount.toBigDecimal()<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // create a balancing line, with balances the result<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LINE(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NO(step+1)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Text('Balance')<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Amount(-sum)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // write the xml to output<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;writer.flush()<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;writer.close()<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; <br />
}</div></div>
<p>Behind the scenes the Groovy file is changed in to java classes. Because Java does not support Closures natively different subclasses are created. Try to have a look on them using a decompiler like <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwww.varaneckas.com%2Fjad&sref=rss">jad</a>.</p>
<p><strong>Conclusion</strong></p>
<p>Groovy could be a way to improve the how java mappings are created. The XML generation is easier to handle then how it would have been created in Java and it is more powerful than XSLT. It takes some effort to get use to the closures concept of Groovy and the other notation, but it seems to work real well.</p>
<p>I don&#8217;t think the performance issue with the mapping is a problem. There is an overhead to load the groovy libraries and the code is probably not as optimized if it was written directly in java. I have not made any measurements for this.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The future of integration consulting</title>
		<link>http://graversen.org/2009/06/18/the-future-of-integration-consulting/</link>
		<comments>http://graversen.org/2009/06/18/the-future-of-integration-consulting/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 10:14:07 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[integration]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[saas]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[consulting]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/06/18/the-future-of-integration-consulting/</guid>
		<description><![CDATA[SaaS integration could have an impact on how SAP integration consultants are going to work in the future. ]]></description>
			<content:encoded><![CDATA[<p>For the last couple of years the job considering integrating legacy systems with the SAP ERP system has stayed the same. Each system is unique, so integration had to start from scratch. There could be some limited reuse between integrations, but they did not have a large impact.
</p>
<p>Many of companies are going to use SaaS (at least that is what many company is betting on). SaaS strategies could be seen as a way to get a best-of-breed application. Some of the SaaS applications are probably going to replace old legacy applications or reduce the number of more legacy applications being created. Integration between SAP and SaaS applications are wherefore going to play a large role in the integration work done with PI.
</p>
<p>My experience with integration with a systems, is that it takes an average of 10 days pr system (The development could be completed within 2 days, but support during testing and bug tracking is required). If the complexity is getting larger or requires the use on new services in SAP, the number of days will skyrocket. Large parts of the integration work are concern error handling, when some unexpected data is received. The price for 10 day integration is at least €10.000, but with a high uncertainty. Such start prices will many business cases fail in adopting a SaaS application, because of the initial investment.
</p>
<p>One way to lower this price is if the SaaS vendors also use the same Enterprise Services that SAP is exposing. Then integration will just be to connect the two interfaces and will just require testing for the business functionality. From a customer perspective this would be the ideal situation, and lower the cost of integration.
</p>
<p>If there are no Enterprise Services to cover the SaaS integration, two things should happen; Either an Enterprise Service is created or a PI integration is created. The two options can be produced by a consulting partner and then shared under some license. Open source could be an option if it was supported by the SaaS provider.
</p>
<p>Creating reusable integration parts can be difficult, especially in small markets like Denmark. The Danish government was very keen on electronic invoices(<a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FOIOXML&sref=rss">OIOXML</a>), using the UBL standard. That led to a race for consultancies to create templates for integrations. I do not know any company, how got a large enough part of the integrations, to have justified a large upfront investment a shrink wrapped solution.
</p>
<p>Reuse is possible for some domains. I have been involved in project, where reuse of BPM functions lead to easy integration with the 2th and 3rd application. In this project the Enterprise Service was implemented as a ccBPM in PI. The later integrations needed some adjustments to support the new functions and integration protocols, but the overall framework proved successful.
</p>
<p>We asked the vendors of the third party application, if they had any integration to SAP. They all did have some integrations, but for different versions of SAP and application components. Challenges like this are going to continue because of the flexibility in SAP. In some cases can different modules handle the same functions. I doubt an Enterprise Service should handle the functionality in two different modules.
</p>
<p>With SaaS application is the marked larger since it is global and allow for packaged solutions. The packaged solutions can both be PI mappings and BPM&#8217;s or Enterprise Services and sold via <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fecohub.sdn.sap.com%2F&sref=rss">Ecohub</a> or from the SaaS vendor.
</p>
<p>A way a business model for this could be to give a lower rate on the first implementation; then sell this integration to other customers. It will take a few iterations before a shrink wrapped integration can be released.
</p>
<p>To have an integration for SAP must be a really interesting for SaaS providers, because it will make it easier for customers to start using their services. If the customer is going to spend a large number of days on integrating the application, it is less likely to happen. Without an integration to the ERP system, some of the benefits are removed from the application.
</p>
<p>For consultants will it also be interesting, if you only have to produce something once and then be able to sell it multiply times. The issue is then how the global marked can be supported, but remote consulting via VPN can probably solve most of the issues.
</p>
<p>I&#8217;m looking forward to see if, this is going to be the business model for future PI consultants.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/06/18/the-future-of-integration-consulting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Naming conventions for software components.</title>
		<link>http://graversen.org/2009/05/28/naming-conventions-for-software-components/</link>
		<comments>http://graversen.org/2009/05/28/naming-conventions-for-software-components/#comments</comments>
		<pubDate>Thu, 28 May 2009 11:34:27 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/05/28/naming-conventions-for-software-components/</guid>
		<description><![CDATA[During the different XI/PI implementations i have been involved with I have experiance differet naming conventions. I would like to share the different types of conventions that I have seen and my thought of it. There is a great document for best practice on naming conventions. Also see Thorstens blog about the subject. The naming [...]]]></description>
			<content:encoded><![CDATA[<p>During the different XI/PI implementations i have been involved with I have experiance differet naming conventions. I would like to share the different types of conventions that I have seen and my thought of it.
</p>
<p>There is a great document for best practice on <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fsdn%2Fgo%2Fportal%2Fprtroot%2Fdocs%2Flibrary%2Fuuid%2F90b213c2-d311-2a10-89bf-956dbb63aa7f&sref=rss">naming conventions</a>. Also see <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F12417&sref=rss">Thorstens blog</a> about the subject. The naming convention does not explicit ways to name things. In this blog, I would instead describe how namespaces and software components can be derived.  For all the different types of interfaces lot of effort has to be devoted create abbreviation and create a meaning full structure, this will not be covered in this blog, but hopefully in a new blog.
</p>
<p>In this blog the term object refers to all object created in the Integration Builder Repository, like scenarios, interface mapping or message interface.
</p>
<p><strong>Simple Group<br />
</strong></p>
<p>With the first implementations we used a very rough, method to divide the object based on the target system. I think we had software components like SAPR3, SAPXI and all the legacy systems as separate software components.
</p>
<p>This method was very easy to get started on and did not require a lot of work op front. It was pretty easy to find which software components to use. The component names could be implemented at all customers, because it was the same setup they all used.
</p>
<p>The namespaces just contained the legacy system name, so it was more a point to point connection. It was easy to find objects involved in a scenario. You just use the legacy system name, and you go the information you needed from the object involved.
</p>
<p>The problem with this method, was that a lot of interfaces are grouped into the same component. This can make it more difficult to transport the components; at least you need to be more careful, what you are promoting to production. A large problem with this tight coupling was that interfaces were not named for reuse, or a refactoring should exists. This limits the SOA cababilities, which are one of the key selling points for XI/PI.
</p>
<p>In recent implementations more focus was on making an SOA architecture. I my view this requires a more process centric approach. I have seen two different methods for creating a naming convention for grouping the objects smarter. Using the Solution Manager description of the processes, or using Solution Maps, which is SAPs standard way to look at processes in organizations.
</p>
<p>
 </p>
<p><strong>Solution manager (SOLMAN)<br />
</strong></p>
<p>In SAP implementation SOLMAN is vital part, to describe the business process used in the organization. This is both true in the implementation phase and I believe also after the solution has been implemented.
</p>
<p>I have not been involved in designing the SOLMAN maps used for describing the processes. What I have seen is that the business process has been used for grouping of the scenarios. By using the same structure for the object, there is a clear mapping from SOLMAN to the PI respository.
</p>
<p>Using the SOLMAN grouping of processes gives to following advantages.
</p>
<ul>
<li>The business knows which process you are working on, since they have the same notation. This way it is easy for a developer to communicate, where there is a problem.
</li>
<li>The architecture and naming is given, because the naming has already been created.
</li>
</ul>
<p>The disadvantages
</p>
<ul>
<li>If the project has multiply phases more maps can be created. With this it could be a little more difficult to find the mapping between the SOLMAN and PI objects. This could be solved with the help of software component versions.
</li>
<li>If you are designing a project, which does not involve SOLMAN, then you need to create a new structure or create the SOLMAN structure.
</li>
</ul>
<p><strong>Solution Maps<br />
</strong></p>
<p>On a resent project we used the SAP Solution Maps as a source grouping our objects. The solution maps contain all the different processes used in an organization. There are a number of different solution maps, both the general ERP but also industry specialized maps.
</p>
<p><img src="http://graversen.org/wp-content/052809-1134-namingconve11.png" alt=""/>
	</p>
<p>An example solution map.
</p>
<p>
 </p>
<p>Advantages of Solution maps:
</p>
<ul>
<li>Structure which matches business organization.
</li>
<li>Common naming conventions between projects (really nice if you are a consultant). If used on all projects it is easy to find the objects. There is no need to considerer which naming conventions for software components and namespaces, because they can be defined before they are used.
</li>
<li>The convention is prepared for e-SOA, because the solution maps are used to place the enterprise services. There is though a small problem, about the enterprise services are places in the SAPAPP component. This can be solved in the design phase with placing the action in the software component corresponding to the Solution Map.
</li>
<li>Interface objects are placed in a way, relating to the service they perform. Different processes can use the same service.
</li>
</ul>
<p>
 </p>
<p>Disadvantage
</p>
<ul>
<li>It can be difficult to communicate issues about a scenario, because the implementation is focused on SOLMAN and not on the solution maps
</li>
<li>It can be difficult to place an object in the correct group. Is this service use for accounts payable or sales order management.
</li>
</ul>
<p><strong>Conclusion<br />
</strong></p>
<p>Both SOLMAN and solution maps focus on the process. They have both some advantages and disadvantages. I currently like the Solution Maps method best, because it allows a standard setup for all customers. I also like the point with having services grouped pr function, so multiply processes can use the same service.
</p>
<p>I need to share more thought on how, I see the Solution Maps solution. This will be describe in a blog soon.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/05/28/naming-conventions-for-software-components/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PI documenter services has been upgraded to include User defined functions</title>
		<link>http://graversen.org/2009/05/26/pi-documenter-services-has-been-upgraded-to-include-user-defined-functions/</link>
		<comments>http://graversen.org/2009/05/26/pi-documenter-services-has-been-upgraded-to-include-user-defined-functions/#comments</comments>
		<pubDate>Tue, 26 May 2009 08:52:39 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi]]></category>
		<category><![CDATA[pidocumenter]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/05/26/pi-documenter-services-has-been-upgraded-to-include-user-defined-functions/</guid>
		<description><![CDATA[The pi documenter service has been upgraded with new functionality. It is now possible to see user defined functions and compare functions between mappings. ]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F14129&sref=rss">first release</a> of the open source version of the documenter library did not have support for the newest PHPExcel. It was therefore not deployed as a service on the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwww.figaf.com%2Fservices%2Fpi-diff.html&sref=rss">figaf homepage</a>. I have now upgraded the service to support the newest release. The functionality is still free and works the same way.</p>
<p>I finally got time to work with the code and fund the bug, which did not allow for the newest PHPExcel library. The problem was that I had to much reuse of functions. When I created a difference document, I created two documentation documents. The mapping information was then extracted from the two documents and compared to create the difference document. I created a new Excel serializer to write the different documents, a problem occurred.</p>
<p>I also go time to a feature, which I have been requested. That was to get user defined functions in the documentation. A more needed function was to include the UDF in the difference functions, so it is possible to see which user defined function has changed.</p>
<p><img src="http://graversen.org/wp-content/052609-0852-pidocumente1.png" alt="" /></p>
<p>For the documentation I have decided not to include comments. I believe comments for this instead should be included in the source code. Is this a plausible way to look at things, or should I reconsider the design?</p>
<p>I have not had access for a PI 7.1 system. If you are running 7.1 would you test my service and see if it works. If it is not working would you send the XIM file and I will create a new version, which allows for PI 7.1 User defined mappings.</p>
<p>Do you have any other request for functionality, then comment in this blog or in the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fcode.google.com%2Fp%2Fpidocumenter%2Fissues%2Flist&sref=rss">google defect log</a>.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/05/26/pi-documenter-services-has-been-upgraded-to-include-user-defined-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release of PI documenter tools as open source</title>
		<link>http://graversen.org/2009/04/29/release-of-pi-documenter-tools-as-open-source/</link>
		<comments>http://graversen.org/2009/04/29/release-of-pi-documenter-tools-as-open-source/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 13:24:15 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[pidocumenter]]></category>
		<category><![CDATA[sap]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/04/29/release-of-pi-documenter-tools-as-open-source/</guid>
		<description><![CDATA[I released the two services for PI to get documentation of mappings and to compare two mappings to see what have changed. The release to those services can be found in the two blogs. After the release people have been asked if it was possible to run the tools at the users own computer instead [...]]]></description>
			<content:encoded><![CDATA[<p>I released the two services for PI to get documentation of mappings and to compare two mappings to see what have changed. The release to those services can be found in the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F12611&sref=rss">two</a><br />
<a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F13586&sref=rss">blogs</a>.</p>
<p>After the release people have been asked if it was possible to run the tools at the users own computer instead of the server version. And I have been thinking about releasing the scripts as commercial products to accommodate this request. It is possible to create compiled PHP code, which can be executed at local PC&#8217;s. I did decide against it because it would require a product to be more mature then the product is and did not believe the marked was large enough and marketing would be difficult. By releasing the product as open source it might be possible to get other to contribute and create a service, which could help many more.</p>
<p>The product was original designed to run on a server in a controlled environment. But with this version I had to refactor some of the code to support the usage a client perspective. A problem is that script is extracting a lot of files from the XIM files. These files need to be cleaned up and I used the quick solution to use the windows Delete command to do this clean up. There are some other places which have not been cleaned up yet, they will be cleaned up in the next release.</p>
<p>One of the challenges with releasing software as open source is that it exposes ones coding capabilities. I would say that there is a long way to go before I&#8217;m able to get a living from coding PHP. The code seems to work, but the refactoring is a little more time consuming.</p>
<p>You can find the code and installation guides at <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fcode.google.com%2Fp%2Fpidocumenter%2F&sref=rss">code.google.com.</a></p>
<p>If you want to help with improving the code, please join the group and help improve the product.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/04/29/release-of-pi-documenter-tools-as-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on versioning of PI components</title>
		<link>http://graversen.org/2009/02/19/thoughts-on-versioning-of-pi-components/</link>
		<comments>http://graversen.org/2009/02/19/thoughts-on-versioning-of-pi-components/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 21:48:46 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[versions]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/02/19/thougths-on-versionen-of-pi-components/</guid>
		<description><![CDATA[This blog describes some of the thoughts that I have on using versions for different software component versions for development and support tracks. Why The use of versions as a way for managing releases has been used for a long time to maintain programs. With the help of a revision control program is it possible [...]]]></description>
			<content:encoded><![CDATA[<p>This blog describes some of the thoughts that I have on using versions for different software component versions for development and support tracks.
</p>
<p>
		<strong>Why<br />
</strong></p>
<p>The use of versions as a way for managing releases has been used for a long time to maintain programs. With the help of a revision control program is it possible to get an overview of what releases are build and which changes have been made. This will make it easier to give a better understanding of what is promoted to production.
</p>
<p>On my current PI project we have different phases. We have just gone live with the first part and is currently developing the second part. After each phase a release is tested and moved to production. While the second phase is being developed the first phase must be supported, to ensure corrections can be moved into production before the next release.
</p>
<p>PI makes it possible to use different versions of software components, to make it possible to use each version. Like other versioning tools is it a challenge to use it correct. I&#8217;ll describe, how we have used it and what we have learned.
</p>
<p><strong>How to use versions<br />
</strong></p>
<p>The main part of configuring different versions is fairly easy. It just requires the users to create a new software component with a new version identifier. The first release will have version 1.0 and the second version will have version 2.0 and otherwise will be placed in the same products. Remember to add dependencies to the version 2.0 of the interface components, assuming the interface components also are upgrade. The version 2.0 should also be installed on the same systems as the version 1.0 components, otherwise it could cause problems.
</p>
<p>Create the namespaces which will be used in version 2.0. Then make a release transfer, where the objects from version 1.0 are copied to version 2.0. The Release Transfer can be found at Tools Menu, and it works much like the export function. Only content from version 1.0 is copied if a similarly namespace is in the version 2.0 component.  You have now copied the content to the version 2.0 and can make changes in each component separate.
</p>
<p>With the copy all object is copied to version 2.0. Objects will continue use the depended objects from version 1.0. For instance will a Message Mapping still use the Messages from the version 1.0. Unless the Message has been imported via dependent object, then the Mapping will use the Message from version 2.0 of the dependent software component.
</p>
<p>With this upgrade maneuver the objects, will still be the same with very little change to them. It is a problem in the beginning but after getting use to it seems like a good idea. When changes are required simply alter the scenario to use a new interface mapping and maybe actions, and then add the functionality and the functionality can be used.
</p>
<p>We tried to copy objects which had imported messages from the imported components. We therefore had the message types from version 2.0 in our 2.0 mappings. I do not think that this was a smart move, since I more like the idea of having to select when to upgrade a message type. Therefore this trick only works for abstract mappings, which have to be imported via the imported components. .
</p>
<p><strong>Objects and scenarios<br />
</strong></p>
<p>I have earlier written about using <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F10282&sref=rss">scenarios for documentation</a> and dialog tool for communicate the process with the business. With the help of scenarios, it is easier to maintain which version will be used.
</p>
<p>When scenarios are copied to version 2.0 it will still point to version 1.0 mappings and actions. When changes are made to the version 2.0 object the scenario must be change to reflect that the mapping is changed. It is thereby possible to make configuration on a system, while maintain everything from version 1.0 except the mapping which has to be changed.
</p>
<p><strong>Support<br />
</strong></p>
<p>The use of two versions can cause problems. When a support issue arrives, it must be correct at version 1.0. But this change is not maintained in version 2.0. It is therefore necessary to somehow maintain both versions. If this is not done the problem will exist again in when version 2.0 is deployed. This can be difficult because it requires the users to implement the changes in version 2.0, and it gets more complicated if the involved object has been altered for version 2.0. If objects have not been altered in version 2.0, release transfer is possible again. If the object has been changed in version 2.0, the release transfer will show that conflicts exist.
</p>
<p>To avoid having to develop thing twice and make sure that, we make the same changes to version 2.0, we made some changes to the process.
</p>
<ul>
<li>First we have decided that some processes will not be changed in face 2. Those object have been change so we use the version 2.0 in production. This will remove the need to maintain those objects in both versions.
</li>
<li>Secondly we have decided on some systems which will be sent into production and maintain in version 1.0. This system shared BPMs with other systems, which will be changed in version 2.0 to support new features.
</li>
</ul>
<p><strong>Namespaces and versioning    <br />
</strong></p>
<p>The use of namespaces could make scenes for some areas. Then the version number could be a part of the namespace. It would make it clear if an object contained content from a different version.  If this approach was use then it will not be possible to use release transfer, because the namespace differed. I think that this probably makes most sense to use when communicating with third parties and the WSDLs need to be shared and agreed on which versions are used.
</p>
<p>
 </p>
<p><strong>Testing<br />
</strong></p>
<p>Since we need to be able to support the current running production system and creating we have to have to lines of ERP systems. I believe that this is a common setup for ERP projects. For the PI development it is just to configure the correct scenarios version for the correct ERP and third party systems. It hereby seems possible to perform the support alongside development of phase 2.
</p>
<p><strong>Conclusion<br />
</strong></p>
<p>The use of versions is pain and requires developers to check what they are doing. I have avoided the use of versions for 4 years now, but have finally agreed to use version. The main argument was, that project had deliverables in two stages.  I believe that it is correct to use versions, but it still requires caution since it is easy to break the setup. </p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/02/19/thoughts-on-versioning-of-pi-components/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using PI scenarios</title>
		<link>http://graversen.org/2008/07/11/using-pi-scenarios/</link>
		<comments>http://graversen.org/2008/07/11/using-pi-scenarios/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 15:37:26 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[modeling]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://graversen.org/2008/07/11/using-pi-scenarios/</guid>
		<description><![CDATA[I have not been a fan of the scenarios created in XI and PI. I have mostly used the scenarios to document objects, which already had been implemented. By adopting this process the scenarios was often lacking functionality or missing important objects. The scenarios served mostly as a form of documentation, for PI developers with [...]]]></description>
			<content:encoded><![CDATA[<p>I have not been a fan of the scenarios created in XI and PI. I have mostly used the scenarios to document objects, which already had been implemented. By adopting this process the scenarios was often lacking functionality or missing important objects. The scenarios served mostly as a form of documentation, for PI developers with less knowledge of the interfaces designed.</p>
<p>My main reason for not using the scenarios was the following.</p>
<ul>
<li>They could only be used to configure some objects in the auto configuration phase. It was not possible to generate a sender agreement, which then had to be created manually.</li>
<li>When new scenarios had to be configured, partners and systems should be selected. For configuring just a few objects.</li>
<li>The scenario cannot configure all necessary objects to be used.  It is something like &#8220;Exactly Once In Order&#8221; sequence and routing rules.</li>
</ul>
<p>With the above reasons it was I was not very excited about using scenarios in PI projects. Fortunately my colleague Emil Jessen, had a lot of ideas on why to use scenarios. The primary reason was to use them as a dialog tool to communicate integration processes with the business teams. The other reason was to use them for auto configuration of objects.</p>
<p>The scenarios should also make the hand over to the customers own people easier. They should be able configure the test and production environment and thereby have ownership of the solution. They did unfortunately not have the time for the configuration part, so we could not see how it worked.</p>
<p>The main focus was on creating a way to communicate, how we pictured each process and the messages flow in the process. The swimlane diagram is easy to understand since it deals with interaction between systems. It also described how the flow was when using BPM&#8217;s.</p>
<p>The use of models is going to get much more used in PI 7.1. I have tried to use the functionality as described in <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fsdn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F9201&sref=rss">this blog</a>. In PI 7.1 the models can get more complex and be used to describe how the business works.  I&#8217;m looking forward to see if the models in PI 7.1 can give a better understanding of what is going on or they are too complex for the application consultants.</p>
<p>To streamline our use of scenarios the following guidelines was created.</p>
<ul>
<li>The scenario should describe a process and the scenarios should be named after the process.</li>
<li>Scenarios was created in the beginning of the realization phase and populated with dummy actions until it had been defined each action.</li>
<li>Actions should be marked as with start and end action(s).</li>
<li>Actions used in a scenario should contain a description. This description should contain information on what the action is doing. It could be send message, provide lookup service, consume lookup service and send message. And then a more detailed description on what the interface did.</li>
<li>In descriptions for actions and scenarios the technical specification number was added, it was therefore a lot easier to find a scenario by using the search functionality.</li>
<li>Actions can have multiply interfaces, which could be used in different scenarios and in different ways. As long as the different message does the same it could be an IDOC and an BAPI, which both creates an invoice.</li>
<li>Communication channels temples should be places on all communication channels, which needed a sender agreement.</li>
<li>All configurations of scenarios should be done by using the scenarios, except where the limitations are as described below. This mean that it is easy to reconfigure all interfaces in a PI system, simply delete all configuration objects, except communication channels and then auto configure everything.</li>
</ul>
<p>A scenario could look like the following. Emil had also taken the time to translate the actions to English.</p>
<p><img src="http://graversen.org/wp-content/071108-1536-usingpiscen1.png" alt="" /></p>
<p>It is easy to get the auto configuration for work for sender agreement, but was not documented where I looked. The solution is simple. Just place a Communication Channel Template on the sender side in the Connection between actions like showed below. It is then possible to select a communication channel in the configuration. Venkat Donela had a <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fsdn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F3157&sref=rss">blog</a> where he describes how to use the communication channel temple, I was just pointed to this blog recently.</p>
<p><img src="http://graversen.org/wp-content/071108-1536-usingpiscen2.png" alt="" /></p>
<p>We still need a way on how do document, which changes there need to be implemented after the configuration has been performed. This could be creating Routing determinations and the sequence for interface with EOIO.  We have currently documented them in our cut-over plan, so we know what to do when we go live. Have anybody solved this problem.</p>
<p>I got a comment about the diagrams from one of the application consultants. He thought the diagrams were a nice way to represent what did happen in the interface. For them it looked like the solution maps, which they where use to see. It was nice to know that the diagrams could be used by the business experts to show what we were doing and we are on the right track in with the development.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2008/07/11/using-pi-scenarios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

