In the previous post, we analyze how you can monitor messages without reference counts (RefCounts), today it will be a similar topic, but this time we will be addressing messages with negative reference counts.
and the same question applies here:
Have you ever seen your Monitor BizTalk Server (BizTalkMgmtDb) job failing and complaining about the existence of messages with negative reference counts
Or do you ever want to know more about messages with negative RefCounts?
What are messages with negative RefCounts?
Do they show in the BizTalk Server Administration console? Are they impacting BizTalk Server performance?
Indeed messages with negative reference counts can appear from time to time in our environment, which you should definitely need to monitor. And to response to all previous questions:
What are messages with negative RefCounts?
Messages with negative RefCounts are messages in the MessageRefCountLogTotals with snRefCount less than zero. Once a refcount goes negative, the MessageBox cleanup jobs will not be able to clean up the corresponding messages.
Do they show in the BizTalk Server Administration console?
No, they don’t. The only way for you to know that exists messages with negative reference count is by:
Running the Monitor BizTalk Server (BizTalkMgmtDb) job
Executing the View Count of Messages With Negative RefCounts available on the BizTalk Health Monitor (maintenance)
Or executing a custom query against BizTalk Server databases.
Are they impacting BizTalk Server performance?
Yes, if they are too many.
As I mentioned before, the Monitor BizTalk Server SQL Agent job can detect these kinds of messages. In fact, it is able to identify any known issues in Management, MessageBox, or DTA databases. The job scans for the following issues:
Messages without any references
Messages without reference counts
Messages with negative reference counts
Messages with reference count less than 0
Message references without spool rows
Message references without instances
Instance state without instances
Instance subscriptions without corresponding instances
Orphaned DTA service instances
Orphaned DTA service instance exceptions
TDDS is not running on any host instance with the global tracking option enabled.
By default, the Monitor BizTalk Server job is configured and automated to run once in a week. Since the job is computationally intensive, it is recommended to schedule it during downtime/low traffic. The job fails if it encounters any issues; error string contains the number of issues found. Otherwise, it runs successfully.
Note: The Monitor BizTalk Server job only scans for issues. It does not fix the issues found.
However, are you ever curious to know how you can find these types of messages? Or did you already face the issue that you cannot open the BizTalk Health monitor because it is failing or you don’t have Internet connection to update them to the last version?
Well, now you have it here:
DECLARE @count bigint
SET @count = 0
SELECT @count = COUNT(*) FROM [dbo].[MessageRefCountLogTotals] WHERE [snRefCount] < 0
IF @count = 0
BEGIN
SELECT 'There are no negative RefCounts'
END
ELSE
BEGIN
SELECT COUNT(*) Count, [snRefCount] as 'RefCount Value'
FROM [dbo].[MessageRefCountLogTotals]
WHERE [snRefCount] < 0
GROUP BY [snRefCount]
ORDER BY [snRefCount]
END
Of course, needless to say, use it with care and thoughtfulness! It is preferred to call this query inside the BizTalk Health Monitor, and ideally, it is recommended to execute it during downtime/low traffic.
You need to run this script against BizTalkMsgBoxDB, and it will return the count of negative refcounts in the MessageRefCountLogTotals table. Equal to the script on the BizTalk Health Monitor.
Have you ever seen your Monitor BizTalk Server (BizTalkMgmtDb) job failing complaining about the existence of messages without reference counts or more know as messages without RefCounts? What are messages without RefCounts? Do they show in the BizTalk Server Administration console? Are they impacting BizTalk Server performance?
Indeed messages without reference counts can appear from time to time in our environment, which you should definitely need to monitor. And to response to all previous questions:
What are messages without RefCounts?
Messages without reference counts (RefCounts) are messages that don’t have correlating rows in the MessageRefCountLog tables and the MessageZeroSum table. Once they are in this state, the MessageBox cleanup job will not be able to clean up the corresponding messages.
Do they show in the BizTalk Server Administration console?
No, they don’t. The only way for you to know that exists messages without reference counts is by:
Running the Monitor BizTalk Server (BizTalkMgmtDb) job
Executing the View COunt of Messages Without RefCounts available on the BizTalk Health Monitor (maintenance)
Or executing a custom query against BizTalk Server databases.
Are they impacting BizTalk Server performance?
Yes, if they are too many.
As I mentioned before, the Monitor BizTalk Server SQL Agent job can detect these kinds of messages, in fact, it is able to identify any known issues in Management, MessageBox, or DTA databases. The job scans for the following issues:
Messages without any references
Messages without reference counts
Messages with reference count less than 0
Message references without spool rows
Message references without instances
Instance state without instances
Instance subscriptions without corresponding instances
Orphaned DTA service instances
Orphaned DTA service instance exceptions
TDDS is not running on any host instance with the global tracking option enabled.
By default, the Monitor BizTalk Server job is configured and automated to run once in a week. Since the job is computationally intensive, it is recommended to schedule it during downtime/low traffic. The job fails if it encounters any issues; error string contains the number of issues found. Otherwise, it runs successfully.
Note: The Monitor BizTalk Server job only scans for issues. It does not fix the issues found.
However, are you ever curious to know how you can find these types of messages? Or did you already face the issue that you cannot open the BizTalk Health monitor because it is failing or you don’t have Internet connection to update them to the last version?
Well, now you have it here:
DECLARE @nvcAppName nvarchar(256)
CREATE TABLE ##msgs_wout_refs (uidMessageID uniqueidentifier NOT NULL)
CREATE UNIQUE CLUSTERED INDEX [CIX_msg_wout_refs] ON [##msgs_wout_refs](uidMessageID)
INSERT INTO ##msgs_wout_refs (uidMessageID)
SELECT uidMessageID FROM Spool WHERE uidMessageID NOT IN(SELECT uidMessageID FROM MessageRefCountLogTotals UNION
SELECT uidMessageID FROM MessageRefCountLog1 UNION
SELECT uidMessageID FROM MessageRefCountLog2 UNION
SELECT uidMessageID FROM MessageZeroSum
)
DECLARE hostcursor CURSOR FOR
SELECT nvcApplicationName FROM Applications WITH (NOLOCK)
OPEN hostcursor
FETCH NEXT FROM hostcursor INTO @nvcAppName
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC ('DELETE FROM ##msgs_wout_refs FROM ##msgs_wout_refs m, [dbo].[' + @nvcAppName + '_MessageRefCountLog] r WHERE m.uidMessageID = r.uidMessageID')
FETCH NEXT FROM hostcursor INTO @nvcAppName
END
CLOSE hostcursor
DEALLOCATE hostcursor
DECLARE @count bigint
SET @count=0
SELECT @count = count(*) from ##msgs_wout_refs
SELECT 'Messages w/o Refcounts: ' + cast (@count as nvarchar(10))
DROP TABLE ##msgs_wout_refs
Of course, needless to say, use it with care and thoughtfulness! It is preferred to call this query inside the BizTalk Health Monitor, and ideally, it is recommended to execute it during downtime/low traffic.
You need to run this script against BizTalkMsgBoxDB, and it will return the count of messages that don’t have correlating rows in the MessageRefCountLog tables and the MessageZeroSum table and should align with the ‘Messages w/out RefCounts’ issue that MessageBoxViewer identifies. Equal to the script on the BizTalk Health Monitor.
Continuous Integration and Continuous Deployment (CI/CD) is a practice that has become an essential aspect of Azure development. Although it is possible to execute each of the CI/CD pipeline steps manually, the actual value can be achieved only through automation.
And to improve software delivery using CI/CD pipelines, either a DevOps or a Site Reliability Engineering (SRE) approach is highly recommended.
In this whitepaper, I will address and explain how you can implement CI/CD oriented to Azure Function Apps using Azure DevOps Pipelines.
I will explain in detail all the basic things you have to know, from the creation of an Azure Function on Visual Studio 2022 to everything you need to create and configure inside DevOps to archive the implementation of the CI/CD process using Azure Functions.
What’s in store for you?
This whitepaper will give you a detailed understanding of the following:
An introduction to:
What are Continuous Integration (CI) and Continuous Deployment (CD)?
What are CI/CD Pipelines?
What is Azure DevOps?
Create an organization or project collection in Azure DevOps
Create a project in Azure DevOps
Building your Azure Function from scratch
Publish your code from Visual Studio
A step-by-step approach to building Azure Pipelines
A step-by-step approach to building Azure Release Pipelines
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:
The role of an adapter is to enable communications between BizTalk Server and external systems and trading partners. Users configure adapters by creating send ports and receive locations that define the properties for given instances of the adapter. Most adapters support both send and receive operations, whereas other adapters support communication in only one direction.
The HTTP Adapter is one of the adapters that support two-way communications, but unlike other adapters, this adapter has two characteristics that define it:
The HTTP “Receive” Adapter that is responsible for delivering messages to BizTalk is, in fact, a DLL that runs inside Internet Information Services (IIS)
And for that reason, it must be configured in IIS – it is not there out-of-the-box.
In this whitepaper, we will describe the step-by-step process of installing and configuring the HTTP Adapter in order to receive messages.
Some of you may think that the HTTP adapter is deprecated, but that is not true. The only adapters that were deprecated were the old SAP adapter (removed) and the SOAP and SQL adapter (that still are present in the Administration Console). The HTTP adapter is a classic but is not deprecated and is still very used today.
The idea for this whitepaper was partly out of a real need and at a customer’s request. Because it is a strange adapter with a peculiar configuration unlike any other adapter in BizTalk Server, when I was giving a training course, the attendees struggled to understand and put it working correctly. By coincidence, a week later, I needed to put this adapter working at another client. As a result of that request and that client’s need, I end up creating this step-by-step guide on how to install and configure the HTTP adapter to receive messages through HTTP requests. I think this is a good whitepaper about a classic adapter in BizTalk Server.
There is a similar whitepaper that I wrote in the past: BizTalk Server 2016: Receiving messages through the HTTP Adapter installation whitepaper focus on BizTalk Server 2016 as the name describes. This new one is just a small update on the BizTalk Server versioning and is to be updated with the latest version of the BizTalk Server.
What’s in the Whitepaper for you?
This whitepaper will give you a detailed understanding of the following:
Prerequisites
Configure the HTTP Receive Adapter in IIS
Configure the HTTP Adapter Receive and Send Handlers
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
I’ve been a big fan of this amazing Visual Studio Addin for BizTalk Server since the first days that Nino Crudele decided to create this resource. I still remember the long hours during the night that we were discussing the features and testing this addin using skype. And I have continued to be a fan since BizTalk360 took over this resource.
The purpose of BizTalk NoS Ultimate is to help all BizTalk Developer, and why not, all BizTalk Administrators, in a lot of different situations, by improving the developer experience and reducing the development time in new or existing BizTalk projects, providing better documentation and help to troubleshoot some scenarios/issues you may encounter. But it is mainly a Visual Studio Add-in that enables BizTalk Server developers to be more efficient.
BizTalk development is not pretty easy and requires a lot of patience sometimes, and anyone who has worked with BizTalk long enough will acknowledge this statement. For instance:
It takes immense effort to find out the internal & external dependencies between different artifacts (schemas, maps, orchestrations, and so on).
Testing pipelines within the Visual Studio is not possible.
Some tasks occupy a massive time during development and eventually may delay the project. Unfortunately, no other tool in the market helps in making the BizTalk developer’s lives easier. That is why I love this tool: BizTalk NoS Ultimate.
BizTalk NoS: Your BizTalk Dev Buddy
And now, I also decided to create a whitepaper in a way to be a step-by-step guide to help you get started with the tool and explain all the features available like:
Quick search inside artifacts
Fast DLL register/unregister in GAC
Find critical, internal, or external dependencies
JackHammering, which will compare your VS artifact with the artifact deployed in the BizTalk environment
With this feature, you can also extract the artifact (Orchestration, map, Schema, and so on) from the BizTalk environment and put it in the VS solution
Test your pipeline in VS simply
And many more functionalities that will be useful in our day-by-day work and a time saver in a lot of situations.
BizTalk NoS Ultimate is available for the following BizTalk Server versions:
Windows Management Instrumentation (WMI) is the Microsoft implementation of Web-Based Enterprise Management (WBEM). Basically is a set of specifications from Microsoft for consolidating the management of devices and applications in a network from Windows computing systems. You can write WMI scripts or applications to automate administrative tasks on remote computers, but WMI also supplies management data to other parts of the operating system and products—for example, System Center Operations Manager (formerly Microsoft Operations Manager (MOM)), or Windows Remote Management (WinRM).
WMI is designed for programmers who use C/C++, the Microsoft Visual Basic application, or a scripting language that has an engine on Windows and handles Microsoft ActiveX objects. Nevertheless, many administrators and IT professionals access WMI through PowerShell. The Get-WMI cmdlet for PowerShell enables you to retrieve information for a local or remote WMI repository.
WMI comes pre-installed on Microsoft’s newest operating systems.
The purpose of WMI is to help administrators manage different Windows operational environments, including remote systems. One big advantage of WMI is that it reduces maintenance and the cost of managing enterprise network components.
BizTalk Server WMI classes
Windows Management Instrumentation (WMI) classes are used to programmatically access the administrative functions available in Microsoft BizTalk Server. Working together with PowerShell will be a winning match for IT Teams that need to manage BizTalk Server infrastructure and applications.
The Windows Management Instrumentation (WMI) classes in this table are used to manage the core objects associated with BizTalk Server, such as servers, queues, groups, and message handlers.
Class
Description
MSBTS_AdapterSetting
Registers new adapters with Microsoft® BizTalk® Server.
MSBTS_BTSObject
This type of member supports the BizTalk Server infrastructure and is not intended to be used directly from your code.
MSBTS_DeploymentService
Encapsulates BizTalk assemblies for deployment or undeployment and bindings export or import.
MSBTS_GroupSetting
Represents a logical grouping of BizTalk Servers.
MSBTS_Host
Represents a BizTalk Server Host.
MSBTS_HostInstance
Represents a single instance of a BizTalk Host.
MSBTS_HostInstanceSetting
Updates the IsDisabled property when a host is in the stopped state.
MSBTS_HostQueue
Represents an application.
MSBTS_HostSetting
Creates a BizTalk Server Host setting.
MSBTS_MessageInstance
Represents a message instance.
MSBTS_MessageInstanceSuspendedEvent
Represents a suspended event for a BizTalk Message Queuing (MSMQT) message instance.
MSBTS_MsgBoxSetting
Represents a single MessageBox setting in the BizTalk Server group.
MSBTS_Orchestration
Represents an instance of an orchestration that belongs to the installed module.
MSBTS_ReceiveHandler
Represents an individual receive handler defined by BizTalk Server.
MSBTS_ReceiveLocation
Represents an individual receive location defined by BizTalk Server.
MSBTS_ReceiveLocationOrchestration
Represents all possible combinations of receive locations and orchestrations.
MSBTS_ReceivePort
Represents an individual receive port defined by BizTalk Server.
MSBTS_SendHandler
Represents an individual send handler defined by BizTalk Server.
MSBTS_SendHandler2
Represents an extended individual send handler defined by BizTalk Server.
MSBTS_SendPort
Represents an individual send port defined by BizTalk Server.
MSBTS_SendPortGroup
Represents a group of send ports defined by the BizTalk Server.
MSBTS_SendPortGroup2SendPort
Represents an extended group of send ports defined by the BizTalk Server.
MSBTS_Server
Represents computers within a group that have BizTalk Servers installed.
MSBTS_ServerHost
Reflects mappings between BizTalk servers and BizTalk Hosts.
MSBTS_ServerSetting
Represents specific computers within the BizTalk group that have BizTalk Servers installed. Instances of this class are intended to be created and deleted internally through BizTalk Server only. Do not create or delete instances of this class explicitly through WMI.
MSBTS_Service
This type of member supports the BizTalk Server infrastructure and is not intended to be used directly from your code.
MSBTS_ServiceInstance
Provides an instance of service with a start and stop functionality.
MSBTS_ServiceInstanceSuspendedEvent
Represents a suspended event for a service instance.
MSBTS_Setting
This type of member supports the BizTalk Server infrastructure and is not intended to be used directly from your code.
MSBTS_TrackedMessageInstance
Represents a message instance.
MSBTS_TrackedMessageInstance2
Represents an updated message instance.
What’s in store for you?
This whitepaper will give you a complete overview with a detailed understanding of all BizTalk Server WMI classes and how to use them. For each BizTalk Server WMI classes we will provide a sample on how to use it.
Another day, another inquiry/survey! Honestly, I love this new interaction from the Logic App team. They are constantly looking to learn from the field: clients, partners, consultants, how are we using Azure Integration Services, how are we using BizTalk Server, what features we need, and so on to improve the overall experience in the existing Enterprise Integration features available on Azure Integration Services as well as knowing how to decide which and how the following features will be.
Logic App Pricing & container Survey
So once again, the Azure Logic Apps team wants to enter your brain and is looking to learn more about what you need for your Enterprise Integration landscape and do things right for you both in terms of features as well as a business model. This survey was released at INTEGRATE 2022 conference, but even if you didn’t attend the conference, your input is also important to them:
Which Logic Apps SKU are you using?
How important are certain features for your organization for integration workloads? Like:
Out-of-the-box Connectors
VNET Support
Disaster Recovery
and so on
How satisfied are you with certain capabilities in Logic Apps? Like:
Out-of-the-box Connectors
Enterprise Connectors like SAP or MQ
Integration Account
and so on
Rating ‘pricing’ principles by order of importance for your organization for iPaas products like Logic Apps
Based on your business strategy and preferences, how would you rate specific pricing models for your iPaas needs? Like:
Fixed cost
Consumption-based
and so on
If Logic Apps Premium connectors were offered through a model other than consumption-based, what would be your order of preference?
How satisfied are you with the Logic Apps pricing model for Logic Apps, ISE, connectors, and so on?
For applying policies such as network configuration, DLP (Data loss protection) policies, security policies, at what scope do you prefer to apply them?
For leveraging configurations such as EDI artifacts (Partners, Agreements), connection parameters, application parameters, CMK (customer managed keys), etc, at what scope do you prefer to apply them?
Logic Apps Standard provides you single tenancy, and customers bring their own compute. How do you prefer to use this compute across applications?
The Logic App team is super focused on improving their offering and creating a product that delights their customers from diverse industry segments and all sizes.
Once again, don’t complain in the future about the lack of features that will suit you better. The survey does not take that long to respond to.
I did my part!
Please fill out the following survey to help Azure Logic Apps: