4

I have a orchestration in BizTalk which is collect to data via web services from SAP.

My process is as below.

enter image description here

We have a SOAP service on receive port and when we get an request from SOAP we transform it to SAP RFC File format and send it to SAP. When we try to get a response from SAP we get an error when response data is big. If response message size is so big our service get a timeout error. Otherwise there is a no problem if the message size is not big.

I tried to increase timeout duration on BizTalk management console but still fails. Whatever I did, the timeout duration is always in 1 minutes.

After Adding below XML config tags to machine.config file I get an error as below figure.

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config

<configuration>
<system.transactions>
  <machineSettings maxTimeout="00:20:00" />
</system.transactions> 
</configuration> 

enter image description here

Below image is SAP Send Port

enter image description here

SAP Send Port Details

enter image description here

In the detail as you can see my time out duration about 10 hour but in SOAP UI I get an timeout error after 1 minute.

Below image is Receive Port

enter image description here

Also you can find biztalk event viewer error as below.

A response message sent to adapter "SOAP" on receive port "WebPort_SAP/MusteriFaturaT/ABC_SAP_Fatura_T_FaturaOrch_InvoiceReceivePort" with URI "/SAP/MusteriFaturaT/ABC_SAP_Fatura_T_FaturaOrch_InvoiceReceivePort.asmx" is suspended. 
 Error details: The original request has timed out. The response arrived after the timeout interval and it cannot be delivered to the client. 

And SOAPUI response screen is blank as below

enter image description here

Sandra Rossi
  • 11,934
  • 5
  • 22
  • 48
ibrahimsen
  • 173
  • 2
  • 9
  • how big response you are talking about, can you tell us approximate size of response? – Vikas Bhardwaj Jul 07 '15 at 14:06
  • I could not receive any response thats why i can not say response size but response message include for example 50000 row. RFC send a 50000 row to us then biztalk try to convert it XML. SAP RFC complate process in 4-5 minutes but biztalk get a timeout error in 1 minute. – ibrahimsen Jul 07 '15 at 14:13
  • 1
    are you using SOAP adapter or WCF adapter to consume the SAP service? – Vikas Bhardwaj Jul 07 '15 at 14:16
  • I've update my quetion, you can see my receive and send port – ibrahimsen Jul 07 '15 at 14:21
  • What version of BizTalk are you using? – Dijkgraaf Jul 07 '15 at 20:57
  • Also, can you give the exact error message you are getting. Sometimes there are clues in there. – Dijkgraaf Jul 07 '15 at 22:04
  • @Dijkgraaf I've add biztalk error and SOAP UI response screenshot in my question. Also my Biztalk version is 2013 R2 – ibrahimsen Jul 07 '15 at 22:14
  • 1
    Are you sure it isn't SOAP UI that is timing out? From the error it looks like BizTalk tried to deliver the response message but the client had timed out. – Dijkgraaf Jul 08 '15 at 01:11
  • @Dijkgraaf Yes! its about SOAP UI time out. But after changing the SOAP UI timeout properties, you have to change soap default timeout.Problem is fixed, thank you. – ibrahimsen Jul 08 '15 at 10:45

4 Answers4

2

On WCF Custom send port, change the value of time out (close, open, send, receive) to increase timeout. See the link for more details

You can also use SOAPUI tool to test your web service outside BizTalk to see the response time and response size.

Vikas Bhardwaj
  • 1,455
  • 8
  • 10
1

Problem is about SOAP UI timeout issue. When i change the timeout property of SOAP our timeout duration was increase to 110 second. 110 second is default soap timeout duration. For fix this issue you have to add below config options to web.config file.

<system.web>
    <httpRuntime executionTimeout="43200" />
</system.web>

Also you have to add below configs to client app.config file.

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="IBRAHIM_SAP_Fatura_T_FaturaOrch_InvoiceReceivePortSoap" maxReceivedMessageSize="2147483647"  receiveTimeout="03:00:00"
    sendTimeout="02:00:00" transferMode="Streamed"/>
        </basicHttpBinding>
    </bindings>
</system.serviceModel>
ibrahimsen
  • 173
  • 2
  • 9
0

UPDATE:

Now we have the error it is indicating that it is the client that timed out rather than BizTalk, in this case SoapUI. As per the answer from this question SoapUI: ConnectException: Connection timed out:

Default socket timeout is set to 60000 milliseconds. You can change it:

File -> Preferences -> HTTP Settings -> Socket Timeout

When you are connecting with another client, you will also have to check/set the timeouts in that.

ORIGINAL POST:

If you are using BizTalk 10 or above check the response timeout on the host is set to a value greater than a minute.

I had an issue with Timeouts as well an this was one setting I changed (in this case to the maximum).

enter image description here

You can set up a specific Host for large transactions where the Response timeout in minutes is changed and only those ports that need it use it.

However even after I changed that to the maximum value I encountered a timeout after 15 minutes.

For that I had to disable Use Transaction, only do this if you still encounter issues and you are retrieving data and not inserting/changing data.

enter image description here

The above images are from my blog post about the issue BizTalk Server Negative Acknowledgement issues in SAP and WCF.

As to setting the system.transaction setting in the config, that is rather dangerous to do as it will affect everything, not just that port.

Community
  • 1
  • 1
Dijkgraaf
  • 11,049
  • 17
  • 42
  • 54
-1

You have to increase your timeout in the machine.config file

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config

<configuration>
<system.transactions>
  <machineSettings maxTimeout="00:20:00" />
</system.transactions> 
</configuration> 

You must also set the property allowExeDefinition to "MachineToApplication" from "MachineOnly"

mahieddine
  • 540
  • 4
  • 14
  • Hi, Thank you for your answer. Please see my question, I add an additional information after your suggestion. I tryed this solution but i could not solve the problem. Have you got an idea about error after adding a config to machine.config. – ibrahimsen Jul 07 '15 at 10:31
  • This is clearly a connectivity issue, can you post your send port configuration so we can know what adapters are you using, settings...etc – mahieddine Jul 07 '15 at 11:52
  • i edited my answer try to set the property allowExeDefinition like specified it should work – mahieddine Jul 07 '15 at 12:04
  • We must see your send port config, click on configure and put your screen shot there so we can give you a better answer – mahieddine Jul 07 '15 at 15:04
  • I just put my detailed config screenshot, and as you see my timeout duration is about 10 hour but my timeout duration is 1 minute. – ibrahimsen Jul 07 '15 at 16:36
  • ok so can you confirm me two things *did you try setting machine.config like i told you ? *if this doesn't work try at your orchestration level to set the soap client timeout like this MyMessage(SOAP.ClientConnectionTimeout) = 300000; – mahieddine Jul 07 '15 at 20:01
  • This is a rather risky thing to do as it would affect all transactions on this machine, not just BizTalk, and not just that port. – Dijkgraaf Jul 07 '15 at 21:08
  • I know but if this works, i can show him how he can apply this settings only at send port level in question – mahieddine Jul 07 '15 at 21:25