BizTalk 2013 AS/2 issues - biztalk

Currently I'm working on a project on which I need to send a PDF file over AS/2 using BizTalk.
Now, everything is setup in BizTalk.
However, I have an error message in BizTalk saying the following:
The receive pipeline:"Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2Receive,
Microsoft.BizTalk.Edi.EdiIntPipelines, Version=3.0.1.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" is trying to suspend a message received on Receive
Location:"/xxx/BTSHTTPReceive.dll". The Adapter/Receive Location however is configured
to never suspend messages on failure. Please change either the receive location or
receive adapter's configuration or the pipeline's configuration.
If I configure the adapter to suspend messages on failure it does work partially. However, I want to get it working with this setup. Is there any way to figure our why my messages are being suspended?
The warning message that follows on the error is the following:
The adapter failed to transmit message going to send port "SendPDFToxxxxOverAS2" with
URL "http://localhost/xxxx/BTSHTTPReceive.dll". It will be retransmitted after the retry
interval specified for this Send Port. Details:"The remote server returned an error:
(500) Internal Server Error.".
I hope someone can make some things clear.
In order to make narrow down the search, I've also removed the checkbox to send and request MDN's in the agreement.

I've found the issue myself.
"Return correlation handle on success" should be off.
"Suspend failed requests" should be on.
Thanks for the help anyway.
Kr

Related

Is there a requirement in BizTalk that requires a message coming in be sent out?

I have an orchestration that processes incoming messages that make a data call. If data is returned, a new message is created and sent back to the receive port via a "mover" BizTalk application. The original message is no longer needed, so I've been sending it to a discard folder. Is there a requirement in BizTalk that requires a message coming in to be sent out?
Each message that comes into BizTalk needs to be routed somewhere yes, otherwise it will suspend with a routing failure.
However as you are using an Orchestration, once it has consumed the message, and you don't need to send the original message anywhere from the Orchestration if you don't need it, when the Orchestration ends, that message will be gone
In message only scenarios, where you don't have an orchestration your options are
A file send port to a folder, where you have a script to clean them up
A null adapter on a send port, a null adapter is a custom adapter that takes the message from the message box and just discards it.

Continuously running send pipeline instance

An instance of a BizTalk send pipeline has started to run continuously. On 09/12/2021 an attempt was made to send a file via SFTP, which retried several times but ultimately failed due to a network issue. The error from the event logs is:
The adapter failed to transmit message going to send port "Deliver Outgoing - SFTP" with URL "sftp://xxx.xxxxxx.co.nz:22/To_****/%SourceFileName%". It will be retransmitted after the retry interval specified for this Send Port. Details:"WinSCP.SessionRemoteException: Network error: Software caused connection abort.
For some reason BizTalk made another send attempt at 1:49pm on 10/12/2021 which succeeded as confirmed by the administrator of the SFTP site. Despite this, BizTalk continued making intermittent send attempts and the pipeline instance is still running. The same file has been sent 4 times to the SFTP server.
The pipeline instance in theory should have suspended at 9:47pm on 09/12/2021. I have been able to confirm definitively whether anybody resumed it, but it seems unlikely at this stage. In any case, after sending successfully the pipeline instance should have terminated and should not be re-executing intermittently.
Does anybody know what could account for this behaviour? This is occurring on BTS2020 with CU2 applied.
I've sent messages over SFTP where the WinSCP interpretation of the date-modified attribute doesn't work with a specific type of SFTP server.
With the WinSCP GUI a dialogue box appears and you can disregard this error, but this option isn't available with BizTalk's GUI. This error appears when a file with the same filename already exists on the server and is supposed to be overwritten.
My solution was to create a pipeline component that removed %SourceFileName% on the server. The pipeline component (just like WinSCP GUI) can disregard the modified-date.

BizTalk: BTAHL72XReceivePipeline Pipeline Component

I've set-up two applications, one with FILE Receive Port and the other with a Send Port subscribing to that Receive Port with filter set as BTS.ReceivePortName == {ReceivePortNameHere}. I'm using BizTalk 2013 R2.
In the Receive Port, I'm using the pipeline 'BTAHL72XReceivePipeline'. And, in the Send Port, I'm using the pipeline 'BTAHL72XSendPipeline'.
When I drop a HL7 message into the Receive Port file location, it produces the error:
The Messaging engine failed to process a message submitted by
adapter:FILE Source URL:E:\InboundToBizTalk\*.hl7. Details:The
published message could not be routed because no subscribers were
found. This error occurs if the subscribing orchestration or send port
has not been enlisted, or if some of the message properties necessary
for subscription evaluation have not been promoted. Please use the
Biztalk Administration console to troubleshoot this failure.
However, I do have a subscription set. Why is this error occurring? Is there an issue with the pipeline component or the way I am using it?
On the Group Overview page search for "Subscriptions" and filter based on your Send port name.
Verify that you see an activation Subscription and confirm that the filter conditions on the subscription are correct.
The by far most likely causes:
A typo between the Receive Port Name and the value in the Filter.
The Send Port is not Enlisted or Started.
Do not use quotes in the filter property.
Turned out to be ACK which could not be routed therefore causing the whole flow to error. For an MLLP transport type, it is two way thus the ACK can be routed. For a FILE transport type, it is one way therefore ACK needs to be accounted for separately.
To get around this, another port was created which would subscribe to the ACK.

Handling network errors in grpc-java

How can I implement a strategy to detect and try to recover from network errors using gRPC-java? I know that UNAVAILABLE status can mean a network error, but that doesn't tell me what kind of network error it was - and UNAVAILABLE can also be sent back from the server.
In Java RMI we are admonished to pay attention to network problems and we can distinguish e.g. a ConnectionException which is a connection refused error. How can we do this with gRPC?
You can know more details about the error from the cause and description of the Status. For example: if it is a connection error from client side, the cause probably will be an IO/SocketException; if it is a GO_AWAY sent from the server, the description will include the HTTP/2 error code.

A message received by adapter "HTTP" on receive location "Receive_AS2" with URI "/Contoso/BTSHTTPReceive.dll" is suspended

I'm developing a demo of EDI over AS2 with asynchronous MDN but receiving this error upon executing Sender.exe, this error is shown in Event Viewer...
A message received by adapter "HTTP" on receive location "Receive_AS2" with URI "/Contoso/BTSHTTPReceive.dll" is suspended.
Error details: The output message of the receive pipeline "Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2EdiReceive, Microsoft.BizTalk.Edi.EdiIntPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" failed routing because there is no subscribing orchestration or send port.
The sequence number of the suspended message is 3.
MessageId: {D81813E2-9057-41CD-8A44-1528AEF85476}
InstanceID: {2B08DCAF-3D26-4BFC-AB04-8282891AA399}
I don't know what is going wrong , I followed MSDN tutorial line to line but its not executing right....
Can someone please help me?
Ben, the line '...failed routing because there is no subscribing orchestration or send port' is the key one here. You need to have either a Send Port or Orchestration subscribing (i.e. listening) for messages that are received.
Not knowing your specific application, I would suggest that you either don't have a subscribing Send Port or Orchestration, or they are not started.
This MSDN Forum post might help as well.

Resources