Tamer is finally blogging!

Thought at the end of the day

  Home  |   Contact  |   Syndication    |   Login
  14 Posts | 0 Stories | 3 Comments | 22 Trackbacks

News

Archives

Post Categories

Image Galleries

For Presentations

Squash links

Wednesday, January 19, 2005 #

You can tell I'm doing alot of documentation today. Here is another quick tip.

If you get a “Delivered not consumed” message in HAT sending a message using MSMQT (I think this will be the same with MSMQC) this means that your message did not reach the MSMQ Queue for some reason. Either the Server name / Queue name is wrong or the server is not available.


In BizTalk 2004 you will end up with a dehydrated orchestration if the Siebel web service would fail. The reason is that the return error type mentioned in the WSDL is not returned. Instead, and depending on the type of error, HTTP error in this case, you see something like this in the event log

 

 

The adapter "SOAP" raised an error message. Details "Client found response content type of 'text/html;charset=UTF-8', but expected 'text/xml'.

The request failed with the error message:

--

<html><head><title>Message:</title></head>

<body>The server you are accessing is either busy or experiencing difficulties. Please close the web browser, start a new one and try logging in again. For further support, please copy and send the full message text to your system administrator.[15:05:39]

<p>

--.".

 

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

 

Some times I even got something like this:

  <?xml version="1.0" encoding="UTF-8" ?>

- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

- <SOAP-ENV:Body xmlns:siebelf="http://www.siebel.com/ws/fault">

  <faultcode>Client</faultcode>

  <faultstring>There is no active Web Service with operation named 'http://www.CompanyName.co.uk/xml/BBT_Account_And_Address_Inbound:RunProcess4'.(SBL-EAI-04313)</faultstring>

- <detail>

- <siebelf:errorstack>

- <siebelf:error>

  <siebelf:errorsymbol />

  <siebelf:errormsg>There is no active Web Service with operation named 'http://www.CompanyName.co.uk/xml/BBT_Account_And_Address_Inbound:RunProcess4'.(SBL-EAI-04313)</siebelf:errormsg>

  </siebelf:error>

  </siebelf:errorstack>

  </detail>

  </SOAP-ENV:Body>

  </SOAP-ENV:Envelope>

 


Siebel consultants use a wizard to build Web service WSDLs from their integration objects. One thing to watch out for is the value for ElementFormDefault in the WSDL. Sometimes (Not sure why) they will generate the WSDL and will have the following line:

 

<xsd:schema xmlns:xsdLocal0="http://www.CompanyName.co.uk/103Product/BBTErrorReturn" targetNamespace=http://www.CompanyName.co.uk/103Product/BBTErrorReturn xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 

Which is fine but then the return value you get from the web service call is qualified, which looks like this:

 

 

xml version="1.0" encoding="UTF-8" ?>

- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

- <SOAP-ENV:Body xmlns="http://www.CompanyName.co.uk/xml/BBT_Account_And_Address_Inbound/BBT_Account_And_Address_Inbound">

- <BBTErrorReturn xmlns="http://www.CompanyName.co.uk/103Product/BBTErrorReturn">

  <ErrorCode xmlns="http://www.CompanyName.co.uk/103Product/BBTErrorReturn">0x6cbe -- 0x6b0c -- 0x80d8ErrorCode>

  <ErrorMessage xmlns="http://www.CompanyName.co.uk/103Product/BBTErrorReturn">'Street Address' is a required field. Please enter a value for the field. (SBL-DAT-00498) -- Stack trace: Service [BBT_Account_and_Address_Inbound].Service_PreInvokeMethod(), Line: 282 -- Error invoking service 'BBT_Account_and_Address_Inbound', method 'AccountAddressInbound' at step 'Update Account And Address'.(SBL-BPR-00162)ErrorMessage>

  BBTErrorReturn>

  SOAP-ENV:Body>

  SOAP-ENV:Envelope>

 

You end up having a dehydrated orchestration because you will are not able to read the SOAP response. If you use the SOAP Tool Kit as a proxy you can see the response coming back ok In addition if you use debug view to output the message from inside the orchestration, you will only see the top element without the sub elements.

 

The way around this is by manually editing the WSDL to add the attribute elementFormDefault="qualified". So that line should look like this:

<xsd:schema elementFormDefault="qualified"

 targetNamespace="http://www.siebel.com/xml/BBT Admin Product Definition"

 xmlns:xsdLocal1="http://www.siebel.com/xml/BBT Admin Product Definition"

 xmlns:xsd="http://www.w3.org/2001/XMLSchema"

> 

 

Then regenerate your schemas again from the Web reference. I tried just changing the schemas generated from the WSDL but that did not work. My best guess is that BizTalk 2004 uses the WSDL rather than the xsd file that VS2003 produces.

 

I hope this helps few people.