Friday, January 25, 2013

How to Configure and Use Integration Broker

Integration Broker has become a critical service for PeopleSoft applications. If you are new to Integration Broker or are having trouble with Integration Broker configuration, then take a look at this new Integration Broker course published by my friends at CGI consulting. The course consists of an 84 page instructional PDF and a couple of source files. The course covers everything from configuration to using SoapUI. Here are some highlights:

  • Setting up Integration Broker
  • Publishing a CI based service
  • Testing a web service (CI or otherwise) with SoapUI
  • Calling a service from PeopleCode
  • Application Class PeopleCode handlers
  • Routing transformations
  • JDeveloper XSLT Mapper
  • App Engine Service Operation handlers
  • And much, much more

One item I noticed that is NOT covered is creating custom listeners and targets using the Integration Broker SDK. Not to worry, though because I cover creating custom targets in my book PeopleTools Tips & Techniques.

The CGI Integration Broker course is a great read. I recommend downloading and saving a copy for future reference.

58 comments:

  1. Jim, I am sending through the IB form data from a pdf document. It comes in OK and I can process it, but the gateway is sending a response back with a content header text/xml; charset = UTF-8 and abobe is barking at it saying it cannot process this content type. Do you know of a way I can override this to say application/pdf. When I change HEADER properties on my node it still seems to pass text/xml; charset = UTF-8.

    Any Thoughts?

    ReplyDelete
  2. @JCook, I have had the same frustration. I spoke with Integration Broker development about this a few years ago. In PeopleTools 8.52 REST services you will see a drop-down to select the response Content-Type, but it is limited to just the items in the list.

    The work-around I have employed is to change the response header in my Apache httpd reverse proxy (everyone should use a reverse proxy). I use mod_headers to update the content-type header. You can use the Location and LocationMatch directives to match your Integration Broker URL.

    If you don't have a reverse proxy, then you can write a ServletFilter and register it with your PeopleSoft web server using a URL mapping that matches your Integration Broker URL.

    ReplyDelete
  3. Subject: How to use PeopleSoft Campus Solution Delivered Web Services??

    Jim, I’m new to PeopleSoft and getting multiple issues during the testing of PeopleSoft Campus Solution delivered web services (like SSR_COURSE, SSR_ENROLLEMENT …). I had tested these web services by soapUI and getting following errors: Any help in this regards would be greatly appreciated.

    The default node is “PSFT_HR”

    (Note: - I’ve used documents “Enrollment Web Services Users Guide” & “Enrollment Web Services Developers Guide” as a reference document)

    Test 1:
    Service Name = SSR_COURSE
    Service Operation = SSR_GET_COURSE

    Request in SoapUI:
    INSTITUTION * = PSUNV
    SSR_ALPHANUM =
    SUBJECT = STATS
    SSR_CRS_SRCH_MODE = D
    ASOFDATE = 2011-05-27

    Response in soapUI:
    Fault code: Client
    Fault string: An Error occurred processing this request (14098,286)
    Default Title: Integration Broker Response
    Message ID: 14732-6
    Default Message: Error during Get Courses, Contact the Administrator
    Security Message: E

    Test 2:
    Service Name = SSR_ENROLLMENT
    Service Operation = SSR_GET_ ENROLLMENT

    Request in SoapUI:
    EMPLID = SR13454
    ACAD_CAREER = UGRD
    INSTITUTION = PSUNV
    STRM = 0530

    Response in soapUI:
    Fault code: SOAP-ENV: Server
    Fault string: null
    IB Response type="error
    Default Title: Integration Broker Response
    Status Code: 20
    Message ID: 974
    Default Message: Integration Broker Sync Handler: OnRequest for message SSR_GET_ENROLLMENT could not run to completion on node PSFT_HR. (158,974)
    Parameter: SSR_GET_ENROLLMENT
    Parameter: PSFT_HR

    ReplyDelete
  4. @Imran, did you look at errorLog.html or msgLog.html? These files exist in the PSIGW web app's directory in your weblogic (or websphere) PeopleSoft domain directory. You can configure the log level in the integrationGateway.properties file or online in the Domain advanced configuration page. This Post tells you how to change the log level.

    ReplyDelete
  5. Hello Jim,

    I am testing a CI based web service using SoapUI. The CI is based on a delivered component. When I test the CI through app designer in 2-tier and 3-tier mode it is working fine. But when I expose the same CI as a web service, I get an error message (Error Saving Component Interface). I have given all the necessary permissions to the user to access the CI. Am I missing something?

    ReplyDelete
  6. @Narender, you might want to look in the app server log and also increase your IB log level and look at the msgLog.html and errorLog.html to see if there is more information regarding the error. The app server log should show why it can't save. It may have to do with data, and not security.

    You might also want to post this question on the OTN PeopleSoft General Discussion forum.

    ReplyDelete
  7. Hello Jim,

    I configured the IB between HR 9.1 and CS9.0 after the CS-HR split.

    Our org. decided to use Subscriber Only model,

    So I configured the IB on both the systems CS 9.0 and HR 9.1 Local gateways, Local nodes and remote nodes, we often get the boomerang issues once in a week or once in two weeks, not sure how to fix this, Currently we are doing the following to fix it, we set up a notification, text message to cell phone and an email, we'll receive if we see a bunch of messages are transferring between the systems. And then we inactivate the Service operation and cancel the message that causes the boomerang issue, and activate the service operation.

    Is there any better solution that i can follow, the solution that oracle gave in the document in the Feature Pack 4, has lot of configuration has to be done, So i am looking for a better solution,

    Thank You

    ReplyDelete
  8. @Afjal, I am familiar with the CS/HR split, but I am not familiar with a boomerang issue. Messages coming into an Integration Gateway/Integration Broker instance are routed based on configuration. Normally, for each service operation, you will have a system of record (the publisher) and a subscriber. In the subscriber system, you will have an inbound routing. In the publisher system, you will have an outbound routing. The publisher should NOT have an inbound routing. The subscriber should NOT have an outbound routing.

    It is possible to have routings that send from one node to another, with no local subscription. This is common in a hub/spoke model, but it sounds like you are using a point-to-point model. If you have any hub/spoke node to node routings, then this may be causing your problem because it sounds like you intended to configure for point to point.

    It really sounds like a routing configuration issue. Make sure only have the necessary routings configured. You shouldn't have any to local or local to local routings unless specifically identified by you or the configuration documents (for example, HR uses local to local routings to subscribe to worker and personnel messages).

    Let me know if I misunderstood the issue.

    ReplyDelete
  9. Jim,

    Each database has their own Local Gateway & Local nodes configured as per the oracle documentation, and I configured the IB for some of the service operations to go the messages both directions (As per Oracle terminology its called Subscriber Only model, We call as bidirectional), from CS to HR and HR to CS in the routing definitions., I am sure I did inactivated all the other Routing's are inactivated in the Routing Definitions. Only Routing's active are CS to HR and HR to CS.
    Thank You

    ReplyDelete
  10. That is what I thought. For each service operation, a node should either be a publisher or a subscriber, not both. A node can be a publisher and a subscriber, but each service operation should be one or the other. It should not be both with the same service operation and the same nodes. You can configure it this way, but it is not a best practice.

    Think of it this way, which system is the system of record for the PERSON_BASIC_SYNC message? It should be HCM, right? If that is the case, then HCM will ONLY have publish (outbound) routings for the PERSON_BASIC_SYNC service operation and every other system will only have inbound/subscribing routings for that same service operation.

    Another common example is USER_PROFILE. If you allow each node to maintain and publish USER_PROFILE changes, then each node will be a publisher and a subscriber. You can do this, but it is not recommended. The best practice is to make one node the system of record and have publish (outbound) routings only. All other nodes have subscription (inbound) routings only.

    ReplyDelete
  11. Hi Jim,

    I have created an App package based webservice and exposed it to 3rd party. this service and its service operations utilizes rowset based messages. Request message consists of emplid whereas response message comprises of compensation and other critical data.As a part of SOAP request, authentication headers have been taken care as well.
    My 1st part of job is done. Now I am supposed to implement security via digital certificates or encryption on the response which is going back to 3rd party in webservice soap response. Can you help me with the steps i need to follow to implement the same? I tried going through peoplebooks but could not find a sure shot solution for the same query.

    Thanks
    Anuj

    ReplyDelete
  12. @Anuj did you see this PeopleBook entry? It is quite lengthy, so it will be a bit much to repeat here in the comments. After you start on this, if you have specific questions about any of the steps, you may want to ask the question in the PeopleSoft General Discussion OTN forum where several people can help answer your questions.

    ReplyDelete
  13. Hi Jim, I need some guidance on how to proceed with an Integration Broker - JMS Connector issue that I am facing with.
    I am trying to integrate Peoplesoft with a third party factory system through IBM MQs. JMS Target Connector is configured properly and I am able to send out messages succesfully. But the issue is Peoplesoft has a delivered bug wherein "Correlation ID does not match" error is occuring upon receipt of response messages. When I checked with Oracle, this seems to be a delivered bug (Bug 16012124)which has been internally fixed and to be delivered in 8.54. As we are still in Tools 8.51, we have to do our own fix on this.
    Issue:- For outgoing synchronous JMS messages, Peoplesoft sets Correlation ID = Transaction ID. The third party sends the same ID back as correlation ID. But PS expects the Message ID in the correlation ID and hence throws the error.PS is wrongly sending the Transaction ID in place of the Message ID which is the delivered bug.I am not able to identify the exact portion where the Correlation ID is getting set in the IB connector. Would you be able to help me with it?

    ReplyDelete
  14. @Stefy, I don't know either. Have you requested a one-off or back port of the solution?

    ReplyDelete
  15. Hi Jim.

    Stefy again.

    As Oracle failed to provide us the solution, we thought we could modify JMSTargetConnector java file. We were able to locate the .class file at location /sandisk/appselm2/peoplesoft/elmdev03/webserv/ELMDEV03/applications/peoplesoft/PSIGW.war/WEB-INF/classes/com/peoplesoft/pt/integrationgateway/targetconnector/; we decompiled it and saved the file as JMSTargetConnector.java and saved it at the same location. We found out that the correlation id exception was occuring due to code:
    if (!objectMessageJMSCorrelationID.equals(msgJMSMessageID))
    {
    throw new ExternalApplicationException("JMSTargetConnector:ExternalApplicationException. Correlation ID does not match.", new MessageCatalogEntry(10624), null);
    }

    We modified the code to suite our requirement.

    Now the question we are facing is how to compile the .java file. Whenver we try to compile we get many class not found excpetion. Please let me know if our approach is correct. If yes what steps we need to follow when modifying a devliverd java connector class as we are doing. If not what alternate solutions we may have. Need urgent help. Thanks in advance, Stefy Baby

    ReplyDelete
  16. @Stefy, for the record, I'm probably supposed to tell you not to decompile someone else's code ;). But the fact is, I've been in your position and done the exact same thing. The key difference, though, was that I renamed my source file so the generated connector had a new name. I suggest you do the same. That way your connector will still exist after the next upgrade.

    Yes, you can compile target connectors. You just need to setup your compile environment to include all of the required jars and class files. This PeopleBook entry will help you prepare your environment for compilation. At the end, it also tells you how to install Target Connectors. Basically, you just copy them into the same folder as the one you found. After that, go into your gateway settings online and click the Load Connectors button. This should bring in your new connector. Once loaded, though, you have to restart your web server each time you change your target connector.

    I have a step-by-step example of this in my PeopleSoft PeopleTools Tips and Techniques book.

    ReplyDelete
  17. Jim - the link to the PDF document appears to have gone stale. Do you know if it's available anywhere else?
    Josh

    ReplyDelete
  18. @Josh, the owner is moving that blog. I will update when it is available.

    ReplyDelete
  19. I had a doubt related with CI based webservice. Please do help me with it.


    Actually I am creating a webservice using CI.
    I created a response message , a request message and used the handler 'Create' which was already was created by default when CI was created.
    But when i run it through SoapUI, it gives error "Integration Broker Sync Handler: OnRequest for message ABC could not run to completion on node QE_LOCAL. (158,974). Can you please tel me hjow to resolve.
    Or does it happen as Im using wrong handler. Basically what needs to be written in the handler function if i want to create my own method?
    Thanks in advance,
    Shobha

    ReplyDelete
  20. @Shobha, SoapUI is a common test tool for PeopleSoft CI's. You should try posting your question in the PeopleSoft General OTN Forum.

    ReplyDelete
  21. Hello Jim,

    I have developing a synchronous message for integrating with third party system which runs on .NET.

    I have create my request message using Part rowset & container message and for response message, I have created schema using jdeveloper.

    When the external system sends a response, I am able to parse it and do internal processing. But when I send the response, the external system is receiving it as null. I have also tested my message using SoapUI. When I send a request the response comes back with proper SOAP wrapping which is well formed.

    When I validate the response message, it shows an error like below


    line -1: Missing message part with name [{http://xmlns.oracle.com/Enterprise/FSCM/schema/NQ_CUSTOMER_CREATE_RESP.V1}NQ_CUSTOMER_CREATE_RESP]

    This is my SOAP response




    WS_TEST19





    Below is the schema definition












    Your help will be much appreciated.

    ReplyDelete
  22. @Narender, I see the same question over here on the OTN forum. I'll post my response there.

    ReplyDelete
  23. Hello Jim,

    I figured out the reason why it is not validating. I miss-spelt the namespace.

    I have defined targetnamespace as
    http://xmls.oracle.com/Enterprise/FSCM/schema/MESSAGE_NAME.V1

    And in my handler code, I wrote this

    http://xmls.oracle.com/Enterprise/FSCM/schemas/MESSAGE_NAME.V1

    it should be "schema" not "schemas" the "s" made all the difference. I clearly Overlooked that part.

    ReplyDelete
  24. Hi Jim,

    I tried to use the link to:

    http://bloggingaboutoracleapplications.org/integration-broker-basics-peoplesoft-developer/

    and I get a 404 Error.

    ReplyDelete
  25. @ChicagoMom, thanks! Hakan's blog moved, so I updated the link. It should work now.

    ReplyDelete
  26. Hi Jim,

    Could you please shed some light on how integration broker behaves in a Disaster Recovery Scenario?

    ReplyDelete
  27. @Pankaj, you might want to ask that question on the document's author's web site, or in the PeopleSoft General Discussion forum.

    ReplyDelete
  28. Hi Jim,
    We have a requirement to send the terminated employee id's from PS HRMS to SUN IM. For this we have decided to place the java class file in PS web server. So whenever an employee is terminated we will invoke the class file which in turn triggers workflow in SUN IM. Also we have to capture every transaction (to check whether it is success or failure) through IB. Could you please provide us some inputs on invoking the class file through IB.

    ReplyDelete
  29. @Vinusaravanan, if you create an Integration Broker custom target connector, then placing your class files on the web server makes sense. The PeopleSoft IB SDK tells you where to place the connector and how to write it. My book also has a chapter showing how to create a custom target connector.

    The alternative, that might be easier, is to put the class files in your app server classpath and use GetJavaObject and CreateJavaClass in your PeopleCode request handler. You may have to create a local-to-local routing for this.

    ReplyDelete
  30. Thanks for your inputs, Jim.

    ReplyDelete
  31. Hi Jim,

    I am surrently working setting up a 3rd Party Web Service from PeopleSoft 9.2 (PT8.53) and while testing the service operation I am getting following Error:

    "Integration Synchronous Handler: No destination node can be determined for the request on node PSFT_HR. (158,963) IBTREE_WRK.IB_INVOKEOPER.FieldChange PCPC:5083 Statement:110 "


    have any ideas where can start looking for ?


    Thanks for the help!!

    ReplyDelete
  32. @Ajain2882, did you enable the any to local routing? Did you add the destination node to your end point configuration in PeopleTools > Integration Broker > Configuration > Service Configuration/

    ReplyDelete
  33. @Jim I was able to rectify the previous issue.I have one more issue with my another Synchronous web service. I have created a Rowset base request and response messages and trying to provide the Web Service to 3rd party system.While testing the service Operation I am getting an error This method can only be used by nonrowset-based messages. (2,852)]

    So is there a restriction to use Row Set base messages for Synchronous type of operation? What else could be the issue.

    Thanks for you help!!

    ReplyDelete
  34. @Ajain2882, their is no limitation from the configuration perspective. Your error sounds more like a PeopleCode problem. For example, if you have a Rowset based message, you can't use MSG.SetXmlDoc.

    ReplyDelete
  35. Hi Jim,
    Can you provide some info on the best practice for PS IB namespace selection? It is my understanding, perhaps incorrect, that the sole purpose of the namespace is to disambiguate XML tags so that using the same tag name as someone else does not cause a collision. If this is the case, should not the namespaces in the Service Configuration component be set using the local institution's URL?
    Jim Rowan
    SCU

    ReplyDelete
  36. @Jim, your understanding of XML namespaces is correct. Whether you change the namespace, or keep it the generic PeopleSoft/Oracle namespace depends on how you define ambiguous. For example, all PeopleSoft customer institutions have personal data, oprid data, depts, etc. The contents may differ, the definitions of these terms may differ, but the structure will remain the same. PeopleSoft's understanding of the data will remain the same.

    The only time where I can see it being a concern is when two separate institutions share data and have an XML structure that is similar, but slightly different. For example, one is using person/name to be employee, and another is using person/name to be student and the root of the document is identical, so the context doesn't distinguish between the two.

    ReplyDelete
  37. I just updated the link again to keep up with the file location. In Hakan's post, look for the text "The training can be downloaded using the following link" and click the word "link."

    ReplyDelete
  38. Hi Jim,

    Thank you for your wonderful posts. I am trying to process a data upload where I am trying to publish the messages through PeopleSoft over Integration Broker asynchronously in an Application Engine. The whole point is to be able to send several messages and consume them in the same node. Before I send the messages, I am storing the data on a table (say T1) to store all the field values in the upload file.

    While consuming I am trying to expose each message to the Component Interface and the exceptions are logged onto the same table T1. Let's say for each transaction we are flagging the table field (say Processed_flag ='Y').

    I need a mechanism where I could just wait for all the asynchronous messages to complete. I am thinking of checking the T1 table, if there are any rows on the T1 table where Processed_flag is 'N', just make the thread sleep for more time. While all the messages are not processed keep it sleeping and don't let the application engine complete.

    The only benefit I can get is I don't have to wait for multiple instances at once or does not have to make the synchronous call. The whole idea is to use the component by different transactions ( as if it was used by say 100 people -> 100 transactions ).

    Unless those 100 transactions are complete, we will be make sure out T1 table keeps a record of what goes on and off. If something is wrong, it can log the exceptions catched by the CI.

    Any comments on this approach would be appreciated. Thanks in advance!

    ReplyDelete
  39. @Sandeep, it is common to add the Process Instance to rows processed by an App Engine. I'm not sure that sleeping will help you much. If you have a PeopleCode subscription processing the message and updating the table, that will happen in the app server, not the process scheduler, and will be in a different session. In fact, if you are writing the process instance in the App Engine, but don't commit, and then try to update the same row through IB, then the IB process will likely fail because it can't lock the row for update.

    I am wondering if it would be better to publish your messages, like you intend and just let your App Engine finish. Schedule your app engine to run periodically. If it sees rows that already have a Process Instance and value of N, then those are your problem rows and you can address them.

    ReplyDelete
  40. @Jim

    You are right, not committing the data would result in locking on the tables.

    Even if we are able to validate the data on those tables before app engine completes, the whole idea to send the messages asynchronously is of no use. In that case, using synchronous messages would be better and run the processes in parallel.

    So, we decided to let the application engine complete and publish all the chunks of data through messages and make sure the messages are completely consumed in the same node.

    1. We will be updating the table T1, for all the processed / successful / failed rows as we keep consuming the messages and use them as needed.

    2. We will keep an audit or counter for all the rows published and consumed. Since exposing the same component to multiple transactions would be a huge performance impact. We want to make sure how it would be helpful if say 50 users are updating the same tables behind component using the same CI ( of course different instances ). I will completing mu proof of concept and hopefully it will be much better than running the processes in parallel.

    Thank you for your precious time to look at my question and providing your feedback.



    ReplyDelete
  41. Hi Jim,
    I am trying to publish the message by populating the message through LoadXMLstring. Below is the code I have used. I am able to generate the XML string with the required fields but I am unable to execute LoadXML string (error message -Message name W_PS_TEST_MSG not in message data. The expected message name was not found in the message data at the correct location. Examine the raw XML message data in the Integration Broker Monitor.")Please note the message-W_PS_TEST_MSG exists in Service Operation-W_PS_TEST. Could you please help me to rectify this issue.

    Code:
    Local SOAPDoc &SOAPDoc;

    &SOAPDoc = CreateSOAPDoc();
    &SOAPDoc.AddEnvelope(0);
    &SOAPDoc.AddBody();

    &SOAPDocXM = &SOAPDoc.XmlDoc;
    Local XmlNode &SOAPDocXML = &SOAPDocXM.DocumentElement;

    Local XmlNode &empl_id = &SOAPDocXML.AddElement("EMPLID");
    &empl_id.NodeValue = "12345";

    Local XmlNode &Oprid = &SOAPDocXML.AddElement("OPRID");
    &Oprid.NodeValue = "12345";

    Local XmlNode &first_name = &SOAPDocXML.AddElement("FIRST_NAME");
    &first_name.NodeValue = "test";

    Local XmlNode &last_name = &SOAPDocXML.AddElement("LAST_NAME");
    &last_name.NodeValue = "test";

    Local XmlNode &status = &SOAPDocXML.AddElement("HR_STATUS");
    &status.NodeValue = "I";


    &strXml = &SOAPDocXM.GenXmlString();

    MessageBox(0, "", 0, 0, &strXml);

    &MSG = CreateMessage(Operation.W_PS_TEST);

    &MSG.LoadXMLString(&strXml);

    &IntBroker = %IntBroker;
    &IntBroker.Publish(&MSG);

    ReplyDelete
  42. @Vinusaravanan, I noticed a few things in your code that I am wondering about:

    1. Is your message an unstructured message?

    2. Did you know that you can copy the XmlDoc from the SOAPDoc directly into the Message by using the SOAPDoc.XmlDoc property and the Message.SetXmlDoc methods? You don't need to convert to a string in the middle.

    3. It is unusual to publish a SOAP asynchronous message. Usually SOAP is synchronous, where you send a request and expect a response. You can see an example of using SOAPDoc in this manner in PeopleBooks here.

    ReplyDelete
  43. Thanks for your inputs, Jim. My message is a structured(asynchronous) type. I used copyrowset and publish to send the message. Now am able to publish the message.

    ReplyDelete
  44. Hi Jim,

    I recently published a rowset based asynchronous message on Local to local routing.

    I created two service operations
    say FT_SEND and FT_RECEIVE, both of these service operations use different messages and local to local routings.

    1. FT_SEND does not implement any handler and is able to publish the messages in my app engine.
    2. FT_RECEIVE implements INotificationhandler and OnNotify method through Application Package.

    Service operations/handler/queues are active for both service operations.

    1. FT_SEND : The messages are published through service operation FT_SEND and completed as 'Done'.


    2.FT_RECEIVE : Somehow the messages are not consumed with service operation FT_RECEIVE even though the configuration seems fine.

    Can you guess what might be wrong with this configuration?

    Thanks in advance for your precious time.

    ReplyDelete
  45. @Sandeep, I'm a little confused. Are you expecting FT_RECEIVE to process data from FT_SEND? If so, that is not how it works. In a local to local routing, it is the same service operation. A service operation doesn't necessarily communicate direction. The routing communicates direction. So if you want to process FT_SEND locally, then you need to add the handler to FT_SEND along with a local to local routing.

    ReplyDelete
  46. You guessed it right. I was expecting FT_RECEIVE to receive those messages and process them because earlier I had tried adding the onNotify Handler to the same service operation FT_SEND instead of FT_RECEIVE and it seems like the message is stuck in New Status once published.

    And as soon as I remove the handler from FT_SEND, it publishes the messages and the messages go the success on publish or resubmission.

    Also, I checked when I looked at the auto generated routing for FT_RECEIVE the routing type was generated as 'Outbound Request'

    What would be your suggestion on this scenario?


    Thanks

    ReplyDelete
  47. @Sandeep, add a local to local routing on FT_SEND and configure your handler on FT_SEND. If the message is stuck in new status, that is different. There are actually 3 places it could be in new status: instance, publication, and subscription. Whichever queue is stuck, it shouldn't be caused by the existence of a handler on FT_SEND.

    ReplyDelete
  48. You are correct, Jim. Now, I implemented the handler on FT_SEND and it worked fine. The only thing I had to do is to cancel those messages and resubmit those and those messages flowed through the PUB/SUB and processed the business logic as needed.

    They were stuck as opreation instances.

    Why they got stuck in New Status, is something I have to investigate further.

    Do you think clearing the IB cache is going to help in this scenario?

    Thank you very much for your time.

    ReplyDelete
  49. Jim We are sending a request from Peoplesoft to sharepoint. We are getting a default response everytime we send a request and the 3rd party receive no data it shows as getting blank xml content value. I gotto deliver this in a day and i am still stuck with it. Please any suggestion would be highly appreciated.

    ReplyDelete
  50. @Suresh, configure Integration Broker to use a debugging proxy such as Fiddler2 or WebScarab. Then you can see what IB is REALLY sending.

    ReplyDelete
  51. Hello Jim, thanks for all the tips and techniques over the years. I have a JMS-related question that maybe only you can answer. I'm using JMS Connector to get to MQ for sending asynchronous payment messages. Do you know if JMS Connector sends back a transaction id if connection property JMSAcknowledgement is set to Auto.Acknowledgement? My goal is to get a confirmation that the target JMS connector has received this message. Thanks a lot!!
    LH

    ReplyDelete
  52. @LH, Unfortunately, I have no experience with JMS. I suggest you ask your question on the PeopleSoft General Discussion OTN Forum.

    ReplyDelete
  53. Thanks you Jim.

    ReplyDelete
  54. Hi Jim,

    Is there any delivered components or process to handle reimbursemetns in Peoplesoft Campus Solutions

    ReplyDelete
  55. Hi Jim

    Can you please help me capture a fault string exception. I am working on FSCM 9.1 and tools 8.52 Integration broker . I am sending a request through the webservices to a third party service. If everything is OK with the XML, it returns the response message. But when something wrong with the XML, it is giving me HTTP 500 error. Where as the same request when i send through the SOAPUI I am getting fault string which gives me an indication of where my XML request is wrong. I want to be able to capture that fault string and display in error/log files which I am unable to do when I invoke the service from peoplesoft. Did anyone come across this kind of situation before, Please help me with the sample code. The request I am generating is by using XML doc classes.

    ReplyDelete
  56. @Mohd, I suggest you post your question on Hakan's page at http://hakanbiroglu.blogspot.com/2013/01/integration-broker-basics-for.html. This post is just a link to his course.

    ReplyDelete
  57. @Jim, the training document does not indicate how to catch the fault string. can you please throw some light on it. Thanks

    ReplyDelete
  58. @Mohd, I think your question is a great question. I just don't know the answer. My experience is mostly with PeopleSoft as a provider, not as a consumer. This is why I think you may want to ask your question of the post's author on the author's blog.

    ReplyDelete