BizTalk Server 2020 Logic App Receive Adapter: The error occurred because the component does not implement the mandatory interface “IBTTransportControl”.

BizTalk Server 2020 Logic App Receive Adapter: The error occurred because the component does not implement the mandatory interface “IBTTransportControl”.

A few months ago, I was playing around with BizTalk Server hybrid Integration, in this case, trying to send messages from Logic App to BizTalk Server by using the Send message action of the Logic app BizTalk Server connector. While I conducted the first set of tests, I realized my Logic App was failing to send the message to BizTalk Server. On the BizTalk Server machine, I found that BizTalk Server was throwing the following error while receiving the message:

The Messaging Engine encountered an error when creating the receive adapter “LogicApp”. The Assembly is: “Microsoft.BizTalk.Adapter.LogicApp.Runtime.LogicAppReceiver, Microsoft.BizTalk.Adapter.LogicApp.Runtime”. The error occurred because the component does not implement the mandatory interface “IBTTransportControl”.

The Messaging Engine failed to add a receive location “POC_LOGICAPP_TO_BIZTALK_LA” with URL “/LogicAppTestService/Service1.svc” to the adapter “LogicApp”. Reason: “80070057”.

The receive location “POC_LOGICAPP_TO_BIZTALK_LA” with URL “/LogicAppTestService/Service1.svc” is shutting down. Details:”The Messaging Engine failed while notifying an adapter of its configuration. “.

The Messaging Engine failed to add a receive location “POC_LOGICAPP_TO_BIZTALK_LA” with URL “/LogicAppTestService/Service1.svc” to the adapter “LogicApp”. Reason: “80070057”.

The receive location “POC_LOGICAPP_TO_BIZTALK_LA” with URL “/LogicAppTestService/Service1.svc” is shutting down. Details:”The Messaging Engine failed while notifying an adapter of its configuration. “.

WebHost failed to process a request.

 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/63835064

 Exception: System.ServiceModel.ServiceActivationException: The service ‘/LogicAppTestService/Service1.svc’ cannot be activated due to an exception during compilation.  The exception message is: Receive location for address “/LogicAppTestService/Service1.svc” not found. (The BizTalk receive location may be disabled.). —> Microsoft.BizTalk.Adapter.Wcf.AdapterException: Receive location for address “/LogicAppTestService/Service1.svc” not found. (The BizTalk receive location may be disabled.)

   at Microsoft.BizTalk.Adapter.Wcf.Runtime.ReceiveLocationManager`2.GetEndpointContext(Uri uri)

   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WebServiceHostFactory`3.CreateServiceHost(String constructorString, Uri[] baseAddresses)

   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)

   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity)

   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)

   — End of inner exception stack trace —

   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)

   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity)

 Process Name: w3wp

 Process ID: 8068

I faced similar issues in the past with other adapters (HTTP, WCF, SOAP, …). However, I knew that I had published the service on IIS with the correct App Pool, privileges and the BizTalk Server receive port associated with this server was running (Enabled).

Nevertheless, my first action was to validate the I could access that URL on the browser, and to my surprise, it was failing!

Luckily I found a very good post written by my friend Ahmed Taha explaining the reason why that was happening and the solution

Cause

The reason for this issue is a bug on the default BizTalk Server 2020 configuration tool that assigns the Logic App Receive Adapter to an In-Process host. The correct setting is to be bound to the Isolated host.

Solution

The resolution is simple but a little annoying.

  • First, you need to remove the adapter from all assigned send ports and receive locations from all your BizTalk Server applications.
    • YYou can optimize this process using PowerShell, or if you were lucky like me that only have one receive port and one send port, you could easily do that manually..

Note: These scripts were taken from the Microsoft BizTalk Server Adapter for Logic Apps installer used for BizTalk Server 2016.

These steps resolved the Logic App Adapter Handler Receive configuration issue in BizTalk Server 2020 and correctly bound it to the Isolated host. So if you try now to configure your receive port, it should work fine.

Final note: BizTalk Server Cumulative Update 2 already provide a hotfix to this issue:

5003146 FIX: Unable to receive messages using LogicApp adapter because the receive location is getting disabled

After applying this fix, new receive handlers will be added as Isolated receive handler. However, any existing in-process LogicApp receive handlers need to be deleted manually. So basically, you need to reconfigure all your Receive Locations to use the Isolated host and then delete the receive handlers bounded to the In-Process host.

The post BizTalk Server 2020 Logic App Receive Adapter: The error occurred because the component does not implement the mandatory interface “IBTTransportControl”. appeared first on SANDRO PEREIRA BIZTALK BLOG.

