by Lex Hegt | May 29, 2019 | BizTalk Community Blogs via Syndication
From time to time, in conversations we have with our prospects and customers, the question pops up if additional licenses needed for BizTalk components on separate servers. You can install BizTalk360 on a BizTalk server, but also on a separate server on which no BizTalk processing takes place. Normally, we recommend to install BizTalk360 on a separate server. This has advantages like not using resources which BizTalk can use for processing and (equally important) to prevent not able to access BizTalk360 when the BizTalk server goes down.
For BizTalk360 to work, it needs the so-called BizTalk Server Administration Tools. You need to install these tools on the server which will run BizTalk360, as they contain the APIs which BizTalk360 uses to access BizTalk Server.
These APIs, being used by third party products like BizTalk360, is not the only reason why an organisation might want to install these components. These APIs are part of a set of components and tools, you might want to install on a separate server. In the BizTalk Server installer, this set can be found under the category Administration Tools and Monitoring and Additional software, as you can seen in below screenshot.
The set of Additional BizTalk Server software
The Administration Tools and Monitoring and Additional software contain the following components and tools:
- Administration and Monitoring Tools
- Development Tools
- Software Development Kit(s)
- HTTP Receive Adapter
- SOAP Receive Adapter
- Windows SharePoint Services Adapter Web Service
- Windows Communication Foundation Adapters
- Business Activity Monitoring (“BAM”) Event APIs and Interceptors & Administration Tools
- BAM Alert Provider for SQL Notification Services
- BAM Client
- BizTalk Server Related Schemas and Templates
- Business Activity Services
- Master Secret Server/Enterprise Single Sign-On
- MQHelper.dll
- ADOMD.NET
- MSXML
- SQLXML
- Business Rules Component
- MQSeries Agent
Why would you need these components/tools
So, given the list with available components/tools, an organisation could have several reasons to install them, depending on the purpose of the component. You could think of BizTalk users who might want to achieve, for example, the following:
- use the BizTalk APIs as this is a requirement for third party software
- use the BizTalk Server APIs for self-developed software or scripts
- provide the Business Rules Composer to the desktop computer of (functional) users
- make the Enterprise Single Sign-On (ESSO) tools highly available by installing them on separate servers
- use the Developer tools on a build server for BizTalk
- use the BAM tools on a separate server
Hence, it makes sense to be sure whether (or not) you require additional BizTalk Server licenses for the server(s) on which such components will be installed.
The hunt for information
We have been trying to find that information somewhere on the internet. However, as Microsoft is the supplier of the product, we searched for a formal statement from their side. Therefore, we checked web sites like
the BizTalk Server product web site and the
BizTalk Server Core Documentation. However, we were not able to find that information.
As we want to give our customers clarity about this matter, we decided to reach out to the Product Group directly. After a couple of emails, the Product Group informed us where to find the information we were looking for. See below, the email we received from the Product Group.
No additional licenses required for Administration Tools etc.
The email from the Product Group mentions that:
These two highlighted items, “Administration Tools” and “Business Rules Component” are the components to which you refer. The EULA indicates these can be installed on other physical or virtual systems without incurring an additional license cost.
For people who are working with BizTalk Server for some time, it is no surprise that no additional license costs are involved in installing these tools on separate machines. Main reason for this, is that by only installing these tools, the machines are not a part of the BizTalk Group and no additional BizTalk processing is taking place (like receiving/sending messages or processing orchestrations).
However, it has always been a bit frustrating that we could not back this by a statement from Microsoft. So, we are glad that we can now refer to an official resource which gives clarity about this matter.
How to find the End User License Agreement(EULA)
Now we know where to find that information, let’s have a look on how to find the EULA, including the section where the clarity is given.
1. Download and mount the en_host_integration_server_2016_enterprise_x64_cd_9503501.iso (ISO file name varies depending on where you obtain the software—e.g., Volume License site or Visual Studio or Evaluation Center)

2. Start a Windows Explorer and navigate to the BizTalk Server folder

