Today I was helping a BizTalk Server customer migrate their process from using the FTP adapter to the SFTP adapter. And if you are familiar with the BizTalk SFTP adapter, you will be aware of the painful process of choosing the correct version of WinSCP and how that hell we need to do to work correctly with the BizTalk Server, which is quite simple in general:
Download WinSCP and the .net Library, ensuring you get the correct version!
Copy the .exe and .dll to the BizTalk installation folder
DO NOT gac anything. If you GAC the .net library, it will not work because it expects WinSCP.exe to be in the same path, so that’s why they both go into the BizTalk installation folder.
However, the biggest issue is: what is the correct WinSCP version I need for my version of BizTalk Server 2016 or 2020?
And for that reason, Thomas E. Canter, on his day as a Phidiax consultant, decided to create this fantastic PowerShell script BizTalk WinSCP Installer, which during the years, has evolved and was improved by several people like Michael Stephenson, Nicolas Blatter, Niclas Öberg and myself.
If your environment has access to the internet, then I will recommend you use that script to install WinSCP! However, my client didn’t have access to the internet from the production server, and to complicate it a little bit, it didn’t have the same Build version. Let’s say in the test environment, it did have BizTalk Server 2016 with Feature Pack 3 and Cumulative Update 9, but in production, we would find BizTalk Server 2016 with Feature Pack 3 and Cumulative Update 5. That means we couldn’t copy the files from other environments to production. We had to use a different WinSCP version.
To address this scenario, I created a simple PowerShell version that you could choose the version you want to download and that you can run on any machine with access to the internet without checking the Build version you have in your environment.
This is a simple abstract of the PowerShell script:
$checkExeExists = Test-Path $targetNugetExe
if(-not $checkExeExists)
{
if ($PSCmdlet.ShouldProcess("$sourceNugetExe -OutFile $targetNugetExe", "Run Invoke-WebRequest ")) {
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
$targetNugetExeExists = Test-Path $targetNugetExe
if (-not $targetNugetExeExists) {
$Continue = $false
Write-Error "`n$bangString";
Write-Error "The download of the Nuget EXE from";
Write-Error $sourceNugetExe;
Write-Error "did not succeed";
Write-Error "$bangString";
}
else{
Write-Success "nuget.exe download successfully."
}
}
}
if ($PSCmdlet.ShouldProcess("$getWinSCP", "Run Command")) {
Invoke-Expression "& $getWinSCP";
$WinSCPEXEExists = Test-Path $WinSCPEXEDownload
$WinSCPDLLExists = Test-Path $WinSCPDllDownload
if (-not $WinSCPDLLExists) {
$Continue = $false
Write-Error "`n$bangString";
Write-Error "WinSCP $winSCPVersion was not properly downloaded.";
Write-Error "Check the folder and error messages above:";
Write-Error "$nugetDownloadFolder";
Write-Error "And determine what files did download or did not download.";
Write-Error "$bangString";
}
else{
Write-Success "WinSCP $winSCPVersion was properly downloaded."
}
}
THESE POWERSHELL SCRIPTS ARE PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.
Where can I download it?
You can download the complete Azure Function source code here:
Hope you find this helpful! So, if you liked the content or found it helpful and want to help me write more content, you can buy (or help buy) my son a Star Wars Lego!
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
Oracle Database (commonly referred to as Oracle DBMS or simply as Oracle) is a multi-model database management system produced and marketed by Oracle Corporation. It is a database commonly used for running online transaction processing (OLTP), data warehousing (DW), and mixed (OLTP & DW) database workloads.
One of the most common scenarios we face in several organizations is to be able to integrate other systems and applications with Oracle, and for that, BizTalk Server uses the Microsoft BizTalk Adapter for Oracle Database or simply the WCF-ORACLE adapter.
The Microsoft BizTalk Adapter for Oracle Database exposes the Oracle database as a WCF service. Adapter clients can perform operations on the Oracle database by exchanging SOAP messages with the adapter. The adapter consumes the WCF message and makes appropriate ODP.NET calls to perform the requested operation. The adapter returns the response from the Oracle database back to the client in the form of SOAP messages.
The Oracle Database adapter surfaces metadata of Oracle database artifacts (tables, functions, procedures, etc.) that describes the structure of a SOAP message in the form of Web Service Description Language (WSDL).
It uses the Add Adapter Service Reference Visual Studio Plug-in, the Consume Adapter Service BizTalk Project Add-in, and the Add Adapter Metadata Wizard to enable adapter clients to retrieve metadata for operations and generate programming artifacts that can be used in your programming solution.
And it communicates with the Oracle database through the Oracle Data Provider for .NET (ODP.NET) and the Oracle client, which are part of the Oracle Data Access Components (ODAC) for Windows.
The following figure shows the end-to-end architecture for solutions that are developed by using the Oracle Database adapter:
This paper explains in detail – a step-by-step guideline – how to install and configure the WCF-OracleDB Adapter on a BizTalk Server 2020 standalone environment running Windows Server 2019.
What’s in the Whitepaper for you?
This whitepaper will give you a detailed understanding of the following:
There are many things to consider when planning this type of installation. This whitepaper will explain in detail – a step-by-step guideline – how to install and configure Microsoft BizTalk Server 2020 on a basic multi-computer environment using Windows Server 2019, i.e., installation of BizTalk Server with a remote SQL Server (1 SQL Server and 1 BizTalk Server). There will be 3 virtual servers:
1 Domain controller
1 Virtual Machine to host SQL Server
Windows Server 2019
SQL Server 2019SQL Server 2019 Enterprise Edition
1 Virtual Machine to host BizTalk Server.
Windows Server 2019
BizTalk Server 2020 Enterprise or Development Edition
In this scenario, I will perform a basic full installation of Microsoft BizTalk Server 2020, except for the SharePoint Adapter and additional components like Accelerators, ESB Toolkit or UDDI, emulating a production environment. The following components will be installed:
Enterprise Single Sign-On (SSO)
BizTalk Group
BizTalk Runtime
Business Rule Engine
BAM Tools and Alerts
BAM Portal (Although Microsoft has deprecated the BAM portal, it is still possible to install it.)
BizTalk EDI/AS2 Runtime
Microsoft BizTalk Adapters
This information will help you plan the installation and configuration of BizTalk Server 2020, applications, and components on which it depends focused on creating a UAT or Production environment (you can also follow this tutorial to help you create developer environments. However, if this is the case, you need to add some steps and additional components or software, in especially Visual Studio 2019).
Of course, it is assumed that all machines are already installed with the operating system and the latest critical Windows updates from Microsoft. Another presumption is that the domain controller is already installed and configured.
What’s in the Whitepaper for you?
This whitepaper will give you a detailed understanding of the following:
The need for a Domain Controller – Windows Groups and Service Accounts
Preparing Computers for Installation – Important considerations before setting up the
servers
Preparing and Install SQL Server 2019 machine
Prepare and install prerequisites on BizTalk Server 2020 machine
There was a lot of inconsistent and incorrect information about the BizTalk WCF-SAP Adapter installation process and how it works, especially in old versions of the adapter where there was a need to use the classic RFC library to connect to SAP.
Fortunately for us, this process is now simpler and more direct, and this is due specifically to two points:
The Classic RFC Library has been discontinued and is no longer supported (support ended on March 21, 2016). All customers should, if not already using, the “new” SAP .NET Connector (NCo)
Notice that the BizTalk Adapter Pack WCF-SAP adapter has been re-engineered to use SAP .NET Connector instead of the classic SAP RFC SDK. The SAP .NET Connector is available through the ConnectorType property within the WCF-SAP binding. This feature is available from BizTalk Server 2013 and above.
On BizTalk Server 2020, the Microsoft BizTalk Adapter Pack x86 and x64 are now installed with the default installation process. That means that the WCF-SAP adapter is already registered on the server and present on the BizTalk Server Administration Console.
However, that does not mean that everything is ready for you to be able to use this adapter. Unfortunately, you still need to install the SAP Connector for Microsoft .NET available for you to download through the SAP Service Marketplace.
Notice that, like any other adapter, the 64-bit version of the SAP Connector for Microsoft .NET is optional, but if you have a 64-bit BizTalk environment and you want to run it under a 64-bit Host Instance, then you need to also install both versions of the SAP Connector for Microsoft .NET.
BizTalk Server 2020: Step-by-Step WCF-SAP Adapter installation guide
By reading this whitepaper, decision-makers should have more information on the following areas:
Pre-requirements resources that are necessary and how to install them
Register the adapter in BizTalk Server Administration Console
At their core, mainframes are high-performance computers with large amounts of memory and processors that process billions of simple calculations and transactions in real-time. The mainframe is critical to commercial databases, transaction servers, and applications that require high resiliency, security, and agility
Microsoft Host Integration Server (HIS) technologies and tools enable enterprise organizations to integrate existing IBM host systems, programs, messages, and data with new Microsoft server applications.
HIS allows IT administrators to securely and efficiently connect new systems to existing systems using industry-standard High-Performance Routing (HPR) and Transmission Control Protocol (TCP) over Internet Protocol (IP). This reduces operating expenses and total cost of ownership while supporting existing and new computing workload.
HIS 2016 is available in one technology package licensed as additional software to the core editions of Microsoft BizTalk Server 2016.
This whitepaper will discuss a step-by-step guideline – how to install and configure Host Integration Server 2016 on a BizTalk Server standalone environment running Windows Server 2016.
What’s in store for you?
This whitepaper will give you a detailed understanding of the following:
Install Host Integration Server 2016
Configure Host Integration Server 2016
Install Host Integration Server 2016 Cumulative Updates
This week during a BizTalk Server 2016 installation – yes, I know it wasn’t my choice, otherwise, it was a BizTalk Server 2020 – I got for the very first time an issue regarding the Redistributable CAB file. Of course, during the installation process, you can choose “Automatically install the redistributable prerequisites from the web”, but in this case, the machine didn’t have access to the internet and had several security restrictions, so we end up selecting the option: “Automatically install the redistributable prerequisites from a CAB file”.
Notice that we have already downloaded the CAB file and I personally have used this file on several occasions.
So while we were trying to install the pre-requirements, the installation failed, and we got the following error on the error log file:
“The redistributable CAB file does not have a valid signature.“
Cause
Honestly, I don’t precisely know the causes for this issue. However, as I mentioned before, I used this strategy and this CAB file in other installations with success without ever facing this error. I think that was related to security constraints on the machine.
Solution
The solution is simple, this screen to select the CAB files only shows if the pre-requirements are missing – if you have all necessary components installed the installation wizard will skip the step to install the components. So what we can do is manually install the pre-requirements before we start the BizTalk Server installation. And to do that we need to:
Open the CAB file by double-click the CAB file
And install all the 3 files inside
owc11
SQLServer2016_AS_ADOMD
sqlxml
After that, you can run the BizTalk Server installation wizard. This problem will be already solved.
As the learning process’s path, all my interns or new team members, regardless of what technologies they will be using more, one of the first things they will do is create a BizTalk Server development environment from scratch. Yes, all my team members will have skills in all Integration technologies, BizTalk Server, Logic Apps, Service Bus, APIM, and the list goes on and on.
I don´t mind or care if you get it right the first time or not. Sometimes it is with failures that we learn best and more. And I find it curious that with these exercises, they will find problems that I would never imagine happening, so sometimes it is a learning process and continuous improvement for both or the team.
This is one of these cases. My recent team member, while he was trying to configure BizTalk Server using the BizTalk Server Configuration wizard, was getting a failure in all the components immediately:
As he did not understand why this problem was happening, he asked me for help. Once we analyze the log file generated by the configuration wizard, we saw this error:
[2020-11-10 22:08:14:0631 Error Configuration Framework]Feature: [Enterprise SSO] Failed to configure with error message [<Exception Message=”Failed to create the SQL database ‘SSODB’ on SQL Server ‘BTS2020LABAVMRG’ (with SSO Administrator account ‘SSO Administrators’).” Source=”SSO” HelpID=””><Exception Message=”(0xC0002A21) An error occurred while attempting to access the SSO database.
” Source=”SSO” HelpID=””><Exception Message=”An error occurred while attempting to access the SSO database. See the event log (on computer ‘BTS2020LABAVMRG’) for more details.
” Source=”SSO” HelpID=””/></Exception></Exception>]
Basically, this error message does not show any clue or cause as to why this problem is happening. Nevertheless, it will point to you a source to see more details about this issue: the event viewer.
Once we chech the event viewer we got a very clear error message:
Cannot create file ‘C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLDATASSODB.mdf’ because it already exists. Change the file path or the file name, and retry the operation.
Cause
The reason for this error to happen is clear. The BizTalk Server configuration wizard is trying to create the database files on the default SQL Server folders, but they already exist.
This error happened because my team member initially didn’t install all the required SQL Server components correctly. Once he was trying to add new features to an existing instance, he accidentally created another SQL Server instance.
After that, he uninstalled all the SQL Server instances and appropriately installed all the components, at least for now, let’s assume so. Nevertheless, while he was trying to do a Basic Configuration, he got that “strange” error.
Thru the SQL Server Management Console, we couldn’t see these databases, not only SSO as the error description, but also with all other BizTalk Server databases. But once we saw that folder, we realize that the uninstalls did not delete BD files created before from the hard drive.
Solution
The solution is very simple, delete all the Unnecessary files from that folder, like:
SSO
SSO_log
BizTalkDTADb
BizTalkDTADb_log
BizTalkMgmtDb
BizTalkMgmtDb_log
BizTalkMsgBoxDb
BizTalkMsgBoxDb_log
BizTalkRuleEngineDb
BizTalkRuleEngineDb_log
And run the BizTalk Servr Configuration again. At the end you will be able to configure BizTalk Server.
Hey… but there still errors over there. Indeed, there are, but I will leave that to another post that will be published very soon. However, this blog post’s original error was solved, and we were able to configure the required and critical BizTalk Server components: SSO, Group, and BizTalk Runtime.
Recently a friend of mine, Howard S. Edidin, a truly T-Rex, passed away. He was a former BizTalk Server MVP and he dedicated most of his professional life to BizTalk Server and HL7, work that you can find perpetuated in this book: HL7 for BizTalk. I personally couldn’t find a better way to honor him than this way: How to install BizTalk Accelerator for HL7 in a standalone machine.
Install BizTalk Accelerator for HL7
Starting with BizTalk Server 2013 R2 and newer versions, the BTAHL7 installation includes a 32-bit installation package (BizTalk AcceleratorsA4HL7 on the BizTalk Server ISO) and a 64-bit installation package (BizTalk AcceleratorsA4HL7(64) on the BizTalk Server ISO).
On a 32-bit computer, install only the 32-bit package. On a 64-bit computer, install the 32-bit or 64-bit package. The 64-bit package enables the adapter and pipelines to run in both 32-bit and 64-bit mode.
Note: The user installing and configuring BTAHL7 must be a member of the BizTalk Administrators group, and a member of the Administrators group on the SQL Server where the BTAHL7 data is stored.
Note: BizTalk Server should have the basic components installed and configured, including a 32-bit BizTalkServerApplication host with standard out of the box adapters, Enterprise Single Sign-on (SSO), the Group, and Runtime.
To install BizTalk Accelerator for HL7 we need to:
Run the BizTalk Accelerator for HL7 (A4HL7) setup.exe as Administrator.
On the Welcome to the Wizard for Microsoft BizTalk Accelerator for HL7 page, select Next.
On the License Agreement page, accept the terms, and then select Next.
On the Customer Information page, enter your user name and organization, and then select Next.
On the Setup Type page, select the Typical setup, and then select Next.
On the Logging Service Account page, leave the default group names and select Next.
The Logging Service Account page automatically gives the following groups the logging permissions:
BizTalk Server Administrators
BizTalk Application Users
BizTalk Server B2B Operators
BizTalk Server Operators
On the Summary of features being installed page, review the summary, and select Next.
On the Destination Folder page, select Next to use the default folder. Or, select Change to choose a different installation folder.
On the Logging Database Information page, leave the default configuration, and then select Next.
Database Server Name: The default value is the server name (name of the computer that the BizTalkMgmtDb database resides – you cannot change this value.).
HL7 Database name: Enter the name of the database that contains the data for your BTAHL7 solution, or accept the default setting, which is BTAHL7
You must use the ANSI-ASCII character set per database requirements; BTAHL7 does not support other character sets.
On the Ready to Install the Program page, select Install.
On the InstallShield Wizard Completed page, select Finish to complete.
Microsoft Logic Apps Team recently announced a public preview of the new Logic Apps runtime. This new release adds several new features to Azure Logic Apps, including:
Development improvements
Full Logic Apps designer support in VS Code;
Local project support;
New Logic Apps Designer;
Hosting Flexibility – ability to run Logic apps workflows where you need to, including on-premises and edge environments
Run local (i.e. on my dev box);
Deploy to Azure or run containerized in Docker or Kubernetes environments;
Performance improvements
Stateless mode for low latency – better performance for request/response scenarios;
To create Logic Apps stateful or stateless workflows, you need to use Visual Studio Code and the Azure Logic Apps (Preview) extension – at the moment, there is no other way.
Prerequisites
To be able to use all capabilities of the Azure Logic Apps (Preview) extension for Visual Studio Code, you need:
To have Visual Studio Code 1.31.0 (January 2019) or later and you need the following VS Code extensions:
Azure Account extension provides a single common Azure sign-in and subscription filtering experience for all other Azure extensions in the Visual Studio Code.
And finally, you need to install through the Microsoft Installer (MSI) the Azure Functions Core Tools, either version 3.0.2931 or 2.7.2936. These tools include a version of the same runtime that powers the Azure Functions runtime that runs in Visual Studio Code.
After installing this extension, you will find the two Azure Logic Apps (Preview) section of the Explore section of the VS Code, but the first thing you need to do is to Sign in to Azure…
Once again, to make sure that this extension is correctly installed, reload or restart the VS Code.
Set up VS Code Azure Logic Apps (preview) extension
For everything to work correctly, you need to make sure that the following two properties are correctly configured:
Azure Logic Apps V2: Panel Mode
Azure Logic Apps V2: Project Runtime
To do that, you need:
Open your VS Code, and on the File menu, go to Preferences, and then Settings.
On the User tab, go to >Extensions>Azure Logic Apps (Preview).
Check if the Enable panel mode option is selected on Azure Logic Apps V2: Panel Mode property. Otherwise, please enable it.
Under Azure Logic Apps V2: Project Runtime, set the version to ~3 or ~2, based on the Azure Functions Core Tools version that you installed earlier.
In our case: 3
If you want to use the Inline Code action for running JavaScript code, make sure that you use Project Runtime version 3 because the action doesn’t support version 2. Also, this action currently isn’t supported on Linux operating systems.
In the next blog post, we will explain how you can create your first Logic Apps (Preview) project. Stay tuned!
Azure Logic Apps Tools is available for Visual Studio 2019, 2017, and 2015 Community edition or greater and will allow you to design and deploy your logic apps from within Visual Studio. The Logic App designer integrates with the current Azure Resource Group project so you can seamlessly work with resource deployments that include Logic Apps.
Although this tool is officially supporting three versions of Visual Studio, I will advise you to install it only on Visual Studio 2019 and not in older versions. At some point, they will be officially removed or discontinued.
Prerequisites
Visual Studio 2019, 2017, or 2015 – Community edition or greater;
Visual Studio Tools for Azure: Azure SDK, tools, and projects for developing cloud apps and creating resources using .NET Core and .NET. Important also to create hybrid solutions without having the need for another development environment.
In the Visual Studio installer, install Visual Studio (or modify an existing installation). Make sure the Azure development and ASP.NET and web development workloads are selected.
and run the following command: Install-Module -Name Az
Note: of course, for this or any other approach describe above, you need an Azure subscription or sign up for a free Azure account.
Install Azure Logic Apps Tools for Visual Studio 2019
AftAfter you install the prerequisites, this is a straightforward process. To accomplish that, we need to:
Open your Visual Studio, on the entry screen select the option Continue without code->
Then on the menu, navigate to Extensions > Manage Extensions
Select Online and search for Logic Apps
The add-in will be listed in the search results section. Click Download to download and install the add-in. You need to close your Visual Studio in order to begin installing this extension.
On the VSIX Installer screen
Make sure that the correct version of Visual Studio is selected.
Click Install or Modify. This will download and install the add-in to your version of Visual Studio.
At the end select Close.
Creating a Visual Studio Logic App project
The Logic Apps designer integrates with the current Azure Resource Group project. That saying, you will not find any Logic App template from the list of templates. Instead, we need to create an Azure Resource Group project to get started and to do that, we need:
Open Visual Studio and on the Create a new project panel, select C# -> Azure -> Cloud, or select for Azure Resource Group;
Select Azure Resource Group from the template list;
On the Configure your new project panel, give a proper Project name, Location, Solution name, and leave the Framework as .Net Framework 4.7.2 and select Create.
Finally, on the Select Azure Template panel, from the Visual Studio Templates list, select the Logic App template and select OK.
This will create an empty Visual Studio Logic App solution. Now on the Visual Studio solution:
Right-click on the LogicApp.json file and select Open With Logic App Designer
This will open a Logic App Properties window, where you need to:
Define the credentials to authenticate on the Azure subscription;
Define the Subscription and Resource Group where you want to create these resources;
Define if you want the Location to be in the same Region or in an Integration Service Environment (ISE);
And then select OK.
This will embed the Logic App designer inside the Visual Studio.
Now you need to select a common trigger, a template, or use a blank Logic App to start creating your business process.