BizTalk Filter Finder Tool

BizTalk Filter Finder Tool

Have you ever found yourself in a position where you
needed to understand how a particular BizTalk solution works? And to make
matters worse, the majority of the solution is implemented based on content-based
routing?

Routing Messages in BizTalk
Server

So first, what is this: Content-Based routing?

Don’t get me wrong the definition that I will provide because there are several Message Routing Patterns that you can implement in BizTalk Server. For example, you can implement in BizTalk Server a:

But the reality is that in BizTalk Server:

  • a message is always composed by the message itself and the metadata associated with it;
  • the architecture is based on Publish and Subscribe;

So in his essence, the subscriber will subscribe to
the messages based on Content-Based Routing.

And you may say: yes, but I can route a message without examining is content.

And you are right. The problem is the default
definition of this pattern:

  • As the names
    describe, Content-Based Router examines the message content and routes the
    message onto a different channel based on data contained in the message. For
    example, routing a message based on specif values of specif fields, or based on
    some criteria like existing fields.

However, as I told you before, a message in BizTalk
Server is always composed by the message itself and the metadata
associated with it. And for that reason, you may found other variations or
other names like:

  • Context-Based
    Routing
    : Context-Based Routing is similar to the previous
    one, but instead of analyzing the content of the message, it will analyze the
    metadata of the message. This information, in BizTalk Server, is normally
    created on the receive port by the adapter and pipelines.

    • Remember that I
      can promote messages to the context of the message and route them;
  • Message-Based
    Routing
    : that is normally defined when:

    • a message is
      routed by BizTalk only based on the message type;

      • But this is
        metadata associated in the message, and you need to inspect the message to get
        is type;
    • or in pass-thru
      scenarios when you are just redirecting the message to other systems, i.e.,
      BizTalk is a broker and don’t “touch” or modify the message;

      • But these
        filters are also associated with metadata of the message;

The problem of managing these
solutions

If you have found yourself managing solutions, that
majority is implemented with content-based routing, which is usually associated
with not using orchestrations. You know that is not easy to understand the solution:

  • What ports are subscribing
    to the messages?

    • In which
      conditions?
    • In which application?

But that’s not all. Even worse if you have
orchestrations using filters based on the content/context of the message in the
activation.

This kind of analyze is hard because BizTalk Server
Administration Console doesn’t provide an easy way out-of-the-box for you to
see these subscriptions for example in a central place or in a visual diagram
like:

BizTalk subscriptions diagram prof-of-concept

This picture is actually from BizTalk360 Graphical Message Flow, but it serves well here as prof-of-concept.

The default solution

So the default solution that you have out-of-the-box
with the product is to query the subscription from the BizTalk Server
Administration Console by:

  • In the console
    tree, expand BizTalk Server Administration, and then click the BizTalk group.
  • In the details
    pane, click the New Query tab.
  • In the Query
    Expression group, in the Value column, select Subscriptions from the drop-down
    list box.
BizTalk Administration Console Subscription query

But then you need to go one by one and see what the
filters are.

You can minimize this by filtering more the query
using the following filters:

  • Maximum Matches:
    The number of matches to display.
  • Service Instance
    ID: You can filter subscriptions by service instance ID.
  • Service Name: You
    can filter subscriptions by service name.
  • Subscription
    Type: You can filter subscriptions by Activation Subscription or Instance
    Subscription.

But that will not solve all your problems also. In conclusion, this is a hard and time-consuming task.

And sometimes what I need is just to have a quick
overview of all these filters.

BizTalk Filter Finder Tool

“BizTalk Filter Finder Tool” is a simple tool that
aims to simplify the process for better understand and maintain solutions based
on content-based routing. By allowing you to have a quick overview of all the
artifacts, send ports or orchestrations that have filters associated.

BizTalk Filter Finder Tool

This tool will extend default BizTalk Server
capabilities transforming this tedious and sometimes complicate analyze a
little simple, easy and fast.

It way not be an amazing tool; it may not be beautiful
but for me is a timesaver tool.

Credits also to my team member at DevScope, Pedro Almeida that collaborated with me in the development of this tool.

Download

You can download BizTalk Filter Finder Tool from:
BizTalk Filter Finder ToolBizTalk Filter Finder Tool
GitHub

The post BizTalk Filter Finder Tool appeared first on SANDRO PEREIRA BIZTALK BLOG.

BizTalk Administration Console Error: The target principal name is incorrect. Cannot generate SSPI context

BizTalk Administration Console Error: The target principal name is incorrect. Cannot generate SSPI context