3. Locate and load the EULA.RTF in Microsoft Word
4. See section “2. Use Rights” titled “e. Running Instances of Additional Software”
There you have it, written in black on white! No license costs will be incurred for installing the Administration Tools etc. on a separate server!
Conclusion
We, as a company, are glad to be able to give clarity to our customers, prospects and partners about the matter that no additional license costs will be incurred in case of installing the Administration Tools etc. at separate servers. However, also organisations who are using BizTalk Server, resellers of Microsoft products and consultancy companies who advice their customers about BizTalk Server, are now able to safely say that no additional license costs are involved in case of installing these components and tools as they are backed by the EULA from Microsoft.
From this place, we also like to thank the BizTalk Server Product Group to help in giving the clarity.
The post Do you need additional BizTalk Server Licenses for installing BizTalk components on separate servers appeared first on BizTalk360.
by Sandro Pereira | Oct 30, 2018 | BizTalk Community Blogs via Syndication
I recently published a new BizTalk Server Tips and Tricks article: “Automatically Generate Schemas from a Well-Formed XML instance” on my blog post series about “BizTalk Server Tips and Tricks” for developers, administrators or business users and I couldn’t resist on asking what about DTD?
Definition of DTD schemas
For who doesn’t know what DTD is, a DTD is a Document Type Definition that defines the structure and the legal elements and attributes of an XML document… So basically, it is the equivalent of what BizTalk Server uses to define how an XML document can be structured: XSD Schema. Nevertheless, there are many differences between DTD (Document Type Definition) and XSD (XML Schema Definition). In short, DTD provides less control on XML structure whereas XSD (XML schema) provides more control.
Some of you may wonder, who cares? No one uses DTD anymore, so why bother?
Yes, indeed DTD is not used very regularly nowadays, and it is very probable that you will never use it… unless… for example, you are working with RosettaNet or in the future, you will have the need to work with RosettaNet. Why? Because most of the RosettaNet Standards – PIP messages – are defined in the format of DTD format!
As I mentioned in my previous blog, there are several ways we can create an XML Schemas in BizTalk Server:
- Manually from the scratch
- From XDR Schema instance
- From a DTD instance
- From a well-formed XML instance
- Import them from a WCF Service or Web Service
- Or automatically generated them from LOB systems (from the adapters)
Generating schemas based on a DTD instance
Today we will be talking about automatically generating XML Schemas from a DTD instance.
To accomplish this we need to:
- In Solution Explorer, right-click a BizTalk project, point to Add, and then click Add Generated Items…

- In the Add Generated Items – <BizTalk ProjectName> dialog box, in the Templates section, click Generate Schemas, and then click Add

- In the Generate Schemas dialog box, in the Document type drop-down list, select DTD

- One of the problems, especially in brand new installations, is that sometimes this feature was not installed, and you will see DTD (Not Loaded) in the drop-down list. To install and use this feature you need to:
- Navigate to the “SDKUtilitiesSchema Generator” folder present in the BizTalk Server installation folder. Normally this will be “C:Program Files (x86)Microsoft BizTalk Server <version>SDKUtilitiesSchema Generator”
- And execute the InstallDTD.vbs script by double-clicking. This will install the “Microsoft.BizTalk.DTDToXSDGenerator.dll” DLL on the correct place. This basically means that it will copy this DLL to the “Developer ToolsSchema Editor Extensions” folder present in the BizTalk Server installation folder
- Or manually “Microsoft.BizTalk.DTDToXSDGenerator.dll” DLL to the “Developer ToolsSchema Editor Extensions” folder present in the BizTalk Server installation folder. Normally this will be “C:Program Files (x86)Microsoft BizTalk Server <version>Developer ToolsSchema Editor Extensions
- Close the Generate Schemas dialog box and do the previous steps again. Now you will be able to see that you can use the option DTD in the drop-down list