BizTalk Server 2020: Hybrid Connectivity with Azure Logic Apps Adapter whitepaper

BizTalk Server 2020: Hybrid Connectivity with Azure Logic Apps Adapter whitepaper

BizTalk Server 2020 is undoubtedly the best-suited integration for the On-Premises integration platform and IaaS (Infrastructure as Service). It is also integrating cloud services with a variety of built-in adapters for the cloud, such as the Azure Logic Apps.

The Azure Logic Apps adapter is used by BizTalk Server to communicate with Azure Logic Apps. This could also be possible using the HTTP adapter, but the Logic App adapter provides a better and straightforward experience.

This whitepaper will show you how BizTalk Server 2020 can interact with Logic Apps:

  • How BizTalk Server can send messages to Logic Apps using the Logic App adapter
  • How Logic Apps can send messages through BizTalk Server using the BizTalk Connector

Where I can download it

You can download the whitepaper here:

You can also find, download and enjoy several other free whitepapers of my own here:

The post BizTalk Server 2020: Hybrid Connectivity with Azure Logic Apps Adapter whitepaper appeared first on SANDRO PEREIRA BIZTALK BLOG.

BizTalk Server 2020: Hybrid Connectivity with Blob Storage Adapter whitepaper

BizTalk Server 2020: Hybrid Connectivity with Blob Storage Adapter whitepaper

We live in the age of fast digital transformation. Different emerging services appear extremely fast which results in a more heterogeneous IT architecture. However, when we have this heterogeneous landscape compose of different legacy and modern systems, a major problem that may arise is how can we put all of these systems to interact with each other to create the concept of a single production system.

BizTalk Server 2020 is undoubtedly the best-suited integration for the On-Premises integration platform and IaaS (Infrastructure as Service). This whitepaper is intended to show you the complete process of receiving and sending messages through the newly introduced Azure Blob Storage adapter.

This whitepaper will give you a detailed understanding of the following:

  • Creating Azure Blob storage
  • Sending messages from BizTalk Server to Blob Storage using the Blob Storage adapter
  • Receiving messages to BizTalk Server from Blob Storage using the Blob Storage adapter

Where I can download it

You can download the whitepaper here:

You can also find, download and enjoy several other free whitepapers of my own here:

The post BizTalk Server 2020: Hybrid Connectivity with Blob Storage Adapter whitepaper appeared first on SANDRO PEREIRA BIZTALK BLOG.

BizTalk Server Logic App Adapter: An error occurred while making the HTTP request. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case

BizTalk Server Logic App Adapter: An error occurred while making the HTTP request. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case

I
have an insane roadmap of things to be published but if I didn’t have this week
was fertile in providing me with new content. Full week troubleshooting and
fixing issues in several clients… what an amazing week! But the best one
arrived almost on the last day.

Do
you know the feeling when you develop a solution that has been working properly
for a while and stops working for no logical reason? I bet you do. And this happened
to me this week at a client where we are using the BizTalk Server Logic App
Adapter
to extend part of our logical business to the cloud. And without we
make any changes to the Logic Apps or any changes in our BizTalk Server environment
(aka no new development installed, no patch’s or hotfixes installed, no
restarts, …) everything stops to work, we were not receiving any new messages
on our Logic Apps.

When
I access to BizTalk Server environment, I realize that all the requests were
suspended with the following error:

System.ServiceModel.CommunicationException: An error occurred while making the HTTP request to https://prod-….logic.azure.com/workflows/…/triggers/manual/paths/invoke?queryparameters . This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server. —> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. —> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. —> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
  at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
  at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult a

The adapter failed to transmit message going to send port “LOGICAPP_SEND_PORT” with URL “https://prod-….logic.azure.com/workflows/…/triggers/manual/paths/invoke?queryparameters“. It will be retransmitted after the retry interval specified for this Send Port. Details:”System.ServiceModel.CommunicationException: An error occurred while making the HTTP request to https://prod-….logic.azure.com/workflows/…/triggers/manual/paths/invoke?queryparameters. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server. —> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. —> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. —> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host

   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)

   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)

   — End of inner exception stack trace —

   at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)

   at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)

   — End of inner exception stack trace —

   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

   at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)

   — End of inner exception stack trace —

Server stack trace:

   at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)

   at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)

   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)

   at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)

Exception rethrown at [0]:

   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

   at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)

   at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)”.

Logic App Adapter: This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server

The other curious thing was that all my environments DEV, QA, and PROD were with the same symptom and all of them start at the same time which made this problem even more intriguing.

However,
I was able to connect with the adapter, see and select all the Logic Apps in my
subscription.

Logic App Adapter configuration on the BizTalk Server administration Console
Logic App Adapter configuration on the BizTalk Server administration Console

To
demystify if that was a problem with the adapter, I switch to the HTTP adapter
in order to try. Nevertheless, I got identical problems that made me dismiss
the idea that there could be something wrong with the adapter.

The
next step was to see if there was a network issue, maybe a firewall or proxy, which
should be because there was no intervention in the environment, but it is
always worth testing. To do that, I used one of my favorite tools, postman, and
to my surprise, everything was working fine. I was able to communicate and send
requests to all my Logic Apps in all my environments!

Cause

If you don’t are really
familiar with this type of problem, you may be pointed for a certificate issue,
but in our case, we were not using any kind of certificates to call our Logic
Apps and no additional type of authentication.

But I was sure that I had
already seen that error in the past, and I was related to security protocol (TLS
1.0 or TLS 1.2) used on the HTTPS communication and yes HTTPS because
all Logic Apps endpoints are in HTTPS.

BizTalk
Server came out-of-the-box and works very well with SSL (Secure Socket Layer)
3.0 or TLS (Transport Layer Security) 1.0, and these are the security
protocol used. New versions of BizTalk Server allow us to use TLS 1.2, but that
required extra manual configurations that we need to do in the environment and I
know that everyone is deprecating TLS 1.0 and 1.1 because of the well know vulnerabilities,
nevertheless, everything was working fine I have been doing this kind of hybrid
solution connecting with Logic Apps.

What
I discovered on the official documentation was that they say that: The
Request trigger supports only Transport Layer Security (TLS) 1.2 for incoming
calls
. Outgoing calls continue to support TLS 1.0, 1.1, and 1.2.

Nevertheless,
that wasn’t true until a few days ago, and my guess is that they actually discontinue
support for TLS 1.0 and 1.1 on the incoming calls without any notice, something
that, in my opinion, you shouldn’t do.

Solution

The solution was very simple,
we just need to specify that the default security protocol on BizTalk Server is
TLS 1.2. And to do that you need:

  • To
    make some changes on the registry to set TLS 1.2 as default security protocol TLS1.2;
  • Or
    creating a Custom BizTalk Server behavior;

I
choose the first option, making some changes to the registry. And to accomplish
that we need to add the below DWORD values in our registry:

  • On the [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client]
    • Create the following DWORD (32-bit) values
      • Name: DisabledByDefault
        • Value Data: 0
      • Name: Enabled
        • Value Data: 1
  • On the [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server]
    • Create the following DWORD (32-bit) values
      • Name: DisabledByDefault
        • Value Data: 0
      • Name: Enabled
        • Value Data: 1
  • On the [HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkv4.0.30319]
    • Create the following DWORD (32-bit) values
      • Name: SchUseStrongCrypto
        • Value Data: 1
  • On the [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoft.NETFrameworkv4.0.30319]
    • Create the following DWORD (32-bit) value
      • Name: SchUseStrongCrypto
        • Value Data: 1

If
you try resending a message to your Logic App, everything should work properly
again.

The post BizTalk Server Logic App Adapter: An error occurred while making the HTTP request. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case appeared first on SANDRO PEREIRA BIZTALK BLOG.

BizTalk Server 2016: step by step Logic App adapter installation guide

BizTalk Server 2016: step by step Logic App adapter installation guide

My latest BizTalk Server whitepaper has been published: “BizTalk Server 2016: step by step Logic App adapter installation guide” and I’m thrilled!

BizTalk Server 2016: step by step Logic App adapter installation guide

I am currently doing many hybrid integrations, leveraging the capabilities of BizTalk Server and Logic Apps to meet the needs/requirements of my clients/projects. Some of these projects began initially to be completely on-premises, but as the projects grew and new needs emerged, the need to use some cloud services appeared like Power BI, Office365 (Teams, Outlook) and so on, became a reality. And these features are much easier to implement and have more productivity on Azure Logic Apps instead of BizTalk Server as there are already native connectors there.

And you have known that in reality there are several ways to implement this two bidirectionality communication between Logic App and BizTalk Server :

  • Sending messages from BizTalk Server to Azure Logic Apps
  • and receiving messages from Azure Logic Apps to BizTalk Server

like using HTTP requests or Azure Service Bus, and by doing so you can create robust and smart hybrid integrations. You may have to use one of these alternative implementations if you are using older versions of BizTalk Server.

The good news is that BizTalk Server 2016 has a better and more user-friendly way to make these hybrid connections. Instead of using HTTP requests, with BizTalk Server 2016 you can use the Logic Apps adapter to receive messages from an Azure Logic App or send messages to an Azure Logic App.