Without a doubt, today I encountered one of the most bizarre situations in the BizTalk Server Administration Console: The target principal name is incorrect.  Cannot generate SSPI context. (Microsoft SQL Server, Error: 0). And believe me, I been here along time.

Everything
was working fine, and I was normally working on the environment until I try to
refresh the BizTalk Server Administration Console and I got the following
error:

TITLE: BizTalk Server Administration

——————————

Failed to load Group [SQLSERVERNAMEINSTANCE:BizTalkMgmtDb] data providers. (Microsoft.BizTalk.Administration.SnapIn)

For help, click: http://go.microsoft.com/fwlink/?LinkId=47400&ProdName=Microsoft+BizTalk+Server+2016&ProdVer=3.12.774.0&EvtSrc=Microsoft.BizTalk.Administration.SnapIn.Properties.Errors&EvtID=FailedLoadingGroupProviders&EvtChain=Microsoft.BizTalk.Administration.SnapIn.Properties.Errors+%2cFailedLoadingGroupProviders%3bMicrosoft.BizTalk.Administration.SnapIn.Properties.Errors+%2cFailedLoadingGroupProviders%3bMSSQLServer+%2c0

——————————

ADDITIONAL INFORMATION:

Failed to load Group [SQLSERVERNAMEINSTANCE:BizTalkMgmtDb] data providers. (Microsoft.BizTalk.Administration.SnapIn)

For help, click: http://go.microsoft.com/fwlink/?LinkId=47400&ProdName=Microsoft+BizTalk+Server+2016&ProdVer=3.12.774.0&EvtSrc=Microsoft.BizTalk.Administration.SnapIn.Properties.Errors&EvtID=FailedLoadingGroupProviders&EvtChain=Microsoft.BizTalk.Administration.SnapIn.Properties.Errors+%2cFailedLoadingGroupProviders%3bMSSQLServer+%2c0

——————————

Failed to load Group [SQLSERVERNAMEINSTANCE:BizTalkMgmtDb] data providers. (Microsoft.BizTalk.Administration.SnapIn)

For help, click: http://go.microsoft.com/fwlink/?LinkId=47400&ProdName=Microsoft+BizTalk+Server+2016&ProdVer=3.12.774.0&EvtSrc=Microsoft.BizTalk.Administration.SnapIn.Properties.Errors&EvtID=FailedLoadingGroupProviders&EvtChain=MSSQLServer+%2c0

——————————

The target principal name is incorrect.  Cannot generate SSPI context. (Microsoft SQL Server, Error: 0)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476

——————————

BUTTONS:

OK

——————————

But let me give some context because problems
will not happen without any reason. I was normally working with the BizTalk
Server Administration Console until I got a notification that my password would
expire in 5 days and at the same time suggesting for me to change right away
and… I did that for once in my life, I follow the recommendation and do not
wait any longer to change the password.

Once I successfully update my password and remote
access once again to my environment I started getting this issue in the admin
console.

Cause

In a way, unfortunately, after I successfully update my password and remote access once again to my environment, I didn’t go directly to the BizTalk Server administration console. I was doing some configuration in IIS regarding SSL and only after a few minutes I went to the admin console and got this bizarre issue.

I did the basic tasks you normally do in these
situations, nothing related to this particular error but in general:

  • Restart
    the host instances and Enterprise Single sign-on;
  • Check
    if the WMI service is running or Restart WMI service;
  • Close
    the BizTalk Administration Console and open again;
  • Open
    the SQL Server Management Studio and try to connect to the BizTalk SQL Instance

The curious is that all host instances and ESSO
service was working fine, and they were able to restart successfully, and I was
able to connect to the BizTalk SQL Server Instance from the BizTalk Server
machine using SSMS, but none of them resolved the issue with the BizTalk admin
console.

And this error may happen for other different
reasons, but you have to understand my scenario:

  • in one minute, everything was working fine, and now it was failing.
  • And the only difference was I had to change my password.

I do not know to explain better the cause of
the issue in my case, but, in simple words, it was related to some bizarre system
credential cache.

Solution

I was able to fix this issue by simply:

  • logging
    out of the BizTalk Server machine where I was executing the BizTalk Server
    Administration Console
  • and
    logging back in again.

Once I log in back in the BizTalk Server
machine I was able to work normally with the BizTalk Administration Console once
again.

The post BizTalk Administration Console Error: The target principal name is incorrect. Cannot generate SSPI context appeared first on SANDRO PEREIRA BIZTALK BLOG.

November 25, 2019 Weekly Update on Microsoft Integration Platform & Azure iPaaS