- In the Generate Schemas dialog box, click Browse, locate the file you want to import, click Open and then click OK
- A new schema, or sometimes at least two schemas are generated from the specified file, using the same name as that file with the .xsd extension, and opened in BizTalk Editor
Quick, simple and practical.
Stay tuned for new Tips and Tricks!
Author: Sandro Pereira
Sandro Pereira is an Azure MVP and works as an Integration 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. View all posts by Sandro Pereira
by Sandro Pereira | Oct 23, 2018 | BizTalk Community Blogs via Syndication
Welcome back to my blog post series “BizTalk Server Tips and Tricks” for developers, administrators or business users.
There are several ways we can create an XML Schema in BizTalk Server:
- Manually from scratch
- From XDR Schema instance
- From a DTD instance
- From a well-formed XML instance
- Import them from a WCF Service or Web Service
- Automatically generated them from LOB systems (from the adapters)
Today, we will be talking about automatically generating XML Schemas from a well-formed XML instance. To accomplish this we need to perform the following steps:
- In Solution Explorer, right-click a BizTalk project, point to Add, and then click Add Generated Items…

- In the Add Generated Items – <BizTalk ProjectName> dialog box, in the Templates section, click Generate Schemas, and then click Add

- In the Generate Schemas dialog box, in the Document type drop-down list, select Well-Formed XML

- One of the problems, especially in brand new installations, is that sometimes this feature was not installed, and you will see Well-Formed XML (Not Loaded) in the drop-down list. To install and use this feature you need to:
- Start a Windows Explorer and navigate to the “SDKUtilitiesSchema Generator” folder present in the BizTalk Server installation folder;
- Normally it will be “C:Program Files (x86)Microsoft BizTalk Server <version>SDKUtilitiesSchema Generator”
- Execute the InstallWFX.vbs script by double-clicking. This will install the “Microsoft.BizTalk.WFXToXSDGenerator.dll” DLL on the correct place
- That basically means, it will copy this DLL to the “Developer ToolsSchema Editor Extensions” folder present in the BizTalk Server installation folder
- Or manually copy “Microsoft.BizTalk.WFXToXSDGenerator.dll” DLL to the “Developer ToolsSchema Editor Extensions” folder, present in the BizTalk Server installation folder
- Normally, it will be “C:Program Files (x86)Microsoft BizTalk Server <version>Developer ToolsSchema Editor Extensions
- Close the Generate Schemas dialog box and do the previous steps again, and now you will be able to see that you already can use the option Well-Formed XML in the drop-down list.

- In the Generate Schemas dialog box, click Browse, locate the file you want to import, click Open and then click OK

- A new schema, or sometimes at least two schemas are generated from the specified file, using the same name as that file with the .xsd extension, and opened in BizTalk Editor
TIP: Before you generate the schemas, rename the XML instance file that you will be using to the proper name you want to give to the Schemas, this will save you time because the Generator Wizard will:
- Give the same name of the specified file with the .xsd extension
- Or will add a sequence to the same name of the specified file with the .xsd extension
In the end, as a best practice, you should rectify or rename the schemas generated to something with context and that will be easy to identify:
If you want it to be perfect, then for each schema, you should change not only the name of the file, but also the Type Name property of each schema.

Initially, this value was set as “myfilename_0”.
The problem of renaming the filename and/or the Type Name property is that once you try to compile it will give you errors because some schemas will be referring files that no longer exist (were renamed):
To solve this, we need to:
- Open the Schema and select the Schema node at the top of the schema tree view
- In the Properties window, in the Advanced category, in the value portion of the Imports property, click the ellipsis (…) button
- In the Imports dialog box, in the Import Schema list, delete the XSD Import line, import the correct one and then click OK

- Alternatively, open the schema file in Notepad (Notepad ++ or other text editors) and rectify the path and filename
Quick, simple and practical!
Stay tuned for new tips and tricks!
Author: Sandro Pereira
Sandro Pereira is an Azure MVP and works as an Integration 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. View all posts by Sandro Pereira
by Sandro Pereira | Oct 2, 2018 | BizTalk Community Blogs via Syndication
Welcome back to my blog post series “BizTalk Server Tips and Tricks” for developers, administrators or business users. Not all tips and tricks are sophisticated or quite robust and ingenious, some of them are quite simple. Some of them are in front of us all the time without us noticing, this is one of these cases.
Today there is a lot more information than in the past, but normally when we start BizTalk Server tutorials about schemas, they tend to say that if you want to specify how many times a record or an element will occur, you should configure the below values:
- The Max Occurs property to specify the maximum occurrences of this node (record or element). The default value is ‘1’ and cannot be less than the Min Occurs property
- The Min Occurs property to specify the minimum occurrences of this node. The default value is ‘1’ and cannot be greater than the Max Occurs property
What this type of tutorial also tells you, is that if you want to specify that a specific node can appear an unlimited number of times, at the Max Occurs property, you should type the value: “unbounded”

So, we tend to manually write the word “unbounded”, each time we want to set a node to appear an unlimited number of times… I think, I can write this word better than my personal name, so many are the times I’ve written it over the years. But to be honest, this can be a little time consuming. Especially if we type it wrongly, newbies need to remember this word – there are other words with the same meaning as unlimited – and sometimes is just a little boring.
Well, guess what, if you are at this point of the post wondering what is the alternative, in the future you should spend a little time reading the description of property inside Visual Studio; the alternative has been there in front of you all the time:
- Maximum Occurrences of this node. Its value should always be greater than or equal to minOccurs of this node. Use ‘unbounded’ or ‘*’ (asterisk) to indicate unlimited occurrences. The default value is ‘1’.

Which means that if we type * (asterisk), this will be automatically translated to “unbounded”.

Quick, simple and practical
Stay tuned for new tips and tricks!
Author: Sandro Pereira
Sandro Pereira is an Azure MVP and works as an Integration 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. View all posts by Sandro Pereira
by Sandro Pereira | Jul 26, 2018 | BizTalk Community Blogs via Syndication
With all these new security features present on the latest Microsoft operating systems, don’t get me wrong they are good, sometimes our life as BizTalk Developers seems like it’s reversing and becoming a nightmare, especially if you are a consultant working with multiple different clients, environments, and projects.
Most of the times I start developing a new project at a new client, the first time I try to deploy a solution I get an “Error 87 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))…” error message.

There are several possible causes for you to get such Access Denied errors when deploying BizTalk solutions directly from Visual Studio. Most common is that you don’t have the right BizTalk privileges to deploy artifacts, or in other words, you are not a local Administrator.
But most of the time is simpler than that and indeed is related with these additional securities setting present in recent Windows Server versions. For you to be able to successfully deploy a BizTalk Server solution directly from Visual Studio, you must run Visual Studio as an Administrator, or with elevated permissions, because BizTalk assemblies need to be deployed into the GAC. What normally happens, is that if you have User Account Control (UAC) activated, or sometimes even deactivated, there are some additional securities setting present in recent Windows Server versions that, by default, doesn’t run Visual Studio with elevated permissions.
The quick solution is for you to run Visual Studio as an Administrator by simply run below step:
- Right-click under Visual Studio and choose “Run as administrator” option.

The problem with this approach is that you need to remember yourself to do it every time you want to run Visual Studio, otherwise the next time you try to deploy the solution it will fail again with the same error.
How to properly address this problem?
Actually, this problem can be simply addressed by:
- Access the devenv.exe file on the file system, which is by default installed in: “C:Program Files (x86)Microsoft Visual Studio 14.0Common7IDE”
- Right-click devenv.exe and select “Troubleshoot compatibility”

- On the “Select troubleshooting option” page, select “Troubleshoot compatibility” option

- On the “What problems do you notice?” page, select the “The program requires additional permissions” option and then click “Next”

- On the “Test compatibility settings for the program” page, click “Test the program…”, wait for the program to launch and then click “Next”
- Select “Yes, save these settings for this program”

