cancel
Showing results for 
Search instead for 
Did you mean: 

B1if - Is there a possibility to setup transaction time limit

szymon_lipnicki3
Active Participant
0 Kudos

Hi All,

I have a question about long http connection in integration scenarios. Is there a possibility to setup time for scenarios’ timeout? For example – there is a scenario that has http inbound. This scenario has B1 Call atom. If this scenario step last for more than 1minute then the transaction should be cancelled. It’s important because if external system waits for 1 minute and there is no response, it closes connection with timeout error but B1if still process the transaction. In the end B1if adds object in SAP but external system doesn’t know that. It would be great to have a possibility to setup transaction time limit.

Kind Regards,

Szymon Lipnicki

Accepted Solutions (1)

Accepted Solutions (1)

HuanYang
Employee
Employee
0 Kudos

Hello Szymon,

Based on your description, seems the most uncertainty is from DI transaction.

Then I think there are 2 things which may be helpful.

1. DI Single Transaction

2. A DI Proxy parameter named ORPHANED

BTW, you may try the following code when unexpected behavior occurs

<xsl:message terminate=”yes”>!Error display </xsl:message>

Best regards,

Huan Yang

Answers (3)

Answers (3)

szymon_lipnicki3
Active Participant
0 Kudos

Hi Huang Yang,

Thank you for your reply. I don't know why I didn't receive a notification about your message.

Because the problem is related to SAP Customer Checkout, I think that I can't change this setting in scenario steps. All Customer Checkout scenarios have DI Single Transaction switched off.

ORPHANED option should be a good solution. I forgot about this setting. I'll check it.

Thanks for your help.

Kind Regards,

Szymon Lipnicki

szymon_lipnicki3
Active Participant
0 Kudos

Hi Annemarie,

Thanks for your reply.

I gave B1 Call atom as an example because most of the time, DI API long connection to SAP is the reason of step's long processing time. Step one from your list is not too safe because website gets response that message was received. If there will be exception in Step two then we have a problem because message is lost and website doesn't know that. We can have custom error handling but if any error happen in that scenario that we have no possibility to send information to website.

Another example. If the step with http inbound is stuck in message queue for any reason then new http call will wait for its turn. In this situation Transaciton timeout would be very helpful.

Cancelling such a step with B1 Call could be possible but when DI Single Transaction is switched off.

I asked this question because of issues with SAP Customer Checkout. One of the POSes send BPs to SAP. The connection is long, and when users synchronized BPs again the same client is duplicated in SAP B1..

Kind Regards,

Szymon Lipnicki

0 Kudos

Hello Szymon,

I think that a transaction limit (timeout) cannot help here. The issue is that the call to SAP Business One that takes too long. There are no compensating transactions in place in the API.

Have you considered splitting the synchronous scenario step into several steps?

  • Step one makes the synchronous call and hands over the message to an internal queue.
  • Step two with internal queue inbound makes the call to SAP Business One.
  • (When the call is successful, an event is generated in SAP Business One by the B1i user. You can pick up the event (setting the B1i filter accordingly) and use it to report the result back to the calling system.)

Best regards,

Annemarie