Maximo

Maximo

Come for answers, stay for best practices. All we're missing is you.

 View Only
  • 1.  SOAPUI PAYLOAD

    Posted Mon June 01, 2020 10:28 AM
    New to maximo but  not that much of a novice when it comes to SOAP and REST. In many of the examples in maximo showing how External Systems work with Publish Channels you will see the easiest route that is in documentation. You change an asset structure,this triggers the change if you use MXXMLFILE or MXFLATFILE and out comes the changes depending on how frequent the cronstasks work. Fine I have done that by now a thousand times. I change the endpoint to the wsdl of a working web service should I not see some action?

    URL of my WSDL that is hosted ttp://wsf.cdyne.com/WeatherWS/Weather.asmx please note that I removed the h in the http so the forum is not cluttered in SOAPACTION I have actually shown the working paylodad here 

    POST http://wsf.cdyne.com/WeatherWS/Weather.asmx HTTP/1.1
    Accept-Encoding: gzip,deflate
    Content-Type: text/xml;charset=UTF-8
    SOAPAction: "http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP"
    Content-Length: 337
    Host: wsf.cdyne.com
    Connection: Keep-Alive
    User-Agent: Apache-HttpClient/4.1.1 (java 1.5)


    at this point is my assumption here correct when an Object structure is changed for e.g Asset, Its Publish Channel will invoke the SOAPWS?
    How do I test this because if change an asset in the MXXML case I can see the file but in the WS payload case which logs do I look I have made the logger for integration the highest I can find.

    Does the Data Export button do the same thing as on demand?

    My understanding is even if the endpoint is not returning a success it still returns a formatted response(soap fault) form the weataher server  my example just shows the public wsdl to illustrate the use case.Actually I need the WS to talk to a working different system.







    ------------------------------
    Appu Nair
    ------------------------------



    #AssetandFacilitiesManagement
    #MaximoIntegrationandScripting
    #Maximo


  • 2.  RE: SOAPUI PAYLOAD

    Posted Mon June 01, 2020 10:21 PM
      |   view attached
    Replying myself on what I took to try this out
    1. On a MAXIMOSERVER1 I created a WebService from the MXPERSON Object and deployed it .One can verify it on that servers URL by prefixing server1/meaweb/services/mxperson. I used deploy to product so it stays within maximo and not WS.It  is imperative that this works and not the typical  server1/meaweb/wsdl/mxperson.wsdl url as to access it from another place it needs to be under services(This is a big guess)
    2. On another MAXIMOSERVER2 I created an endpoint and the WS settings like this screencap. So the first is the server and this is the client.on the WS Endpoint one puts server1/meaweb/services/mxperson on the SOAPACTION urn:processDocument and in SERVICENAME:MXPERSON .Clue if you use SOAPUI you get all of that from it
    3. Now put a payload 

      <max:SyncMXPERSON  xmlns:max="http://www.ibm.com/maximo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creationDateTime="2018-02-15T22:47:37-06:00" baseLanguage="EN" messageID="1518756456960817941">

               <max:MXPERSONSet>
                  <max:PERSON action="AddChange" >
                     <max:PERSONID >APPU</max:PERSONID>
                     <max:SENDERSYSID>appu12</max:SENDERSYSID>
                     <max:SOURCESYSID >appu2</max:SOURCESYSID>
                  </max:PERSON>
               </max:MXPERSONSet>
      </max:SyncMXPERSON>
    4. That should work.

    Note to expand the full sequence I went and Added an External System on Server 2, associated a publish channel and provided the above endpoint on server 2, so when you change a user record on server2, the JMS seq will throw the record and it will be sent to the first server. On server2's systemout.log you will see your WS call originating I am pretty sure the first server also receives that.

    Now I have to make this methodology work with a non maximo WS as my intent is to use the publish channel to update a non maximo soap webservice whose schema is completely different. So wish me luck...

    I hope someone who is in my shoes will find this useful some time :)

    ------------------------------
    Appu Nair
    ------------------------------



  • 3.  RE: SOAPUI PAYLOAD

    Posted Wed June 03, 2020 01:07 PM
    There is a correction that I wish to record. The EndPoint is a great tool to test outside communications, but it will not work fully in the end to end integration.
    For e.g, My WS Provider is Maximo with a WS I hosted and it will only understand that structure something for brevity I should note as 

    <max:SyncMXPERSON >

             <max:MXPERSONSet>
                <max:PERSON action="AddChange" >
                   <max:PERSONID >APPU</max:PERSONID>
                   <max:SENDERSYSID>appu12</max:SENDERSYSID>
                   <max:SOURCESYSID >appu2</max:SOURCESYSID>
                </max:PERSON>
             </max:MXPERSONSet>
    </max:SyncMXPERSON>



    But when you do this for real if you use Maximo to generate a publish event it will run its course
    So when I want to create a Publish Channel on my client machine modelled after the person example a change to a person record will drop 
    in the publish q a structure file similar to(i removed xml ns info it puts
    <?xml version="1.0" encoding="UTF-8"?>
    <PublishAPPUPERSONOS >
    <APPUPERSONOSSet>
    <PERSON action="Replace">

    </PERSON>
    </APPUPERSONOSSet>
    </PublishAPPUPERSONOS>

    So essentially this is the message that is going to be sent by the client and it will fail

    So at this point my thought is to create a translation xml

    (Why I think that is necessary is because I can see the failed q files and if i send the required structure it will work)

    Maximo OOB does not give you a XSLT tool perhaps I have to translate it ...



    ------------------------------
    Appu Nair
    ------------------------------



  • 4.  RE: SOAPUI PAYLOAD

    Posted Thu June 04, 2020 08:25 AM
    Hi Appu

    The Publish Channel does allow you to inject XSL, Java or automation script into the processing of a Publish Channel.  You can register those on the Pub Channel App.
    This section of the Knowledge Center discusses this: https://www.ibm.com/support/knowledgecenter/SSLKT6_7.6.1.1/com.ibm.mif.doc/gp_intfrmwk/c_ctr_customize_java.html

    Tom

    ------------------------------
    Tom Sarasin
    Maximo Designer
    IBM
    (978) 899-2592
    ------------------------------



  • 5.  RE: SOAPUI PAYLOAD

    Posted Fri June 05, 2020 03:59 PM
      |   view attached
    Thanks, Tom.  I got much better by just introducing an XSL into the path.Java and automation classes are next for me but I want to see if I can make this work with ​just XSL at this point, I have created a Stylesheet that transforms the huge XML message in Maximo like this. I will add an attachment to help the reader understand where it is going wrong. My understanding is when I am using a XSL style sheet I am only able  to manipulated <Body> which cannot be because the whole SOAP standard is about knowing how to set Headers and Body. I know my XSLT is wrong but are there any immediate starter examples anyone has that allows a maximo outbound message to be called against a SOAP schema(not Maximo) that will figure it out like my attached example and send in a fully formed Soap message.

    I also looked at the links but none given my experience of a few days I cannot seem to completely understand :)

    Currently my outbound publish channel will work with any SOAPSERVICE that does not have a mandatory <Header> attribute.



    ------------------------------
    Appu Nair
    ------------------------------

    Attachment(s)

    txt
    IBM_DEV1.txt   1 KB 1 version


  • 6.  RE: SOAPUI PAYLOAD

    Posted Sat June 06, 2020 12:39 PM
    Hi Tom, In the link you provided it says this

    If this Is something well known in the community will appreciate any help by guiding me to its link if possible or some project that has some starter examples

    "

    When the customization code is configured for use, the integration framework calls the code at the appropriate point during transaction processing.

    You can download sample Java classes or XSL files from the IBM® Tivoli® Open Process Automation Library (OPAL)."

    Is that a Product? a website where developers interact all I have been able tof ind is an old video that has this link
    https://mediacenter.ibm.com/media/How+to+find+adapters+on+the+Open+Process+Automation+Library+%28OPAL%29/0_oefwwpd5/







    ------------------------------
    Appu Nair
    ------------------------------



  • 7.  RE: SOAPUI PAYLOAD

    Posted Tue June 09, 2020 04:24 PM
    Hi Anup.  The content regarding OPAL is dated (10+ years), don think you want to reference that.
    For your pub channel, are you using an End Point that is based on one of our SOAP handlers?
    These handlers should do the work of soap envelope - that is where you are having problems correct?
    Tom

    ------------------------------
    Tom Sarasin
    Maximo Designer
    IBM
    (978) 899-2592
    ------------------------------