You will never face this problem again… at least at that client.
Enjoy and Stay tuned for new BizTalk Server Tips and Tricks!
Author: Sandro Pereira
Sandro Pereira is an Azure MVP and works as an Integration 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. View all posts by Sandro Pereira
by Sandro Pereira | Jul 12, 2018 | BizTalk Community Blogs via Syndication
It’s fair to say that we all know the default Database Lookup functoid. It allows you to connect and extract information from a database. This functoid requires four input parameters in the following order:
- A lookup value – value for which to search in the specified database, table, and column (next parameters);
- A database connection string – The full connection string for the database with a provider, machine name, database and authentication (an ActiveX Data Objects .NET (ADO.NET) connection string);
- A table name – name of the table in the database in which to search
- A column name for the lookup value – name of the column in the table in which to search – the first parameter
The functoid is quite simple to use, however, the main problem that developers face when they use it, refers to the second parameter: the connection string.
How to know the correct value of the connection string to be set in the Database Lookup Functoid
Is hard to remember the correct syntax/value to specify in the connection string to be used inside the Database Lookup Functoid.
For you to be sure that you don’t make any mistakes, which could lead to future waste of time by diagnosing and rectifying the connection string, the simple and easy way to guarantee that we are using the correct connection string value – but also for not having to remember this by head – is to:
- Create a simple Universal Data Link (.udl) File
- Set the OLE DB provider connection parameters
- And finally, test the connection to check if everything is correct
To accomplish this, we need to:
- Create a text file and name it “ODBCConnectionTest.udl” on your file system
- Preferably on the BizTalk Server machine
- The name of the file is not important, the important part is the extension, it must be “.udl”
- Double-click the Universal Data Link file that you just created
- On the Provider Tab, select the appropriate OLE DB provider for the type of data you want to access and then Next
- In my case, it is “Microsoft OLE DB Provider for SQL Server”

- In the Connection tab, specify:
- The SQL Server instance that hosts the database
- The authentication method: Use Windows NT integrated security or Use a specific user name and password
- And finally, the database name to which you want to connect

- After specifying these properties, you then should click on “Test Connection…” button to attempt a connection to the specified data source. If no connection is made, review the settings. Otherwise, click “Ok”
Now that we have our Universal Data Link file created and properly configured, you can open the UDL file in Notepad and you will have access to the connection string value that you should use inside the Database Lookup Functoid. You just need to copy and paste it inside the second parameter of the Functoid.
Note: you should paste the connection string statically inside the Database Lookup Functoid but that is a different topic that we will address in another BizTalk Server Tips and Tricks.
I hope this small trick will the useful, enjoy and stay tuned for new BizTalk Server Tips and Tricks!
Author: Sandro Pereira
Sandro Pereira is an Azure MVP and works as an Integration 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. View all posts by Sandro Pereira
by Sandro Pereira | Sep 12, 2017 | BizTalk Community Blogs via Syndication
Continuing the season topic: “BizTalk Server Tips and Tricks” I have to say this is one of my favorites, I simply love this tip…
If you followed the old BizTalk Innovation Day’s events, that lead to the current Integrate event in London, you may remember my dear friend Tord Glad Nordahl complaining every year in his sessions about Developers writing unnecessary information Application Log. Well, I partially agree with him, I agree in the first part: you shouldn’t write custom application errors, warnings of information in the Application Log!