November 25, 2019 Weekly Update on Microsoft Integration Platform & Azure iPaaS

Do you feel difficult to keep up to date on all the frequent updates and announcements in the Microsoft Integration platform and Azure iPaaS?

Integration weekly update can be your solution. It’s a weekly update on the topics related to Integration – enterprise integration, robust & scalable messaging capabilities and Citizen Integration capabilities empowered by Microsoft platform to deliver value to the business.

If you want to receive these updates weekly, then don’t forget to Subscribe!

 

Microsoft Announcements and Updates

 

Community Blog Posts

 

Video

Podcasts

 

How to get started with iPaaS design & development in Azure?

  • Robust Cloud Integration with Azure
  • Microsoft Azure for Developers: What to Use When
  • Serverless Computing: The Big Picture
  • Azure Logic Apps: Getting Started
  • Azure Logic Apps: Fundamentals
  • Microsoft Azure Developer: Creating Enterprise Logic Apps
  • Microsoft Azure API Management Essentials
  • Azure Functions Fundamentals
  • Cloud Design Patterns for Azure: Availability and Resilience
  • Architecting for High Availability in Microsoft Azure

 

Feedback

Hope this would be helpful. Please feel free to reach out to me with your feedback and questions.

BizTalk Documenter Tool: How to customize the cover page

BizTalk Documenter Tool: How to customize the cover page

The BizTalk Documenter has been available for many years and different
BizTalk versions, starting with 2004 to the latest one: BizTalk Server 2016. And once again, without a doubt
for me, BizTalk Documenter is my favorite documentation tool, and I do think that if each
product had a tool like for the generation of technical documentation, it would
be simpler to do, as the existing documentation significantly improved.

However, the default cover page is quite simple
and looks old fashion:

biztalk documenter 2016: default cover style

CHM files are the HTML Help 1.0 specification witch
is quite pretty old. Basically, It is a complete HTML based Help system that
uses a Help Viewer that internally uses Internet Explorer to render the HTML
Help content that was introduced somewhere in 1997 when Internet Explorer 4 was
also introduced.

Nevertheless, CHM continues to be a popular
help format because it is very easy to produce content for it, using plain HTML,
which is quite interactive and because it works with many Windows application
platforms out of the box.

And I normally like to personalize my documentation
according to the client like:

  • Using
    the Logotype and there name on the cover;
  • Using
    their color pattern;
  • Sometimes
    using some cover picture;

So, the question here is: Can we customize
the cover page produce by BizTalk Documenter?

And the answer is obviously: yes, of course,
you can.

And I been doing that in my client for a long
time, however, and this also serves me as a personal reminder, because each time
I’m going to a new client I’m always:

  • Forgetting how to do it;
    • What king of resources do I need to have? And what are there names? if they are mandatory;
  • Taking a long time to format the HTML according to my requirements;

And don’t get me wrong there are several blog
posts guiding you on how to do it. But most of them do not provide you the
resources for you to download and:

  • use
    it as a template;

    • Where
      you can easily modify the pictures, colors and so on;
  • Or
    use it as an inspiration, tutorial or sample to your custom cover;

How to customize the BizTalk
Documenter cover page

What is really necessary to transform
your cover page from the default one presented in the picture above to something
like this:

biztalk documenter 2016: custom cover style

That contains:

  • 1-
    Logotype of BizTalk Server version;
  • 2-
    Header title and subtitle;

    • That
      can be your platform code name like “<client name> ESB”;
  • 3-
    Logotype of the client organization;
  • 4-
    Name of the documentation;
  • 5-
    Other pictures like for example project logotype;
  • 6-
    Disclaimer;
  • 7-
    background color;
  • 8-
    Copyright;

Or something like this with a background
picture:

biztalk documenter 2016: custom cover style

And in fact, this is a quite simple task. Fortunately for us, BizTalk Documenter allows us to specify a Resource Folder on the Output Options screen:

BizTalk Documenter 2016 output options: resource folder

For the sake
of simplicity, let’s call it Resources (but it can be other as you see
in the picture Resource V1). In the root of this folder, you should:

  • Add
    a custom HTM page that you mandatory need to called it: titlePage.htm

    • If
      you give it another name it will not work. The file will be ignored and the
      default cover will be generated;
  • And
    you should, once again for the sake of simplicity, add all the necessary
    picture files on the folder or sub-folder;

This is the content/aspect of my titlePage.htm file for the first sample provide it here:

<HTML>
	<HEAD>
		<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
		<TITLE>BizTalk Configuration</TITLE>
		<LINK href="CommenTReport.css" type="text/css" rel="stylesheet"/>
	</HEAD>
	<BODY style="background-color:#7FB4C4; PADDING-BOTTOM:20px; PADDING-LEFT:20px; PADDING-RIGHT:20px; PADDING-TOP:20px;">
		<TABLE cellspacing="0" width="100%" height="100%">
			<TR bgcolor="#0072C6">
				<TD style="PADDING-BOTTOM:20px; PADDING-LEFT:20px; PADDING-RIGHT:20px; PADDING-TOP:20px;">
					<IMG SRC="bts.png"/>
				</TD>
				<TD width="100%">
					<p style="COLOR:#FFFFFF;TEXT-ALIGN:left;FONT-FAMILY:Calibri,Verdana, Arial, sans-serif;FONT-SIZE:40;"><b>BizTalk Server 2016</b><br>Solution Technical Documentation</p>
				</TD>
				<TD align="right" style="PADDING-BOTTOM:20px; PADDING-LEFT:20px; PADDING-RIGHT:20px; PADDING-TOP:20px;">
					<IMG SRC="logotype.png"/>
				</TD>
			</TR>
			<TR>
				<TD colspan="3" height="150">
					<BR/>
					<BR/>
					<BR/>
				</TD>
			</TR>
			<TR style="background-color: #0072C6;">
				<TD colspan="2" style="PADDING-LEFT:20px; PADDING-RIGHT:20px;">
					<BR/>
					<BR/>
					<BR/>
					<SPAN style="COLOR:#FFFFFF;TEXT-ALIGN:right;FONT-FAMILY:Verdana, Arial, sans-serif;FONT-SIZE:18;FONT-WEIGHT:bold;PADDING-LEFT:5px;PADDING-RIGHT:5px;">Name: #APPLICATION#</SPAN>
					<BR/>
					<BR/>
					<SPAN style="COLOR:#FFFFFF;TEXT-ALIGN:right;FONT-FAMILY:Verdana, Arial, sans-serif;FONT-SIZE:18;FONT-WEIGHT:bold;PADDING-LEFT:5px;PADDING-RIGHT:5px;">Installation Server: #SERVER#</SPAN>
					<BR/>
					<SPAN style="COLOR:#FFFFFF;TEXT-ALIGN:right;FONT-FAMILY:Verdana, Arial, sans-serif;FONT-SIZE:18;FONT-WEIGHT:bold;PADDING-LEFT:5px;PADDING-RIGHT:5px;">Installation Database: #DATABASE#</SPAN>
					<BR/>
					<BR/>
					<BR/>
					<BR/>
					<SPAN style="COLOR:#FFFFFF;TEXT-ALIGN:right;FONT-FAMILY:Verdana, Arial, sans-serif;FONT-SIZE:11;">All information in this document is confidential and for Sandro Pereira exclusive access. Access to this document by any other entity is not permitted without prior permission.</SPAN>
					<BR/>
					<SPAN style="COLOR:#FFFFFF;TEXT-ALIGN:right;FONT-FAMILY:Verdana, Arial, sans-serif;FONT-SIZE:11;">Any entity with access to this document is bound by its confidentiality.</SPAN>
					<BR/>
					<BR/>
					<BR/>
				</TD>
				<TD style="PADDING-BOTTOM:20px; PADDING-LEFT:20px; PADDING-RIGHT:20px; PADDING-TOP:20px;">
					<IMG SRC="documentation.png"/>
				</TD>
			</TR>
			<TR>
				<TD colspan="3" height="100%">
					<BR/>
					<BR/>
					<BR/>
				</TD>
			</TR>
			<TR>
				<TD colspan="3" align="right">
					<P style="COLOR:#FFFFFF;TEXT-ALIGN:right;FONT-FAMILY:Verdana, Arial, sans-serif;FONT-SIZE:10;">Generated on: #GENDATE#<BR/>Copyright © Sandro Pereira 2019</P>
				</TD>
			</TR>
		</TABLE>
	</BODY>
</HTML>

Resources

THIS IS PROVIDED “AS IS”, WITHOUT WARRANTY
OF ANY KIND.

You can download BizTalk Documenter tool: Cover Customization Resources from:

BizTalk Documenter tool: Cover Customization Resources
Microsoft | TechNet Gallery

The post BizTalk Documenter Tool: How to customize the cover page appeared first on SANDRO PEREIRA BIZTALK BLOG.

Different Approaches in Service Instances Automation

Different Approaches in Service Instances Automation

In this blog, we are going to look at the BizTalk360 functionality, how it went one step further and helped to automate the process to handle service instances. Before that, we will have a look at the service instances and their importance.