This whitepaper will give you a detailed understanding of the following:

  • Requirements to install Logic App adapter
  • Microsoft BizTalk Server Adapter for Logic Apps
  • On-premises data gateway
  • How to install and configure the Logic App Adapter

Where I can download it

The whitepaper is completely free and you can download it here:

I would like to take this opportunity also to once again say thanks to Lex Hegt for helping me reviewing this whitepaper especially for the incredible work of him correcting my horrible English and in this way make the document and my thoughts being readable.

I hope you enjoy reading this paper and any comments or suggestions are welcome.

You can also find, download and enjoy several other free whitepapers of my own here:

The post BizTalk Server 2016: step by step Logic App adapter installation guide appeared first on SANDRO PEREIRA BIZTALK BLOG.

Empowering Hybrid Integration recording is now online on Channel 9

Empowering Hybrid Integration recording is now online on Channel 9

Well, Empowering Hybrid Integration segment is online since January 30, 2017, but only now I realize that… During the MVP Global Summit, and taking the opportunity of having most of the Integration MVPs gathered at the event, Microsoft Pro Integration team tends to invite the MVPs to create short videos – 8 to 10 minutes videos – about Integration (on-premise or in the cloud). It happened in previous editions of the Summit and it happened in the last edition in which they invite us to talk about Hybrid Integration that includes BizTalk Server, Azure Logic Apps, Azure API Management and Azure Service Bus.

For several reasons, I never had the chance to accept the challenge in the past, but last year I was able to accept the invitation to speak and record at the “famous” Microsoft Building 20, building that is the home of Channel 9 studio …

Preparing myself to record my session about Empowering Hybrid Integration on Channel 9Preparing myself to record my session about Empowering Hybrid Integration on Channel 9

… and make a short talk about Hybrid Integration using Service Bus Queues, BizTalk Server, Dynamic CRM, SQL Server, Logic Apps and File.

Empowering Hybrid Integration: Technical Solution

Has I told in a previous post of my blog, that was my first experience, and I have to confess, I was a little nervous to be recording in a small professional studio, so as expected after seeing the record in its raw state, the end result could have been better, but, fortunately for you guys I was able to edit the video and remove some breaks/delays between switching from my presentation slides to my screen. Nevertheless, for a first experience, it went pretty well and I am happy with the result. The important for me is to face new challenges, different situations, leave my comfort zone and improve to be better next time.

The result is this 8 minutes video on Empowering Hybrid Integration where you can learn how you can create powerful hybrid integration solutions using existing on-premises and cloud based solutions.

Empowering Hybrid Integration recording at Channel 9

Fortunately, I had the company of my good friend Kent Weare in this small “adventure”:

Protecting Azure Logic Apps using Azure API ManagementProtecting Azure Logic Apps using Azure API Management

You can also watch his session about “Protecting Azure Logic Apps using Azure API Management”. In this video, you can learn how to use Azure API Management to protect your Logic Apps.

Protecting Azure Logic Apps using Azure API Management recording at Channel 9

You can watch more sessions regarding Microsoft’s Hybrid Integration Platform on Channel 9 here.

Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a consultant at DevScope. In the past years, he has been working on implementing Integration scenarios both on-premises and cloud for various clients, each with different scenarios from a technical point of view, size, and criticality, using Microsoft Azure, Microsoft BizTalk Server and different technologies like AS2, EDI, RosettaNet, SAP, TIBCO etc. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community. View all posts by Sandro Pereira

Upcoming Events

In two weeks time I will head out to North America. My first stop will be Calgary to visit my friend Kent Weare. My MVP buddies Saravana Kumar and Michael Stephenson will join me as we will be speaking during the Azure Hybrid Integration the 30th of October at Microsoft Calgary.

The Azure Hybrid Integration will be a full day with Kent, Saravana, Michael, myself and Darren King from Microsoft speaking on the following topics SaaS connectivity, IoT, Hybrid SQL Server, BizTalk administration & operations and Two Speed IT using Microsoft Azure.

The free event takes place on October 30th, 2015 at the Calgary Microsoft office. You can find more details here.

After this event we will head out to Redmond for the yearly MVP Summit. This is a multi-day event that is hosted in Bellevue and at Microsoft headquarters in Redmond, Washington. All the MVP in the world that are able to come will be there to connect with fellow MVP’s and the various product groups.

I look forward to both events as it will enable me to engage fellow MVP’s, the integration community in Canada and to learn more about the future road maps of integration, Microsoft Azure and direction of Microsoft itself. The IT world around me is changing rapidly and for personally I am noticing it as my projects change from an on premise integration- to hybrid solution focus.

For those people that register for the Calgary event,  I am looking forward to meet you and to have some interesting discussions.

Cheers,

Steef-Jan