Oracle binding not showing in send port - biztalk

I have a very simple BizTalk application that is polling the records from a SQL server and does some transformation then save it to the Oracle DB. I used BizTalk 2010, SQL server 2012, Oracle 11g each is hosted on their own separate server. BizTalk was setup properly and has been working fine.
I have attached the orchestration diagram for clarity. Nothing fancy, I have set up the sending and receiving port successfully (can connect to all the database, and I used typedpolling for inbound and insert operation for the outbound. The project can be compiled and deployed successfully.
I have imported the bindings to BizTalk Admin Console and can see both bindings on the receive port and send port. The following image shows the bindings for send port is there.
However, when I tried to configure the Orchestration, I can only see the receive Ports in the selection but the send ports information is not available for me to pick.
From my limited exposure to BizTalk in the past, I can select the send port once I have imported the bindings to the console. I wonder what I have done incorrectly this time?

Usually a table operation such as an insert will be a request (the insert) and the response which shows it has succeeded (with an array/list of ID's of the new records). If you look the port that was created from the bindings you will see both a Send pipeline and a Receive Pipeline. Just make the port in the Orchestration a Request/Response, and consume the response (even if you don't do anything with it). Then you can bind the logical port the the actual port one as the logical port will then match the port.

Related

How to use BizTalk context variable in BizTalk SFTP adapter

I am using BizTalk 2020 and starting in BizTalk 2016, it provides a native SFTP adapter which is a wrapper around WinSCP. I'm trying to move out of the BizTalk nSoftware SFTP adapter and utilized BizTalk native SFTP adapter.
I tested this out and it works if I hard-code the host name, user name and password. But I would like to know if it is possible to use a context variable like one highlighted below so that the sftp destination can be changed based on each's message context? if so how?
so far when I ran the test it fails to associates the variable SSHHost with the value found in the context of the message:
Currently this is how our Send Port which uses the 3rd party adapter and it works well.

Dynamically switching receive locations between database servers

Using BizTalk I need to read data from one of two databases that are hosted in Unix using ODBC.
The data is replicated between the databases and if one of the databases does not respond I need to switch to the other. There is no load balancer or anything so I need to be able to do the switch on the BizTalk server.
I was thinking of creating two receive locations, one for each database server, only one of them enabled and then have a Windows service that periodically tries to make a connection to one of the database servers and if there is an exception, call a powershell script that disables the receive location for the server that does not respond and enable the other receivelocation.
Is there a better solution for this?
I would solve this as follows:
In Biztalk create a single http receive location.
Create a windows service
In the windows service poll the first database, if it does not respond poll from the second database
Have the Biztalk service post the information to the http receive location
You need to consider what happens if you read the same data twice, once from the main database and once from the backup.

Using NSoftware sftp adapter with Biztalk

I've downlaoded the nsoftware sftp adapter for Biztalk.
I created a few send & receive ports within Biztalk admin just to see if it works, and it does.
I now need to build an orchestration with an sftp send port and sftp receive port.
I've added a reference to the adapter dll and included it in the project, but I'm not sure how to wire it up to my 2 ports in the .odx file.
Can anyone shove me in the right direction?
The only reason you'd have a project-level reference to the adapter DLL is if you need to use the property schemas for the nsoftware adapter; otherwise, the way you'd use it is the same way you'd use any other BizTalk adapter:
Declare your logical ports in your orchestration. Make sure you mark them as "Specify Later" (or direct/dynamic, if you're doing more advanced scenarios).
Build your orchestration as usual
Deploy
Go to the BizTalk administration console and create receive locations/send ports as necessary specifying the nsoftware SFTP adapter. You'll be able to enter all the adapter configuration settings there.
If you could share any more details about what you're trying to do, maybe I could offer more specific advice.

Use a fake biztalk send port as configuration

I am using a BizTalk orchestration to kick off an SSIS package. This package is essentially doing transformation on behalf of BizTalk on a very large volume of data. I have run into a problem as to the best way of specify in the drop location for SSIS use after the transformation. If this were a 'normal' BizTalk orchestration it would be easy to set up a send port. I would like to make a fake send port in BizTalk so that the admin could configure the send location from BizTalk and then have BizTalk pass that value into SSIS. However, if you configure a send port without actually attaching a connector to it, then it will not show up as an available binding in BizTalk admin.
Is there a way to get around this and force the admin to bind it before starting the orchestration? Any other ideas to allow for an easy configuration of this round-about process?
What I ended up doing was creating a decision shape that was true on one side so it never would go down the false branch. In essence I tricked BizTalk, so I could attach a connector to the send port that I am interested. Earlier in the orchestration I retrieved the value of the file location for the 'config' send port, so I can could send it to SSIS.

ASP.NET web page to device connect to server's USB (COM) port

I am working on a way to send commands to an Arduino board from a web site. The Arduino board is connected to the computer via a USB port (a COM port).
I have managed to connect and control the board using a VB.NET program. I also wrote a VB.NET class that can instantiate a COM connection and send and receive messages.
My next step is to basically create a program that will act as a proxy between my web server (IIS 7 running on Windows Vista) and the Arduino board. When a user gets to my ASP.NET page, the page will then send a command to the proxy to open the COM connection. When the connection is open and ready then I can send commands to the proxy. In turn, the proxy will send these commands to the board and listen for the responses it receives from the board. The proxy will then pass these messages back to the ASP.NET page.
I have several questions I hope the group can help me answer...
Am I in the right direction with this approach? Are there easier or more efficient ways of doing this?
The main issue I see occurring is that if a second user opens the web page and tries to open the COM port, there will be an error. Will this cause the first connection to fail? I guess I can first check if the port is already in use and give the second user a message.
Are there any other potential challenges I am missing or not seeing?
Rather than storing the connecting object in the HttpSessionState, store it in the HttpApplicationState so that it is accessible to all users.
You'll need to be careful to synchronize access to the COM port to avoid the serial communication initiated by individual HTTP requests from getting mixed up and confusing the Arduino.

Resources