In BizTalk Server there are two main types of processing components:

  • Orchestration Service Instances: If you are developing an orchestration and deploying it in your environment. At run-time, for every activation message you receive for that orchestration, a new instance of that orchestration will get created.
  • Messaging Service Instances: The service instances that have been created by your receive and send ports at run time. A receive port/send port is a combination of various things like an adapter, receive/send pipeline and maps.

group-hub-view-orchestration

Instance states and stages

Service instance states and message instance states are displayed on the Group Hub page. They convey information about successfully processed messages and instances, failures, and suspensions during a specified time interval. The service instances get instantiated, like your objects for classes, and during the lifetime, they go through various states.  Some of the common states include:

  • Ready to Run
  • Scheduled
  • Dehydrated
  • Suspended, Resumable
  • Suspended, Non-resumable
  • Active

When messages flow into the BizTalk server, the messages get persisted in BizTalk Server’s MessageBox database.

Each of the service instance state signifies certain value. Some of them are system-specific states (ex: Active, Dehydrated, Ready to Run, etc), which will change automatically as the message gets processed.

suspended-items

When any message is suspended in processing, then it is logged into the suspended instance. In BizTalk, when a message is suspended, then it falls into one of these two categories.

  • Resumable: if the external resource (example web service, folder location in case of file adapter) is not available then the message will go for suspend resumable mode. Resumable means the service can be recovered.
  • Non-Resumable: Typically hold metadata and cannot be resumed. They will either disappear when the corresponding resumable instance is resumed or in other cases, they might need manual termination. You can save the Messages referenced by the instance, and then you can terminate the instance.

Sometimes we can directly resume messages from the admin console, after which they are processed successfully and sometimes they are not processed successfully. Once the service instance moves into a state that demands user intervention, the BizTalk server administrator needs to manually log in to the BizTalk Server Administration Console and fix the problem with respect to the service instance.

Why should you monitor service instances

For a healthy BizTalk environment, it’s always important to keep an eye on the number of service instances in the environment. Having many suspended service instances will occupy most of your message box database and it will affect the overall performance of your BizTalk environment.

Message-Box

In BizTalk360 we are offering two ways to act against the instances.

  1. Action against suspended instances manually
  2. Action against suspended instances automatically

You can act against suspended instances manually through the MessageBox (Queries), offering administrators the ability to query the MessageBbox database for such messages and take action.

MessageBox Data Monitoring

In MessageBox Data Monitoring, the user can configure the queries to monitor service instances and messages. The monitoring service will send the notification to the users whenever the service instances/Message count violates the configured threshold condition.

MessageBox Data Schedule can be configured in BizTalk360 -> Monitoring -> Data Monitoring -> MessageBox Data.

It can be scheduled at the different frequencies (Daily, Weekly, and Monthly) based on the volume and priority to take the action on service instances/messages.

The operational user (either it will be a super user or a custom user has the permission to take action within BizTalk360) must closely watch the suspended service instances to act on. It is a tedious process to look after all the time. The MessageBox data monitoring feature can take automatic action on service instances when the set actions are configured in our schedule.

The monitoring service will Resume, Suspend or Terminate the service instances based on either error or warning condition without any manual intervention.

Service Instances Action Based on Retry Count

Most important to be noticed is that BizTalk360 will resume the suspended instance irrespective of the “Number of Retries” count set in the port. Retry count is nothing but the number of times for the send port to resend/resume a message on message failure.

Retry-Count

If the Instance is suspended in a port, then BizTalk360 will check how many times the instance is retried by BizTalk Server. If the number of retries done by BizTalk is less than or equal to the count set in BizTalk360, then it will resume the instance until it exceeds the count set.

If the number of retries done by BizTalk is greater than to the count set in BizTalk360 then it will stop resuming the instance on further monitoring schedule.

Set-Actions

Check the retry count between the BizTalk artifact and in the BizTalk360 count in the UI

If the BizTalk360 configured value is 3 and the BizTalk server’s current Retry Count is 4, in that case, the BizTalk retry count is greater than BizTalk360, so it will not take any action against the instances. So, compare the instance count and set the retry count value high in BizTalk360.

Action on Long running service instance which is older than X days

You can also achieve the same scenario (task action like MessageBox Data monitoring) with the help of a prebuild custom notification channel: PowerShell. Let’s take a customer scenario here for how they utilized the PowerShell notification channel.

In the MessageBox data monitoring, you can act against the service instances based on,

  • Only Query result count (no date/time filter)
  • Query result with date/time range

