<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-6255223495642099089</id><updated>2009-11-03T19:19:25.074+05:30</updated><title type='text'>PSFT_PP</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-8544366813825279074</id><published>2009-07-20T00:02:00.007+05:30</published><updated>2009-07-20T06:14:11.792+05:30</updated><title type='text'>RealTime Message Log</title><content type='html'>&lt;div style="text-align: justify;"&gt;Most of us have gone through the pain of switching windows while debugging our Batch programs especially Application Engines (&lt;span style="font-weight: bold;"&gt;Actual Sequence - Click Run -&gt; Click OK -&gt; Click Process Monitor -&gt; Now Like a !#! keep clicking the Refresh Button or switch between details/message log and Process Monitor - So frustrating&lt;/span&gt;). It would have been a lot easier had PS provided a refresh button on the message log page.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The Vanilla run control page for Voucher Build process has a solution to this problem. It has 2 delivered pages which the user can use to view the message log and actually refresh it whenever he/she wants it. Better than navigating to the Process Monitor page and waiting for the process to finish.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I also came across PS delivered Component AE_LOG which is on the same lines. The design is far better than the existing one. It can even show you the Trace/Message Log for the current and previous process instances for the OPRID/RUN_CNTL_ID combination, but the only limitation I feel is that, it presently only looks at the AE Request component.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I'm currently working on a page that combines both these functionalities. Once completed this can be extended to all custom run control components we create. Presently I'm testing this for Application Engines only (I HATE SQR's).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;All that the developer needs to ensure is that:&lt;br /&gt;&lt;br /&gt;1. Copy a bit of PeopleCode to import this functionality, and&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;2. Insert this page in his/her Run Control Component. All that is now required is to run the process and navigate to the this page rather than the process monitor page, as this will show you Real Time Message Logs.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Also trying to identify whether these reports will be accessible from the Run Control Page after the PRCSYSPURGE is run.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I'll post more on this once I'm done&lt;br /&gt;&lt;br /&gt;Cheerz!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-8544366813825279074?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/8544366813825279074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=8544366813825279074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/8544366813825279074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/8544366813825279074'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2009/07/realtime-message-log.html' title='RealTime Message Log'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-392986620119161329</id><published>2009-07-19T23:54:00.005+05:30</published><updated>2009-07-20T06:16:09.764+05:30</updated><title type='text'>The App Package TR</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is by far one of the better App Packages that PS delivers in FSCM. Under the Package FileUtilities there are 2 App Classes FTP &amp;amp; Files.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The app class &lt;span style="font-weight: bold; font-style: italic;"&gt;Files&lt;/span&gt; contains certain methods which are written in a very refined and polished manner. For example the method &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;GetFileAsString&lt;/span&gt; is used to read a file in exactly the same manner in which it is stored in the File System. To do this PS does not use PeopleCode. Instead it uses JAVA, since it can retrieve the file in the same exact manner. Also, what one must note is that the method does take into account of reading/opening of large files as it has a check for the chunk size to prevent the dreaded Out of memory error.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;What is also strange is that even though PS provides a Function FindFiles() to retrieve all the files Names as string from a directory, it does not use it in the method &lt;span style="font-weight: bold; color: rgb(255, 0, 0); font-style: italic;"&gt;GetFileList&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The method &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;LoadCleanFile&lt;/span&gt; is also useful when you are trying to read through plain text files with out using a File Layout.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This app package also contains certain interesting utilities under the Package &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;Utilities&lt;/span&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-392986620119161329?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/392986620119161329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=392986620119161329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/392986620119161329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/392986620119161329'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2009/07/app-package-tr.html' title='The App Package TR'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-3158949028159215581</id><published>2009-07-19T23:39:00.007+05:30</published><updated>2009-07-20T06:17:36.830+05:30</updated><title type='text'>Run DMS in Regular/Bootstrap mode from PIA</title><content type='html'>&lt;div style="text-align: justify;"&gt;Ever wondered if you could run DMS scripts from PIA in regular mode.&lt;br /&gt;&lt;br /&gt;Well PS does deliver a Process Type of Data Mover, but I've rarely seen it being used.&lt;br /&gt;PS itself delivers a page to run the DMS from PIA in regular mode, but it can only be a single DMS file.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I extended that solution to suit my needs. Have the user upload (DMS)  as many as he/she wants and can then run DMS scripts in Regular/Bootstrap mode through the PIA. The DAT generated can then be downloaded from the View/Log Trace link and then can be emailed through the same page to the PSAdmins (You could even send it through your official mail. But what the @#@ I wanted the user to send it from the same page). The attachment functionality though commonly used by many people,  is always written by the developers. Rarely have I seen people using the delivered functionality. In FSCM PS delivers a generic Attachment functionality which covers the Life cycle of attachments. The App Class that has to use to achieve this is&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt; SCM_ARCH_ATTACH:UI:AttachmentHandler&lt;/span&gt;. The exhaustive comments in the class clearly detail what needs to be done by the developers to use it. It absolutely eliminates the need for users to write their own code. I really wouldn't repeat the steps out in my blog. I would suggest you go through the class and try it out.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The process type DATA Mover will always run in Regular mode since the command line always takes the &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;%%OPRID%%&lt;/span&gt; and&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;%%OPRPSWD%%&lt;/span&gt;, however, if you choose &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;%%ACCESSID%%&lt;/span&gt; and &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;%%ACCESSPSWD%%&lt;/span&gt;, then you can essentially log in in Bootstrap mode through the PIA. For this I suggest create a new Process Type rather than changing the existing one and for the new Process Type set the command line as&lt;br /&gt;"&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 255);"&gt;-CT %%DBTYPE%% -CD %%DBNAME%% -CO %%ACCESSID%% -CP %%ACCESSPSWD%% -I %%INSTANCE%%&lt;/span&gt;"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Once done open the Process Definition and set the following for the PARMLIST - "&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;-FP :Your run control record name.FieldName - which will store the file name&lt;/span&gt;"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;One very good thing about all this is that the user need not write any code for error logging as internally PS calls psdmtx.exe, hence all the error logging will be identical to the way Data mover logs error.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;And the best part - The DAT &amp;amp; Log file(s) are attached automatically in the View/Log Trace. So the user irrespective of the SET OUTPUT &amp;amp; SET LOG commands can view/download the DAT files from the process monitor.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Another good part about all this is that the page allows the user to &lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;simulate the DMS&lt;/span&gt;. This is what the SET NO DATA command does. It will run through the entire script but will neither export nor import, hence, no DB changes. So in case you have huge DMS files uploaded by the user and you are not too comfortable with the DDL and DML statements, you can Simulate the DMS&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_us1mHob_dps/SmNwMCsSHzI/AAAAAAAABBM/KknovcZ3iI0/s1600-h/RunDMS.GIF"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 155px;" src="http://4.bp.blogspot.com/_us1mHob_dps/SmNwMCsSHzI/AAAAAAAABBM/KknovcZ3iI0/s320/RunDMS.GIF" alt="" id="BLOGGER_PHOTO_ID_5360251333684371250" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-3158949028159215581?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/3158949028159215581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=3158949028159215581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/3158949028159215581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/3158949028159215581'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2009/07/run-dms-in-regularbootstrap-mode-from.html' title='Run DMS in Regular/Bootstrap mode from PIA'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_us1mHob_dps/SmNwMCsSHzI/AAAAAAAABBM/KknovcZ3iI0/s72-c/RunDMS.GIF' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-4190026489214652686</id><published>2009-07-19T23:11:00.007+05:30</published><updated>2009-07-28T19:28:54.640+05:30</updated><title type='text'>PeopleSoft's metadata API</title><content type='html'>&lt;div style="text-align: justify;"&gt;Ever stumbled across a familiar statement&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;import %metadata:*;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Well PS itself rarely uses this. I was lucky enough to realize its potential during a Apps/Tools upgrade. We were moving from FSCM 8/8.21 to FSCM 8.9/8.48.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This metadata API has not been documented anywhere in PeopleBooks. I feel this is by far the most robust API that PS has delivered till date. I actually went ahead and used this API as pilot to see the real benefits of it. The custom solution was designed to create PS Projects and migrate them from PIA itself. Though the script used to compare (Pre/Post) and migrate the project was courtesy &lt;span style="font-weight: bold;"&gt;Written by Praj Basnet &amp;amp; Copyright 2008  &lt;/span&gt;&lt;span&gt;the custom solution is totally original :)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The API can be extended as follows&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;import %metadata:ProjectDefn:*;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;import %metadata:RecordDefn:*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I only tried it for a few more objects, but  you realize it can be similarly extended for all other DEFN Tables (PeopleTools definition tables used for PS Objects)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;What is important to note is that to use this API you need to make sure you keep the following in mind&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; For all imports like above, you need to define a &lt;span style="font-weight: bold;"&gt;manager object&lt;/span&gt;:&lt;/li&gt;&lt;/ol&gt;          For example - &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;&amp;amp;mgr = create %metadata:ProjectDefn:ProjectDefn_Manager();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;                          &amp;amp;mgrRec_ = create %metadata:RecordDefn:RecordDefn_Manager();&lt;/span&gt;&lt;br /&gt;    2.  A similar property also needs to be defined:&lt;br /&gt;&lt;br /&gt;         For example - &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;property %metadata:ProjectDefn:ProjectDefn_Manager mgr;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;                         property %metadata:RecordDefn:RecordDefn_Manager mgrRec_;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can then define your own methods like&lt;br /&gt;&lt;br /&gt;1. insertAppPackage&lt;br /&gt;2. insertRecord&lt;br /&gt;3. insertAE&lt;br /&gt;&lt;br /&gt;and so on to cover all/some PS Objects&lt;br /&gt;&lt;br /&gt;But the most important of all methods is the &lt;span style="font-weight: bold; color: rgb(51, 51, 255); font-style: italic;"&gt;insertItemToProject&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;Every method for an object will ultimately call this method. PS stores the values in PSPROJECTITEM as OBJECTVALUE#'s. The exhaustive list of the objects till date can be found at&lt;br /&gt;&lt;/div&gt;&lt;a href="http://jmcmahon33.blogspot.com/2007/12/objects-within-peoplesoft-projects.html"&gt;http://jmcmahon33.blogspot.com/2007/12/objects-within-peoplesoft-projects.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Some very basic PeopleCode to get you started -&lt;br /&gt;/******************************************/&lt;br /&gt;import %metadata:*;&lt;br /&gt;import %metadata:ProjectDefn:*;&lt;br /&gt;import %metadata:RecordDefn:*;&lt;br /&gt;&lt;br /&gt;class PPProject&lt;br /&gt; method PPProject();&lt;br /&gt; method CreateProject();&lt;br /&gt; method insertItemToProject(&amp;amp;iObjectType As integer, &amp;amp;iObjectID0 As integer, &amp;amp;sObjectValue0 As string, &amp;amp;iObjectID1 As integer, &amp;amp;sObjectValue1 As string, &amp;amp;iObjectID2 As integer, &amp;amp;sObjectValue2 As string, &amp;amp;iObjectID3 As integer, &amp;amp;sObjectValue3 As string, &amp;amp;iUpgradeAction As integer, &amp;amp;defn As %metadata:ProjectDefn:ProjectDefn);&lt;br /&gt; method insertAE(&amp;amp;sAEProgramName As string);&lt;br /&gt; method insertRecord(&amp;amp;sRecordName As string);&lt;br /&gt; method insertAppPackage(&amp;amp;sAppPackage As string);&lt;br /&gt; method initializeProjects();&lt;br /&gt; method getProject(&amp;amp;sProjectName As string) Returns %metadata:ProjectDefn:ProjectDefn;&lt;br /&gt; method getRecordDoNotUse(&amp;amp;sRecordName As string) Returns %metadata:RecordDefn:RecordDefn;&lt;br /&gt; property string sCreateProject;&lt;br /&gt; property %metadata:ProjectDefn:ProjectDefn_Manager mgr;&lt;br /&gt; property %metadata:RecordDefn:RecordDefn_Manager mgrRec_;&lt;br /&gt;end-class;&lt;br /&gt;&lt;br /&gt;method PPProject&lt;br /&gt; &amp;amp;mgr = create %metadata:ProjectDefn:ProjectDefn_Manager();&lt;br /&gt; &amp;amp;mgrRec_ = create %metadata:RecordDefn:RecordDefn_Manager();&lt;br /&gt; rem &amp;amp;sCreateProject = "PTPATCHIBCONVERT";&lt;br /&gt; %This.CreateProject();&lt;br /&gt;end-method;&lt;br /&gt;&lt;br /&gt;method CreateProject&lt;br /&gt;&lt;br /&gt; rem this class will be used to create Projects in App Designer;&lt;br /&gt; &amp;amp;sCreateProject = Z_LONG_TBL.EMPLID.Value;&lt;br /&gt; MessageBox(0, "", 0, 0, "&amp;amp;ProjectName_ " | &amp;amp;sCreateProject);&lt;br /&gt;&lt;br /&gt;end-method;&lt;br /&gt;&lt;br /&gt;method insertItemToProject&lt;br /&gt; /+ &amp;amp;iObjectType as Integer, +/&lt;br /&gt; /+ &amp;amp;iObjectID0 as Integer, +/&lt;br /&gt; /+ &amp;amp;sObjectValue0 as String, +/&lt;br /&gt; /+ &amp;amp;iObjectID1 as Integer, +/&lt;br /&gt; /+ &amp;amp;sObjectValue1 as String, +/&lt;br /&gt; /+ &amp;amp;iObjectID2 as Integer, +/&lt;br /&gt; /+ &amp;amp;sObjectValue2 as String, +/&lt;br /&gt; /+ &amp;amp;iObjectID3 as Integer, +/&lt;br /&gt; /+ &amp;amp;sObjectValue3 as String, +/&lt;br /&gt; /+ &amp;amp;iUpgradeAction as Integer, +/&lt;br /&gt; /+ &amp;amp;defn as %Metadata:ProjectDefn:ProjectDefn +/&lt;br /&gt;&lt;br /&gt; Local string &amp;sProjectName;&lt;br /&gt;&lt;br /&gt; /*Check to see if the item already exists in the project , modified the select to query only basd on keys*/&lt;br /&gt; rem SQLExec("SELECT PROJECTNAME FROM PSPROJECTITEM WHERE PROJECTNAME = :1 AND OBJECTTYPE = :2 AND OBJECTID1 = :3 AND OBJECTVALUE1 = :4 AND OBJECTID2 = :5 AND OBJECTVALUE2 = :6 AND OBJECTID3 = :7 AND OBJECTVALUE3 = :8", &amp;amp;defn.ProjectName, &amp;amp;iObjectType, &amp;amp;iObjectID0, &amp;amp;sObjectValue0, &amp;amp;iObjectID1, &amp;amp;sObjectValue1, &amp;amp;iObjectID2, &amp;amp;sObjectValue2, &amp;amp;sProjectName);&lt;br /&gt; SQLExec("SELECT PROJECTNAME FROM PSPROJECTITEM WHERE PROJECTNAME = :1 AND OBJECTTYPE = :2  AND OBJECTVALUE1 = :3  AND OBJECTVALUE2 = :4 AND OBJECTVALUE3 = :5", &amp;amp;defn.ProjectName, &amp;amp;iObjectType, &amp;amp;sObjectValue0, &amp;amp;sObjectValue1, &amp;amp;sObjectValue2, &amp;amp;sProjectName);&lt;br /&gt;&lt;br /&gt; If &amp;amp;sProjectName &lt;&gt; "" Then&lt;br /&gt;    Return;&lt;br /&gt; End-If;&lt;br /&gt;&lt;br /&gt; Local %metadata:ProjectDefn:PjmPit &amp;newPit;&lt;br /&gt;&lt;br /&gt; Local integer &amp;amp;iCount = &amp;amp;defn.Count_Pit;&lt;br /&gt;&lt;br /&gt; &amp;amp;newPit = &amp;amp;defn.Append_Pit(&amp;amp;iCount);&lt;br /&gt; &amp;amp;newPit.ObjectType = &amp;iObjectType;&lt;br /&gt; &amp;amp;newPit.ObjectID#0# = &amp;iObjectID0;&lt;br /&gt; &amp;amp;newPit.ObjectValue#0# = &amp;sObjectValue0;&lt;br /&gt; &amp;amp;newPit.ObjectID#1# = &amp;iObjectID1;&lt;br /&gt; &amp;amp;newPit.ObjectValue#1# = &amp;sObjectValue1;&lt;br /&gt; &amp;amp;newPit.ObjectID#2# = &amp;iObjectID2;&lt;br /&gt; &amp;amp;newPit.ObjectValue#2# = &amp;sObjectValue2;&lt;br /&gt; &amp;amp;newPit.ObjectID#3# = &amp;iObjectID3;&lt;br /&gt; &amp;amp;newPit.ObjectValue#3# = &amp;sObjectValue3;&lt;br /&gt; &amp;amp;newPit.TakeAction = True;&lt;br /&gt; /* 1 for Delete, 0 for Copy */&lt;br /&gt; &amp;amp;newPit.UpgradeAction = &amp;iUpgradeAction;&lt;br /&gt;&lt;br /&gt; If Not (&amp;amp;defn.UpdateDefn()) Then&lt;br /&gt;    /*Todo throw error */&lt;br /&gt; End-If;&lt;br /&gt;end-method;&lt;br /&gt;&lt;br /&gt;method insertAE&lt;br /&gt; /+ &amp;amp;sAEProgramName as String +/&lt;br /&gt;&lt;br /&gt; If &amp;amp;sCreateProject &lt;&gt; "" Then&lt;br /&gt;    Local %metadata:ProjectDefn:ProjectDefn &amp;defn;&lt;br /&gt;    &amp;amp;defn = %This.getProject(&amp;amp;sCreateProject);&lt;br /&gt;    rem By default insert all related definitions;&lt;br /&gt;    %This.insertItemToProject(33, 66, &amp;amp;sAEProgramName, 0, "", 0, "", 0, "", 0, &amp;amp;defn);&lt;br /&gt;    %This.insertItemToProject(34, 66, &amp;amp;sAEProgramName, 77, "MAIN", 0, "", 0, "", 0, &amp;amp;defn);&lt;br /&gt;    %This.insertItemToProject(43, 66, &amp;amp;sAEProgramName, 77, "MAIN    GBLdefault  1900-01-01", 78, "Step02", 12, "OnExecute", 0, &amp;amp;defn);&lt;br /&gt; End-If;&lt;br /&gt;&lt;br /&gt;end-method;&lt;br /&gt;&lt;br /&gt;method insertRecord&lt;br /&gt; /+ &amp;amp;sRecordName as String +/&lt;br /&gt;&lt;br /&gt; If &amp;amp;sCreateProject &lt;&gt; "" Then&lt;br /&gt;    Local %metadata:ProjectDefn:ProjectDefn &amp;defn;&lt;br /&gt;    Local %metadata:RecordDefn:RecordDefn &amp;amp;Recdefn_;&lt;br /&gt;    &amp;amp;defn = %This.getProject(&amp;amp;sCreateProject);&lt;br /&gt;    &amp;amp;Recdefn_ = %This.getRecordDoNotUse(&amp;amp;sRecordName);&lt;br /&gt;    rem &amp;amp;Recdefn_.RecDescr = "AE REN State Record";&lt;br /&gt;    %This.insertItemToProject(0, 1, &amp;amp;sRecordName, 0, "", 0, "", 0, "", 0, &amp;amp;defn);&lt;br /&gt;    %This.insertItemToProject(8, 1, &amp;amp;sRecordName, 0, "", 0, "", 0, "", 0, &amp;amp;defn);&lt;br /&gt; End-If;&lt;br /&gt;&lt;br /&gt;end-method;&lt;br /&gt;&lt;br /&gt;method insertAppPackage&lt;br /&gt; /+ &amp;amp;sAppPackage as String +/&lt;br /&gt;&lt;br /&gt; Local string &amp;amp;AppClassID_, &amp;amp;PckgRoot_, &amp;amp;QlfyPath_, &amp;amp;QlfyPath1_;&lt;br /&gt; If &amp;amp;sCreateProject &lt;&gt; "" Then&lt;br /&gt;    Local %metadata:ProjectDefn:ProjectDefn &amp;defn;&lt;br /&gt;    &amp;amp;defn = %This.getProject(&amp;amp;sCreateProject);&lt;br /&gt;    rem Ideally queries should be used to retrieve the defns from Object Defn Tables;&lt;br /&gt;    Local string &amp;amp;AppPackageSQL_ = "SELECT PACKAGEROOT, QUALIFYPATH FROM PSPACKAGEDEFN WHERE PACKAGEID = :1";&lt;br /&gt;    Local string &amp;amp;AppClassSQL_ = "SELECT APPCLASSID, PACKAGEROOT, QUALIFYPATH FROM PSAPPCLASSDEFN WHERE PACKAGEROOT = :1";&lt;br /&gt;    SQLExec(&amp;amp;AppPackageSQL_, &amp;amp;sAppPackage, &amp;amp;PckgRoot_, &amp;amp;QlfyPath_);&lt;br /&gt;    SQLExec(&amp;amp;AppClassSQL_, &amp;amp;sAppPackage, &amp;amp;AppClassID_, &amp;amp;PckgRoot_, &amp;amp;QlfyPath1_);&lt;br /&gt;    %This.insertItemToProject(57, 104, &amp;amp;sAppPackage, 116, &amp;amp;PckgRoot_, 117, &amp;amp;QlfyPath_, 0, "", 0, &amp;amp;defn);&lt;br /&gt;    %This.insertItemToProject(58, 104, &amp;amp;sAppPackage, 105, &amp;amp;QlfyPath1_, 107, &amp;amp;AppClassID_, 0, "", 0, &amp;amp;defn);&lt;br /&gt;    /*&lt;br /&gt;    %This.insertItemToProject(57, 104, &amp;amp;sAppPackage, 116, "Z_PSTOKEN", 117, ".", 0, "", 0, &amp;amp;defn);&lt;br /&gt;    %This.insertItemToProject(58, 104, &amp;amp;sAppPackage, 105, "PSToken", 107, "PSTOKEN", 0, "", 0, &amp;amp;defn);&lt;br /&gt;    */&lt;br /&gt; End-If;&lt;br /&gt;&lt;br /&gt;end-method;&lt;br /&gt;&lt;br /&gt;method initializeProjects&lt;br /&gt; Local %metadata:ProjectDefn:ProjectDefn &amp;amp;oCreateDefn, &amp;oDeleteDefn;&lt;br /&gt; &amp;amp;oCreateDefn = %This.getProject(&amp;amp;sCreateProject);&lt;br /&gt;end-method;&lt;br /&gt;&lt;br /&gt;/*******************************************************************************&lt;br /&gt;method:   getProject&lt;br /&gt;purpose:  Checks to see if the project already exists, if not it creates it&lt;br /&gt;*******************************************************************************/&lt;br /&gt;method getProject&lt;br /&gt; /+ &amp;amp;sProjectName as String +/&lt;br /&gt; /+ Returns %Metadata:ProjectDefn:ProjectDefn +/&lt;br /&gt;&lt;br /&gt; Local %metadata:Key &amp;amp;key = create %metadata:Key(Key:Class_Project, &amp;amp;sProjectName);&lt;br /&gt; Local %metadata:ProjectDefn:ProjectDefn &amp;amp;defn = &amp;amp;mgr.GetDefn(&amp;amp;key);&lt;br /&gt;&lt;br /&gt; If Not (&amp;amp;mgr.DefnExists(&amp;amp;key)) Then&lt;br /&gt; &lt;br /&gt;    &amp;amp;defn = &amp;amp;mgr.CreateDefn();&lt;br /&gt;    &amp;amp;defn.ProjectName = &amp;sProjectName;&lt;br /&gt;    &amp;amp;defn.ProjectDescr = "PPs code created project";&lt;br /&gt;    &amp;amp;defn.ReleaseDttm = "2009-04-13 15:52:19.000";&lt;br /&gt;    &amp;amp;defn.ObjectOwnerId = "PPT";&lt;br /&gt;    &amp;amp;defn.DescrLong = "This Project is created by PP's App Package to create Projects in Application Designer";&lt;br /&gt;    &amp;amp;defn.CommitLimit = 50;&lt;br /&gt;    If Not (&amp;amp;defn.SaveNewDefn()) Then&lt;br /&gt;       /*ToDo log error */&lt;br /&gt;    End-If;&lt;br /&gt;    Return &amp;defn;&lt;br /&gt; Else&lt;br /&gt;    Local %metadata:ProjectDefn:ProjectDefn &amp;amp;ProjectDefn = &amp;amp;mgr.GetPrivateDefn(&amp;amp;key);&lt;br /&gt; &lt;br /&gt;    Return &amp;ProjectDefn;&lt;br /&gt; End-If;&lt;br /&gt;end-method;&lt;br /&gt;/******************************************/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FYI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is a case on metalink3 about %metadata&lt;br /&gt;https://metalink3.oracle.com/od/faces/secure/km/DocumentDisplay.jspx?id=849911.1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-4190026489214652686?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/4190026489214652686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=4190026489214652686' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/4190026489214652686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/4190026489214652686'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2009/07/peoplesofts-metadata-api.html' title='PeopleSoft&apos;s metadata API'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-7393163222286091177</id><published>2008-06-19T22:30:00.004+05:30</published><updated>2008-06-19T22:36:36.293+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo Maps for PeopleSoft'/><category scheme='http://www.blogger.com/atom/ns#' term='FSCM 9.0'/><title type='text'>Yahoo Maps for PeopleSoft</title><content type='html'>Its been some time since i visited my own blog...funny but true!!!.&lt;br /&gt;I recently stumbled upon this new feature in FSCM 9.0 for Customers/Vendors, where one can actually view the Customers/vendors address using Yahoo Maps from PeopleSoft...Let us see how...&lt;br /&gt;&lt;br /&gt;Yahoo resolves the address provided, you have entered these 5 fields for an address of any country which can possibly be located by Yahoo...&lt;br /&gt;1. Address1&lt;br /&gt;2. State&lt;br /&gt;3. City&lt;br /&gt;4. Country&lt;br /&gt;5. Postal&lt;br /&gt;&lt;br /&gt;Once this is done you can either place your custom hyper link or check this on Customers General Info page in FSCM 9.0...&lt;br /&gt;Click on View Map and it opens a New Window of Yahoo Maps with the Customers Address...Also trying to see, if i can make use of Google maps in a similar fashion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-7393163222286091177?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/7393163222286091177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=7393163222286091177' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/7393163222286091177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/7393163222286091177'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2008/06/yahoo-maps-for-peoplesoft.html' title='Yahoo Maps for PeopleSoft'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-1763531861975478614</id><published>2008-05-09T23:39:00.004+05:30</published><updated>2008-05-12T09:19:02.495+05:30</updated><title type='text'>Use Web Services in PS without creating Service/Service Operation/Message and Routings</title><content type='html'>Hi,&lt;br /&gt;I just stumbled upon this very interesting App Package in FSCM 9.0 &gt; "SCM_UTILITIES"...&lt;br /&gt;Its a collection of some really amazing application classes, and over the last few days i was busy trying to use a few them...Of the couple of classes that i used, the best i found was to Integrate with external Web Services (implementing SOAP 1.1/1.2) without having the need to create&lt;br /&gt;1. Service&lt;br /&gt;2. Service Operation&lt;br /&gt;3. Message Defn&lt;br /&gt;4. Node Defn&lt;br /&gt;&lt;br /&gt;One can actually skip creating all these definitions and still integrate with External Web Services.&lt;br /&gt;The trick is to use the delivered App Class "XMLPoster"...&lt;br /&gt;All that is required is...&lt;br /&gt;1. URL (WSDL End Point...SOAP Address Location in WSDL...normally is same for both SOAP1.1/1.2)&lt;br /&gt;2. Request SOAP Structure&lt;br /&gt;3. HTML - This will store the SOAP Request (GETCOUNTRYNAME)&lt;br /&gt;Use the following piece of code to test it out!!!&lt;br /&gt;import SCM_UTILITIES:Integration:XMLPoster;&lt;br /&gt;Local SCM_UTILITIES:Integration:XMLPoster &amp;amp;XMLPost_ = create SCM_UTILITIES:Integration:XMLPoster();&lt;br /&gt;/* SOAPPost */&lt;br /&gt;Local string &amp;amp;TargetUrl_ = "&lt;a href="http://www.oorsprong.org/websamples.countryinfo/CountryInfoService.wso;"&gt;http://www.oorsprong.org/websamples.countryinfo/CountryInfoService.wso;&lt;/a&gt;&lt;br /&gt;Local string &amp;amp;soapstr = GetHTMLText(HTML.GETCOUNTRYNAME);&lt;br /&gt;Local string &amp;amp;SOAPResp_ = &amp;amp;XMLPost_.XMLPost(&amp;amp;TargetUrl_, &amp;amp;soapstr);&lt;br /&gt;MessageBox(0, "", 0, 0, "&amp;amp;SOAPResp_ " &amp;amp;SOAPResp_);&lt;br /&gt;&lt;br /&gt;!!!Happy Integrating!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-1763531861975478614?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/1763531861975478614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=1763531861975478614' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/1763531861975478614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/1763531861975478614'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2008/05/use-web-services-in-ps-without-creating.html' title='Use Web Services in PS without creating Service/Service Operation/Message and Routings'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-8883581578878002498</id><published>2008-04-22T13:43:00.004+05:30</published><updated>2008-04-23T08:53:23.065+05:30</updated><title type='text'>Consume WSDL's via URL/UDDI - Tools 8.48/8.49</title><content type='html'>Over the past few days i was busy setting up a UDDI Repository for PeopleSoft...When the Repository was finally setup (BEA's Aqualogic Service Registry 3.0), i was excited to consume WSDL's via UDDI...But to my amazement i was unable to consume the WSDL (&lt;a href="http://ws.soatrader.com/easycfm.com/1.0/Captcha?WSDL"&gt;http://ws.soatrader.com/easycfm.com/1.0/Captcha?WSDL&lt;/a&gt;) either via URL/UDDI...After further analysis...&lt;br /&gt;This issue is caused by that we don't support all aspects of schema referencing. -&lt;br /&gt;1. "wsdl:import" statements that point to a external schema doc -&lt;br /&gt;2. "xsd:include" -&lt;br /&gt;3. "xsd:import".&lt;br /&gt;The import wizard will not recurse across nested import statements.&lt;br /&gt;&lt;br /&gt;This however has been refined in Tools 8.50...Interestingly the same WSDL which errored out while i was trying to consume it through UDDI...can be successfully consumed via URL in tools 8.46.19...&lt;br /&gt;Further analysis pointed it out that PeopleSoft uses different App Package(s) for WSDL in tools 8.48...&lt;br /&gt;So the bottom line is - "You would not be able to import WSDL's either via URL/UDDI which reference additional import statements like the ones that have been mentioned above. "&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-8883581578878002498?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/8883581578878002498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=8883581578878002498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/8883581578878002498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/8883581578878002498'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2008/04/consume-wsdls-via-urluddi-tools-848849.html' title='Consume WSDL&apos;s via URL/UDDI - Tools 8.48/8.49'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-2838339075460517075</id><published>2008-04-09T23:21:00.003+05:30</published><updated>2008-04-10T15:56:45.962+05:30</updated><title type='text'>PeopleSoft &amp; UDDI Config</title><content type='html'>With the release of PeopleTools 8.48, many of us have come across the Service Configuration page under Integration Broker. Though (Quote) PeopleSoft does not recommend any UDDI server(s) to be used (Unquote), but one can make definitely make use of the wide variety of Open Source (jUDDI) and bundled (Aqualogic Service Registry 3.0) UDDI Registeries.&lt;br /&gt;I did have initial problems configuring jUDDI &amp;amp; BEA's Aqualogic Service Registry, but once configured, we can post the WSDL's to the UDDI respository...&lt;br /&gt;If you also use JDev, then one can discover the installed UDDI Repositories and consume/provide WSDL's from JDev...Its a good option to start with BEA's Aqualogic, but it has a license limitation, the executable avialable for download from &lt;a href="http://www.bea.com/"&gt;http://www.bea.com/&lt;/a&gt; can have a maximum of 150 Business Services registered, and since this being a trial version I'hv another 63 days of free usage. So make sure you choose the best in the lot WSDL's to be posted to the repository...&lt;br /&gt;Happy Discovery and Integration...&lt;br /&gt;Stay tuned for new updates on WSRP 1.0/2.0 in PeopleSoft&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-2838339075460517075?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/2838339075460517075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=2838339075460517075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/2838339075460517075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/2838339075460517075'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2008/04/peoplesoft-uddi-config.html' title='PeopleSoft &amp; UDDI Config'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-6290248681869708976</id><published>2008-03-02T11:58:00.001+05:30</published><updated>2008-03-03T10:29:07.899+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Skip the Integration Engine'/><title type='text'>PeopleSoft's Integration  - ConnectorRequest</title><content type='html'>&lt;span style="font-family:georgia;"&gt;One can actually skip the integration Engine to integrate with Web Services (SOAP 1.1/1.2). PS internally does use it for both Tools and Apps (SCM). A few examples - PS UDDI Config, IB Pagelet config.&lt;br /&gt;&lt;br /&gt;Pros&lt;br /&gt;1. One can avoid setting up Nodes/Routings. Routings being the major culprit in Integration Setups.&lt;br /&gt;2. Also, one does not have to bother about Sync Logging..&lt;br /&gt;3. Best of All, difficult for someone to identify&lt;br /&gt;&lt;br /&gt;Cons&lt;br /&gt;1. Difficult for a person to troubleshoot. But, thats exactly the reason "ConnectorRequest" has been made.&lt;br /&gt;&lt;br /&gt;I have this code running for most of the Web Services available on XMethods and StrikeIron, and works like a Gem&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-6290248681869708976?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/6290248681869708976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=6290248681869708976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/6290248681869708976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/6290248681869708976'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2008/03/peoplesofts-integration.html' title='PeopleSoft&apos;s Integration  - ConnectorRequest'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255223495642099089.post-7985132212539696489</id><published>2008-03-02T00:05:00.000+05:30</published><updated>2008-03-02T00:06:15.909+05:30</updated><title type='text'>PSFT_PP</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;!!Welcome!! to my Blog...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255223495642099089-7985132212539696489?l=psftpp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psftpp.blogspot.com/feeds/7985132212539696489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6255223495642099089&amp;postID=7985132212539696489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/7985132212539696489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255223495642099089/posts/default/7985132212539696489'/><link rel='alternate' type='text/html' href='http://psftpp.blogspot.com/2008/03/psftpp.html' title='PSFT_PP'/><author><name>Ciphersbak</name><uri>http://www.blogger.com/profile/01586158446874473262</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04201226986717154836'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>