You need to realize that Application Event Log holds almost all the important information related to different aspects of BizTalk – SQL, IIS, BizTalk infrastructure and runtime problems – it is one of the main places that admins use to monitor “applications” installed on their server. This is the information that is extremely important for BizTalk Administrator in order to monitor the well-being of the platform and to diagnose problems. For that reason you don’t want to immerse the Application log with irrelevant and unnecessary information at the point to be almost impossible to find real problems – instead you, or in this case, the admins, should keep it clean.
Instead of using the Application Log, you can use a custom log for logging your custom application (integration) errors, warnings or information., So, in this way, I really don’t care if you are using the Event Viewer to log additional information’s about your integration processes.
What the Administrator does normally in these circumstances?
They tend to ask (argue) to the developer team to change their code, that already is deployed in several (or all) the environments, for not to write in the Application log this unnecessary information…
… they tend to receive the following response, “this information is critical for us to have visibility and track the processes (feeling surprised but I have heard enough times this statement), debugging and troubleshooting and so on”.
It’s basically a stupid and unnecessary battle where I can say that no one will be defeated or victorious.
What should the Administrator do?
Changing people’s behavior is hard, but I’m not saying that you should not try. You should, but getting others to change can be impossible, or a big challenge, it will definitely take time… especially developers who will try to find a thousand excuses for explaining why such information is important.
My advice for them take back the control of your environment by easily creating or using PowerShell (let the developer by happy by writing in the Event Viewer)
With this simple script, you can easily move an Event Source to a different Windows Event Log:
foreach ($LogSource in $LogSources) {
Remove-EventLog -Source $LogSource
}
$logFileExists = Get-EventLog -list | Where-Object {$_.logdisplayname -eq $LogName}
if (! $logFileExists) {
$LogSources | %{
New-EventLog -LogName $LogName -Source $_
}
# Compose Key:
$LogPath = 'HKLM:SYSTEMCurrentControlSetserviceseventlog'+$LogName;
if(Test-Path $LogPath)
{
$acl = Get-Acl $LogPath
$GpOrUsers | %{
$ace = New-Object System.Security.AccessControl.RegistryAccessRule $_,'WriteKey, ReadKey','allow'
$acl.AddAccessRule($ace)
#Set-Acl $LogPath $acl
}
}else{Write-Error "Cannot acesss log $LogName"}
}
else {
$LogSources | %{
New-EventLog -LogName $LogName -Source $_
}
}