Only Query result count (no date/time filter)

Selecting this option will execute the query without applying any date time filter. i.e. all the data will be considered for SQL query execution.

Based on Query result with date/time range

Selecting this option will apply the Creation Time filter for SQL query execution. (The values configured for setting trigger time, Set Monitoring Times ->At What Time, will be used for Creation Time filter).

For example: When Monitoring set frequency is set for 1 hour, then for every SQL query execution the query will consider only 1-hour of data.

Message-Data-Box

In the customer scenario, they wanted to terminate the dehydrated and active service instances which are older than 15 days from the creation of the message. In data monitoring, this option is not available. To solve that, the customer terminated the dehydrated and active service with a PowerShell notification channel (custom script); the steps are below.

  • Create a PowerShell script to call the BizTalk360 APIs to check for the dehydrated service instance and terminate them
  • Attach this PowerShell script to a notification channel in BizTalk360
  • Map this channel to an alarm so that the PowerShell script will get executed to take action when the alarm is triggered.

Here is the PowerShell script to terminate the dehydrated and active service instances which are older than 15days in GitHub.

Note: The environment id details can be obtained from b360_admin_BizTalkEnvironment table in the BizTalk360 database. Modify the details according to your environment configuration.

Conclusion

An automatic action feature of BizTalk360 can take corrective actions in the event of any threshold violations. With just a one-time setting we have our BizTalk360 to make sure all your routine tasks are addressed without manual intervention.

The post Different Approaches in Service Instances Automation appeared first on BizTalk360.

November 11, 2019 Weekly Update on Microsoft Integration Platform & Azure iPaaS

November 11, 2019 Weekly Update on Microsoft Integration Platform & Azure iPaaS

Do you feel difficult to keep up to date on all the frequent updates and announcements in the Microsoft Integration platform and Azure iPaaS?

Integration weekly update can be your solution. It’s a weekly update on the topics related to Integration – enterprise integration, robust & scalable messaging capabilities and Citizen Integration capabilities empowered by Microsoft platform to deliver value to the business.

If you want to receive these updates weekly, then don’t forget to Subscribe!

 

Microsoft Announcements and Updates

 

Community Blog Posts

 

Video

 

Podcasts

 

How to get started with iPaaS design & development in Azure?

  • Robust Cloud Integration with Azure
  • Microsoft Azure for Developers: What to Use When
  • Serverless Computing: The Big Picture
  • Azure Logic Apps: Getting Started
  • Azure Logic Apps: Fundamentals
  • Microsoft Azure Developer: Creating Enterprise Logic Apps
  • Microsoft Azure API Management Essentials
  • Azure Functions Fundamentals
  • Cloud Design Patterns for Azure: Availability and Resilience
  • Architecting for High Availability in Microsoft Azure

Feedback

Hope this would be helpful. Please feel free to reach out to me with your feedback and questions.

BizTalk Documenter: Unable to locate the help compiler executable while trying to generate the documentation

BizTalk Documenter: Unable to locate the help compiler executable while trying to generate the documentation

Without a doubt, BizTalk Documenter is my favorite documentation tool, and I do think that if each product had a tool like for the generation of technical documentation, it would be simpler to do, as the existing documentation significantly improved. I do miss this kind of tool for Azure Integration projects.

However,
each time I install this tool I always got the exact same problem:

Unable to locate the help compiler executable

BizTalk Documenter 2016 Unable to locate the help compiler executable

which I know well, and I know why since it was very well explained by Mitch Vanhelden in this blog post.

So, why this blog post?

Well, for two main reasons:

  • I’m
    always searching to find the link to the component I need to install;

    • Basically,
      this is just an easy personal reminder;
  • And
    second and most important, the link to the resource that Mitch point is
    obsolete and not working anymore;

Cause

Has Mitch explained in his blog post, the
reason for this is quite clear, the application can’t locate the help compiler
executable, either because:

  • it
    isn’t installed à most common situation
  • or
    it is also possible if you’re working on a 64-bit machine.

Solution

Make sure you have installed the HTML Help
Workshop compiler because this is the most common cause for this issue and if
not:

  • First, download and install this compiler that can be found here: HTML Help Workshop and Documentation;
  • And then install it, by executing the htmlhelp.exe file
  • On the HTML Help Workshop 1.3 screen, click Yes
install HTML Help Workshop compiler
  • On
    the HTML Help Workshop 1.3 Setup screen, click Yes
install HTML Help Workshop compiler
  • Specify
    the installation directory and then click OK
