HTTP Post instead of C1 OnRamp sendEnvelope February 2014 I II III IV V VI VII Try to get C1 OnRamp sendEnvelope working with BizTalk MarketSite Messaging Layer, MML, continues to be used How business partner works webMethods package IBD2_xCBL30 changes webMethods package PostxCBLAck is new webMethods service pub.client:http C1 OnRamp Alias definition still required ===================================================== I Try to get C1 OnRamp sendEnvelope working with BizTalk Tried to get sendEnvelope to work sendEnvelope is part of webMethods in package wmMarketConnect. Pretty sure webMethods bought CommerceOne around the year 2000 and the C1 OnRamp came from CommerceOne. No source code is available. Best guess is that sendEnvelope fails because it’s expecting some kind of proprietary communications, possibly involving the user Id + password log in that’s defined in the C1 OnRamp. Business partner worked with MicroSoft consultant and the conclusion was that all is good on their side. Unable to find documentation saying what sendEnvelope is attempting to do so it put the business partner in a difficult spot. Software AG forum http://tech.forums.softwareag.com/techjforum/posts/list/0/52535.page As of 2014-02-10 there was one suggestion, but no solution. Ventyx case 00211900 Ventyx says it’s not their problem. II MarketSite Messaging Layer, MML, continues to be used MML envelope with xCBL version 3.0 transaction, eg, Order, and attachments is still being used. III How business partner works As an asynchronous transaction within a stateful session, the business partner accepts the HTTP Post transaction and creates the MML envelope containing the Ack transaction and returns it. The MML envelope returned from the business partner, contains an Ack transaction identifying the original envelope by sending back the MML header field x-Message-Id in <Ack><MessageId>. IV webMethods package IBD2_xCBL30 changes sendxCBL30 There are a few more changes not included below to give more accurate error messages, below is the guts. String C1OnRampOrHTTP = " "; String serviceInvoked = "pub.marketconnect.transport:sendEnvelope"; try { if (!POReleaseNbr.equals("00000")) { C1OnRampOrHTTP is new parameter in package IBD2_xCBL30 configuration file, IntegrationServer\packages\IBD2_xCBL30\config\xCBL30parms.xml if (PO.getString("C1OnRampOrHTTP") != null) { C1OnRampOrHTTP = PO.getString("C1OnRampOrHTTP"); } if (C1OnRampOrHTTP.equals("HTTP")) { serviceInvoked = "PostxCBLAck.HTTPPost:dataTransmit"; svcInp.put("StringOrEnvelope", "Envelope"); if (in.containsKey("TRACE")) if (in.getString("TRACE").equals("true")) svcInp.put("TRACE", "true"); //Debug //doInvoke("IBD.MiscUtility", "dumpPipeline", svcInp); svcOut = doInvoke("PostxCBLAck.HTTPPost", "dataTransmit", svcInp); if (svcOut.getString("STATUS").equals("ERROR")) { ReplyDoc.put("Status", "INERROR"); ErrorItem[0].put("ErrorType", "999"); ErrorItem[0].put("Message", "Error invoking " + serviceInvoked + " " + svcOut.getString("ERRORMSG")); ReplyDoc.put("ErrorList", ErrorList); //--*Update ReplyDoc to pipeline out.put("ReplyDoc", ReplyDoc_rec); return out; } } else { svcOut = doInvoke("pub.marketconnect.transport", "sendEnvelope", svcInp); } } V webMethods package PostxCBLAck is new Goal is to replace sendEnvelope. Package PostxCBLAck configuration file, IntegrationServer\packages\PostxCBLAck\config\PostConfig.xml Included the target URL as webMethods does not provide any services for reading the C1 OnRamp alias definitions. <?xml version="1.0"?> <PostConfiguration> <ConfigurationName>PostConfiguration</ConfigurationName> <LastUpdated>2014-02-03-00.00.00.000000</LastUpdated> <LastUpdatedBy>personID</LastUpdatedBy> <dbAlias>database</dbAlias> <PostURL>https://business.partner.com/HTTPReceive.dll</PostURL> </PostConfiguration> HTTPPost:dataTransmit HTTPPost:dumpStringMMLEnvelope Replaces the C1 OnRamp log by writing the MML data and reply to \IntegrationServer\IndusBuyDemand\backup\StringMMLEnvelope-CCYY-MM-DDHH.MM.SS.FFFFFF.txt HTTPPost:envelopeToString Converts the MML envelope object to a String. HTTPPost:getFileString Read a file into a String. Used for testing by testFileStringPost. HTTPPost:HTTPPost Set up for and invoke pub.client:http and set up the output. HTTPPost:retainMsgID Set aside the outbound MML header x-Message-Id for comparison with reply. HTTPPost:testFileStringPost Use to send contents of \IntegrationServer\IndusBuyDemand\MML_xCBL_Test.xml. The file contains a MML envelope only. HTTPPost:validateReply The reply should be a MML envelope with an Ack transaction. The Ack’s <Ack><MessageId> is compared to the retained message ID. VI webMethods service pub.client:http timeout timeout is describe because during testing there are occurrences of pub.client:http not having a reply. Error invoking PostxCBLAck.HTTPPost:dataTransmit HTTPPost: service failed to complete. com.wm.app.b2b.server.ServiceException: java.net.SocketTimeoutException: Read timed out webMethods_Integration_Server_Built-In_Services_Reference_6_5.pdf page 54 begins spec for pub.client:http page 58 Usage Notes If url begins with https:, you can use pub.security:setKeyAndChain to specify the certificate chain. If you do not specify a certificate chain, pub.client:http uses the default outbound SSL certificate settings to authenticate the resources. If pub.client:http does not receive a response within the timeout period specified in the server’s watt.net.timeout parameter, it will throw an exception. For information about the watt.net.timeout parameter, see the webMethods Integration Server Administrator’s Guide. webMethods Integration Server Administrator's Guide 6.5.pdf page 105 Timeout The Timeout parameter specifies the length of time the server waits for a response from a target server. If the Integration Server does not receive a response in the allotted time, it retries the request up to the number of times specified by the Retries parameter. When the allowed number of retries is exceeded, the server returns an exception. When you install the Integration Server, the Timeout parameter is set to 3 minutes. For most sites this is a reasonable setting; however, you may need to adjust this value if you work with targets that have longer response times than this (e.g., large commercial Web sites or databases during peak periods). 20140213 Asset Suite development region’s webMethods has been set to zero and has not had timeout problems. Changed to 180 seconds to sync with test region. Test with C1 OnRamp done again just to make sure it’s not a timeout issue and it still fails. Extended No timeout settings. 20140213 Asset Suite test region has been set to 5 seconds and has intermittent problems. Changed to 180 seconds. It appears the “Outbound HTTP Settings” timeout trumps the extended watt.net.timeout. The Extended values are left the same. Extended watt.server.keepAliveTimeout=95000 watt.net.timeout=180 page 379 watt.net.timeout Specifies the number of seconds the server waits for an HTTP request to be fulfilled before the request times out. The default is 0. VII C1 OnRamp Alias definition still required Alias is still needed as it is referenced in IntegrationServer\packages\IBD2_xCBL30\config\ xCBL30parms.xml <ConfigurationMaster> <PO> <MarketConnectAlias> and the MPID is used during the MML envelope creation. *** end ***