This way, you as an admin can take back the control of your environment and fix the developers madness.
The full script can be found and download here: BizTalk DevOps: Moving Event Source To a Different/Custom Windows Event Log
Stay tuned for new tips and tricks!
Author: Sandro Pereira
Sandro Pereira is an Azure MVP and works as an Integration 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. View all posts by Sandro Pereira
by Sandro Pereira | Sep 3, 2017 | BizTalk Community Blogs via Syndication
Welcome back to a new post about BizTalk Server Tips and Tricks! And this time I would like to talk about a very important topic for BizTalk Administrators: BizTalk MarkLog tables.
All the BizTalk databases that are backed up by the ‘Backup BizTalk Server’ job, which means all the default BizTalk databases (SSODB, BizTalkRuleEngineDb, BizTalkMsgBoxDb, BizTalkMgmtDb, BizTalkDTADb, BAMPrimaryImport, BAMArchive and BAMAlertsApplication) with the exception of the BAM Star Schema database (BAMStarSchema), have a table called “MarkLog”.
The only thing that these tables store, is a timestamp in a string format (Log_<yyyy>_<MM>_<dd>_<HH>_<mm>_<ss>_<fff>) that tells you each time the ‘Backup BizTalk Server’ job performs a backup of the transaction log of that specific database.
Note: This task is performed by the 3rd step (MarkAndBackUpLog) of the ‘Backup BizTalk Server’ job
So, each time this step runs, by default each 15 minutes, a string is stored in that table. Unfortunately, BizTalk has no out-of-the-box possibilities to clean up these tables. The normal procedure is to run the old Terminator tool to clean it up, which nowadays is integrated with the BizTalk Health Monitor.
Both of them (they are actually the same tool) has two major problems:
- Using these tools, it means that we need to stop our BizTalk Server environment, i.e., downtime for a few minutes of our entire integration platform.
- If we look at the description of the task, these tools execute: “PURGE Marklog table”, it says that this operation calls a SQL script that cleans up everything in Marklog table – and maybe this is not the best practices in terms of maintaining your environment.
This information is important and useful for the BizTalk Administration team, for example, to keep an eye on the backup/log shipping history records to see whether the backup is working correctly and data/logs are restored correctly in the standby environment.
As a best practice: you should respect the parameter “@DaysToKeep” present in the 4th step (Clear Backup History) of the ‘Backup BizTalk Server’ job, i.e., clean everything on that table older than the days specified in the “@DaysToKeep” parameter.
How to properly maintain BizTalk MarkLog tables?
To address and solve this problem, I end up creating a custom stored procedure in the BizTalk Management database (BizTalkMgmtDb) that I called “sp_DeleteBackupHistoryAndMarkLogsHistory”. This stored procedure is basically a copy of the existing “sp_DeleteBackupHistory” stored procedure with extended functionalities:
- It iterates all the databases that are backed up by BizTalk and delete all data older than the days define in @DaysToKeep parameter
Script sample:
/* Create a cursor */
DECLARE BackupDB_Cursor insensitive cursor for
SELECT ServerName, DatabaseName
FROM admv_BackupDatabases
ORDER BY ServerName
open BackupDB_Cursor
fetch next from BackupDB_Cursor into @BackupServer, @BackupDB
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Get the proper server name
EXEC @ret = sp_GetRemoteServerName @ServerName = @BackupServer, @DatabaseName = @BackupDB, @RemoteServerName = @RealServerName OUTPUT
IF @@ERROR <> 0 OR @ret IS NULL OR @ret <> 0 OR @RealServerName IS NULL OR len(@RealServerName) <= 0
BEGIN
SET @errorDesc = replace( @localized_string_sp_DeleteBackupHistoryAndMarkLogsHistory_Failed_sp_GetRemoteServerNameFailed, N'%s', @BackupServer )
RAISERROR( @errorDesc, 16, -1 )
GOTO FAILED
END
/* Create the delete statement */
select @tsql =
'DELETE FROM [' + @RealServerName + '].[' + @BackupDB + '].[dbo].[MarkLog]
WHERE DATEDIFF(day, REPLACE(SUBSTRING([MarkName],5,10),''_'',''''), GETDATE()) > ' + cast(@DaysToKeep as nvarchar(5) )
/* Execute the delete statement */
EXEC (@tsql)
SELECT @error = @@ERROR
IF @error <> 0 or @ret IS NULL or @ret <> 0
BEGIN
SELECT @errorDesc = replace( @localized_string_sp_DeleteBackupHistoryAndMarkLogsHistory_Failed_Deleting_Mark, '%s', @BackupServer + N'.' + @BackupDB )
GOTO FAILED
END
/* Get the next DB. */
fetch next from BackupDB_Cursor into @BackupServer, @BackupDB
END
close BackupDB_Cursor
deallocate BackupDB_Cursor
Steps required to install/configure:
- Download the SQL script from BizTalk Server: Cleaning MarkLog Tables According to Some of the Best Practices and create the sp_DeleteBackupHistoryAndMarkLogsHistory stored procedure against to BizTalk Management database (BizTalkMgmtDb)
- Change and configure the 4th step of the ‘Backup BizTalk Server’ job – “Clear Backup History” to call this new stored procedure: sp_DeleteBackupHistoryAndMarkLogsHistory
Note: Do not change or delete the “sp_DeleteBackupHistory”!
Credits: Tord Glad Nordahl, Rui Romano, Pedro Sousa, Mikael Sand and me
Stay tuned for new BizTalk Server Tips and Tricks!
Author: Sandro Pereira
Sandro Pereira is an Azure MVP and works as an Integration 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. View all posts by Sandro Pereira
by Saravana Kumar | Aug 3, 2017 | BizTalk Community Blogs via Syndication
A typical highly available BizTalk Server group contains one or more BizTalk Servers. We have witnessed some of the complex BizTalk Server environment handling high volume traffic having an infrastructure similar to the one shown below with 6 BizTalk Server and 3-4 SQL Servers.

There are 2 main reason for having multiple BizTalk Server is the group
- Scalability
- Resilience/High Availability
Scalability: The more servers you have in the group means more processing power. You can create multiple BizTalk Server Host and Host Instances in each one of the available servers and increase the volume of messages you can process.
Resilience/High Availability: If you wanted to make sure the environment is highly available, you need to have at least 2 BizTalk Servers in the group and also need to carefully plan how the host/host instances are configured to make sure if one server goes down it doesn’t bring the whole environment down.
Why do you need this?
As a BizTalk Administrator you need to make sure all of your BizTalk Servers are up and running and processing messages at expected level. In the above 6 server configuration, there is a possibility one of the BizTalk Servers goes down and no one really notice it for a long period, until the environment itself becomes a bottle neck. In smaller environments (ex: 2 BizTalk Servers), it becomes super important to make sure your BizTalk Servers are up and running all the time to avoid down time or react to down time quickly.
To address these challenges we are introducing BizTalk Server Availability monitoring in BizTalk360 version 8.5.
As always, one of the core strength of BizTalk360 for monitoring BizTalk Server environments is we wanted to make it super simple and great user experience to configure things. It will literally take less than 2 minutes to setup BizTalk Server Availability Monitoring in-spite of the complexity of your environment.

The above screen show how you can configure the availability monitoring for a 2 BizTalk Servers group. The servers are already listed, you simply need to select them and click the “Enable Monitoring” button. (PS: You need to understand the concept of Alarms in BizTalk360)
Protocol Type: In order for us to check the availability we need to reach the servers, we support “Ping” and “Telnet” to achieve this, one of these protocols need to be enabled.
Monitor Availability (either all or one of them)
This is very important and very specific to BizTalk Server availability monitoring. You can choose the option to alert either if one of the BizTalk Server is the group has gone down or alert only when all of the servers in the group has gone down. The first one is useful if you know there are intermittent issues and the server will come back online after some time and there is no need to alert the teams unnecessarily.

Give it a try on your own environment by downloading a 14-day free trial of BizTalk360.
Author: Saravana Kumar
Saravana Kumar is the Founder and CTO of BizTalk360, an enterprise software that acts as an all-in-one solution for better administration, operation, support and monitoring of Microsoft BizTalk Server environments. View all posts by Saravana Kumar
by Saravana Kumar | Aug 3, 2017 | BizTalk Community Blogs via Syndication
A typical highly available BizTalk Server group contains one or more BizTalk Servers. We have witnessed some of the complex BizTalk Server environment handling high volume traffic having an infrastructure similar to the one shown below with 6 BizTalk Server and 3-4 SQL Servers.

There are 2 main reason for having multiple BizTalk Server is the group
- Scalability
- Resilience/High Availability
Scalability: The more servers you have in the group means more processing power. You can create multiple BizTalk Server Host and Host Instances in each one of the available servers and increase the volume of messages you can process.
Resilience/High Availability: If you wanted to make sure the environment is highly available, you need to have at least 2 BizTalk Servers in the group and also need to carefully plan how the host/host instances are configured to make sure if one server goes down it doesn’t bring the whole environment down.
Why do you need this?
As a BizTalk Administrator, you need to make sure all of your BizTalk Servers are up and running and processing messages at the expected level. In the above 6 server configuration, there is a possibility one of the BizTalk Servers go down and no one really notices it for a long period, until the environment itself becomes a bottle neck. In smaller environments (ex: 2 BizTalk Servers), it becomes super important to make sure your BizTalk Servers are up and running all the time to avoid down time or react to down time quickly.
To address these challenges we are introducing BizTalk Server Availability monitoring in BizTalk360 version 8.5.
As always, one of the core strength of BizTalk360 for monitoring BizTalk Server environments is we wanted to make it super simple and great user experience to configure things. It will literally take less than 2 minutes to setup BizTalk Server Availability Monitoring in-spite of the complexity of your environment.

The above screen shows how you can configure the availability monitoring for a 2 BizTalk Servers group. The servers are already listed, you simply need to select them and click the “Enable Monitoring” button. (PS: You need to understand the concept of Alarms in BizTalk360)
Protocol Type: In order for us to check the availability we need to reach the servers, we support “Ping” and “Telnet” to achieve this, one of these protocols need to be enabled.
Monitor Availability (either all or one of them)
This is very important and very specific to BizTalk Server availability monitoring. You can choose the option to alert either if one of the BizTalk Server is the group has gone down or alert only when all of the servers in the group has gone down. The first one is useful if you know there are intermittent issues and the server will come back online after some time and there is no need to alert the teams unnecessarily.

Give it a try on your own environment by downloading a 14-day free trial of BizTalk360. You can write to us at support@biztalk360.com.
Author: Saravana Kumar
Saravana Kumar is the Founder and CTO of BizTalk360, an enterprise software that acts as an all-in-one solution for better administration, operation, support and monitoring of Microsoft BizTalk Server environments. View all posts by Saravana Kumar