install HTML Help Workshop compiler
  • And
    finally, when the installation finish, click OK

After these steps, you should be able to
generate the BizTalk Server documentation form the tool. Otherwise, make sure
that the path to this help compiler is configured correctly in BizTalk
Documenter by:

  • Access
    to the installation path of BizTalk Documenter

    • By
      default: C:Program Files (x86)Microsoft ServicesBizTalk Documenter
  • Open
    Microsoft.Services.Tools.BiztalkDocumenter.exe.config file and validate
    and, if necessary, change the path for the HelpCompilerLocation key
    that needs to contain the correct path to the HTML Help Workshop compiler
    component.

The post BizTalk Documenter: Unable to locate the help compiler executable while trying to generate the documentation appeared first on SANDRO PEREIRA BIZTALK BLOG.

BizTalk WCF-SQL Error: Microsoft.ServiceModel.Channels.Common.MetadataException: Object [dbo].[ColumnName] of type StoredProcedure does not exist.

BizTalk WCF-SQL Error: Microsoft.ServiceModel.Channels.Common.MetadataException: Object [dbo].[ColumnName] of type StoredProcedure does not exist.

In the past, I wrote a blog post about a similar type of error: BizTalk WCF-SQL Error: Microsoft.ServiceModel.Channels.Common.MetadataException: Object [dbo].[StoredProcedureName] of type StoredProcedure does not exist. The difference for this new post is that instead of being the Stored Procedure name that is complaining it is now complaining about the Column name:

A message sent to adapter “WCF-Custom” on send port ” STAGING_SQL_WCF_SEND” with URI “mssql://SQL-SERVER-NAME//Database?” is suspended.
Error details: Microsoft.ServiceModel.Channels.Common.MetadataException: Object [dbo].[IdRecord] of type StoredProcedure does not exist

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)
MessageId: {0193EE6F-8DFF-4861-87FB-FC1C82ECF3AB}
InstanceID: {59E3F39A-BF24-4583-BEA9-78CED5B621F7}

Microsoft.ServiceModel.Channels.Common.MetadataException: Object [dbo].[ColumnName] of type StoredProcedure does not exist.

However, despite this error and despite the
fact that we were talking about the same server and same project of the previous
issue, one thing I was sure about: they were not related at all.

Cause

At a first glimpse, it seems that the stored
procedure does not include the column name: IdRecord, or that this field
was not passed to the stored procedure at all. So, this was my first point to validate,
however, quickly I realized that:

  • The
    stored procedure had that field;
  • And
    I was correctly passing that field to the stored procedure in the message;

Just to precaution, I double-check if that was
not related to security permission, and it was not also. So I went back to my some
conspiracy theories list that I described on my previous post:

  • You
    should regenerate schemas: no, never
  • or
    that may be a mismatch in the namespaces: I believe it could be a
    possibility, but no, since I was using the same scheme and it was working fine
  • that
    the “?” character that you normally find in the URI is causing this problem: also
    impossible in my case
    .
  • And
    my favorite is that you should give “sysadmin” rights to the service account
    that is running the host instance: never.

But the last one put me thinking: the
operation is not properly set
.

Because the last change I did was redesign the
solution that was performing composite operations with the SQL Adapter, in my
case I was sending multiple-rows to update in the same message.

And now I was doing a single operation.

And by doing that the WCF-SQL Adapter was throwing
this strange behavior.

Solution

The solution was quite simple. We just have to
change the Action CompositeOperation with the correct operation action mapping
as show bellow as an example:

&lt;BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
  &lt;Operation Name="SQLStatusUpdateOp" Action="TypedProcedure/dbo/sp_BTS_updateTransaction" /&gt;
&lt;/BtsActionMapping&gt;

After doing this change, everything started
working perfectly again.

The post BizTalk WCF-SQL Error: Microsoft.ServiceModel.Channels.Common.MetadataException: Object [dbo].[ColumnName] of type StoredProcedure does not exist. appeared first on SANDRO PEREIRA BIZTALK BLOG.

Querying BizTalk Subscriptions in BizTalk360

Querying BizTalk Subscriptions in BizTalk360

Introduction

The ability to query BizTalk Subscriptions is useful when you want to review how Orchestrations and Send Ports subscribe to messages etc. For example, when troubleshooting routing failures, you can review the existing subscriptions to see if any of them are improperly configured, thereby causing the routing failure. It is handy for the BizTalk users to view the publisher and subscriber when they troubleshoot or determine the use case.

Until now, BizTalk360 had all other queries (Message Box, Tracking Data and EDI), except Subscriptions. That feature is pending with respect to match the functionalities in BizTalk Admin Console. Based on customer feedback, we have implemented this feature in the upcoming release (9.0.3) of BizTalk360.

customer-feedback

Type of Subscriptions

Subscriptions are created by service classes in BizTalk Server, which is listed in the “adm_ServiceClass” table in the BizTalk Server Management database. These services include the caching service; in-process and isolated messaging, hosted by the Endpoint Manager; and orchestrations/XLANG hosted by the XLANG subservice. Each of these service classes can create subscriptions and receive published messages.

Subscribers use subscription in BizTalk to define the properties or criteria of the messages in which they are interested. A Subscription in BizTalk is like a filter or criteria or a condition that dictates BizTalk which message needs to be routed to which component or entity in BizTalk. There can be more than one subscriber to the same message. If that happens, each subscriber will get its own copy of the message.

In BizTalk Server, there are two subscription types are available. Both types are described below

Activation Subscription

An activation subscription specifies that when a message that fulfills the subscription, it should activate or create a new instance of the subscriber when such a message is received.

 Example: Activation subscriptions include send ports with filters or send ports that are bound to orchestrations, and orchestration’s receive shapes that have their Activate property set to true.

Instance Subscription

An instance subscription indicates that messages that fulfill the subscription should be routed to an already-running instance of the subscriber.

Example: Instance subscriptions are orchestrations instances with correlated receives and request/response-style receive ports waiting for a response from an external system.

Subscriptions queries in BizTalk360

The Subscription query feature can be found under Operations-> Data Access-> Message Box Queries. As like the other MessageBox queries (Suspended Service Instances), subscriptions are fetched from the BizTalk Message Box database(s) with filters and Max Matches similar as in the BizTalk Admin Console.

Clicking the Execute Query button will fetch the subscription list with both activation and instance subscriptions. BizTalk360 has the capability to export the results in excel format. Users can manage the filters with saved query functionality.  

saved-queries

In the Subscription list view, there are three buttons are available to display the following

1. Subscription Details & Predicates

When navigating to the subscription details page, it will present detailed information about subscriptions and predicates. Subscription General tab will display Subscription Priority, Ordered Delivery, Creation Time, Subscription Type, etc.

subscription-details

Predicates: The Message Agent calls the bts_FindSubscriptions stored procedure held in the BizTalk Message Box to establish which subscriptions if any, match this message. This stored procedure queries the Subscription and Predicate SQL tables and joins them with the properties inserted for the batch of messages to identify potential subscribers.

Different Predicate SQL tables are used to match all the possible subscription expression combinations.

  • EqualsPredicates
  • ExistsPredicates
  • GreaterThanPredicates
  • GreaterThanOrEqualPredicates
  • GreaterThanPredicates
  • LessThanOrEqualPredicates
  • LessThanPredicates
  • NotEqualPredicates

subscription-expression

2. Service Properties

Clicking the Service properties button will provide the service instance details, error information and Message details, Message content and Message context properties.

service-properties

When subscribing, it is not possible to subscribe to any content of the actual messages entering BizTalk, but only to what information is stored in the Context of the message. The message metadata is called Context Properties; on receiving the message, the Adapter, Pipeline, and Map will possibly add information to the Context.

Context Properties can either be Promoted or Not promoted. Properties that are promoted can be used for subscribing to the message. However, Not promoted properties cannot be used for subscribing to the message.

message-properties

3. Messages

When you click on the Message icon, it will populate the Messages query with Service Instance ID and Host Name related to the subscriptions.

Subscription processing is complex, so in short, you just need to remember that once a message arrives at the Message Agent, subscribers are evaluated, the message is inserted, and references are then added into the host instance queue, ready for processing by the subscriber hosted by the host instance.

query-expression

User Access Policy

When users are having the permissions for Message Box Queries, they are also able to access the Subscriptions. To view the Messages and Content, the user should have permission to view the Message Content/Context in the user access policy.

data-access

When the user does not have the privilege to view Message Content/Context, they will be restricted to view Message Content/Context from the Subscriptions List.

query-box

Note: Subscriptions are only implemented in the BizTalk360 Operations section. Subscriptions are not implemented in Data Monitoring as it is not applicable for the feature.

 Conclusion

We are constantly improving on the features based on feedback in the customer forum. BizTalk360 will continue to provide more useful features in every release. Why not give BizTalk360 a try! It takes about 10 minutes to install on your BizTalk environments and you can witness and check the security and productivity of your own BizTalk environments. 

The post Querying BizTalk Subscriptions in BizTalk360 appeared first on BizTalk360.