Wednesday, March 3, 2021



Product /Version

BizTalk 2013 R2

BizTalk 2016

BizTalk 2020

Windows Server

 2012 R2 / 2012

2016/2012 R2

2019/2016

SQL Server

2014/2012 SP1

2016/2014 SP1

2019/2017/2016 SP2 CU7

Visual Studio

2013

2015

2019

.Net

4.6.x/4.5.x

4.8/4.7.X/4.6.x

4.8/4.7.2


BizTalk Server Version

Lifecycle Start Date 

Mainstream Support End Date 

Extended Support End Date

Currently Supported

BizTalk Server 2020

2/1/2020

1/9/2024

1/9/2029

Yes

BizTalk Server 2016

12/1/2016

1/11/2022

1/11/2027

Yes

BizTalk Server 2013 R2

7/31/2014

7/10/2018

7/11/2023

Yes

BizTalk Server 2013

6/12/2013

7/10/2018

7/11/2023

Yes

BizTalk Server 2010

11/14/2010

1/12/2016

1/12/2021

Yes

BizTalk Server 2009

6/21/2009

7/8/2014

7/9/2019

No

BizTalk Server 2006 R2 

6/23/2006

7/12/2011

7/12/2016

No

BizTalk Server 2006

6/23/2006

7/12/2011

7/12/2016

No

BizTalk Server 2004

5/20/2004

7/14/2009

7/8/2014

No

BizTalk Server 2002

4/2/2002

4/2/2007

4/2/2012

No

BizTalk Server 2000

5/2/2001

7/11/2006

7/12/2011

No



Monday, November 20, 2017

ESBExceptionDB Maintance

ESBExceptionDB is a Database that is used to capture the Exceptions and used for Alert notifications, resubmitting of the messages ( with a bit of customization).

But over a period of time this Database will start to accumulate the messages. We don't have out-box jobs to clean the Database. We need to set up custom job similar to  dtasp_BackupAndPurgeTrackingDatabase to clean Faults. Below is the script that can be used to Maintain the DB. We can further Enhance ESB Portal to allow User to delete the messages after reviewing the Expection, but in any case we need a custom job/script to clean up the DataBase.

USE [EsbExceptionDb]
GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[usp_PurgeEsbExceptionDb]

    @DaysToKeep    INT = 30
AS
BEGIN
/*
=============================================
Example:
EXEC [dbo].[usp_PurgeEsbExceptionDb] @DaysToKeep = 30
=============================================
*/
    DECLARE @currentDateTime DATETIME, @deleteFromDateTime DATETIME;

    SET @currentDateTime = GETUTCDATE();

    SET @deleteFromDateTime = @currentDateTime - @DaysToKeep;
    SET NOCOUNT ON;

    /*Deleting all the records from ContextProperty table*/

    DELETE conprop FROM [dbo].[ContextProperty] conprop
    INNER JOIN
    (SELECT msg.MessageID FROM [dbo].[Message] (NOLOCK) msg
    INNER JOIN
    (SELECT fault.FaultID FROM [dbo].[Fault](NOLOCK) fault WHERE fault.InsertedDate < @deleteFromDateTime) faultsToDelete
    ON faultsToDelete.FaultID = msg.FaultID) msgIdsToDelete
    ON msgIdsToDelete.MessageID = conprop.MessageID

    /*Deleting all the records from ProcessedFault table*/

    DELETE procfaults FROM [dbo].[ProcessedFault](NOLOCK) procfaults
    INNER JOIN
    (SELECT fault.FaultID FROM [dbo].[Fault](NOLOCK) fault WHERE fault.InsertedDate < @deleteFromDateTime) faultsToDelete
    ON procfaults.ProcessedFaultID = faultsToDelete.FaultID

    /*Deleting all the records from MessageData table*/

    DELETE msgdata FROM [dbo].[MessageData] msgdata
    INNER JOIN
    (SELECT msg.MessageID FROM [dbo].[Message](NOLOCK) msg
    INNER JOIN
    (SELECT fault.FaultID FROM [dbo].[Fault](NOLOCK) fault WHERE fault.InsertedDate < @deleteFromDateTime) faultsToDelete
    ON faultsToDelete.FaultID = msg.FaultID) msgIdsToDelete
    ON msgIdsToDelete.MessageID = msgdata.MessageID

    /*Deleting all the records from Message table*/

    DELETE msg FROM [dbo].[Message] msg
    INNER JOIN
    (SELECT fault.FaultID FROM [dbo].[Fault](NOLOCK) fault WHERE fault.InsertedDate < @deleteFromDateTime) faultsToDelete
    ON msg.FaultID = faultsToDelete.FaultID

    /*Deleting all the records from Fault table*/

    DELETE fault FROM [dbo].[Fault](NOLOCK) fault WHERE fault.InsertedDate < @deleteFromDateTime;

    /*Deleting all the records from AlertSubscriptionHistory table*/

    DELETE ash FROM [dbo].[AlertSubscriptionHistory] (NOLOCK) ash WHERE ash.InsertedDate < @deleteFromDateTime;

    /*Deleting all the records from AlertHistory table*/

    DELETE ah FROM [dbo].[AlertHistory] (NOLOCK) ah WHERE ah.InsertedDate < @deleteFromDateTime;

    /*Deleting all the records from AlertEmail table*/

    DELETE ae FROM [dbo].[AlertEmail] (NOLOCK) ae WHERE ae.InsertedDate < @deleteFromDateTime;

    SET NOCOUNT OFF;

END

GO

Saturday, February 4, 2017

MQSC Adapter fails with reason code 2394 when it uses UTF-8 encoding

This morning I ran into the below error while testing a connectivity using MQSC adapter and UTF-8 encoding after installing CU3 for Host Integration Server 2013. I am able to read the messages out of queue without UTF-8 encoding in receive location, but UTF-8 is causing the issue.

The adapter "MQSC" raised an error message. Details "Failure encountered while attempting to get message from queue. queue = {queueName}, queueManager = {queueManager}, reasonCode = 2394".


This issue started post CU3 Installation only.. I was able to reproduce this issue in multiple servers….
Upon some binging.. I was able to find an article which talk about an issue with CU3 for HIS 2013 and UTF-8 encoding. I was not able to find the Hotfix download.. so instead I uninstalled the CU3 for Host Integration Server 2013 and wolaa the issue is resolved… I am able to use MQSC adapter to read messages from the Queue using UT-8 encoding in the receive location.
I won’t not say this is a clean solution but if you run into this issue and had the CU3 installed for HIS 2013 uninstalling it can resolve the issue… Also check the below hotfix’s that CU3 contains which could impact your system due to uninstallation of CU3.

CU3 Details @ : https://support.microsoft.com/en-us/help/3019572/cumulative-update-3-for-host-integration-server-2013

I will be searching for a better solution …..

BizTalk Server 2013 R2
Host Integration Server 2013

Hope this help... If you have any question please feel to ping me .. 
Happy Integrating .. 

Tuesday, February 23, 2016

BizTalk Server Versions and Cumulative Updates List

Below is the list of BizTalk Server Versions and Cumulative updates. Please feel free to correct them if needed.

BizTalk 2013 R2
BizTalk Edition BizTalk Version Release Date
BizTalk Server 2013 R2 3.11.158.0           6/23/2014
BizTalk Server 2013 R2 Cumulative update package 1 3.11.217.2         7/2/2015
BizTalk Server 2013 R2 Cumulative update package 2 3.11.237.2    12/31/2015

BizTalk 2013
BizTalk Edition BizTalk Version Release Date
BizTalk Server 2013 Beta 3.10.171.0           11/20/2012
BizTalk Server 2013 3.10.229.0           3/21/2013
BizTalk Server 2013 Cumulative update package 1 3.10.301.0           4/10/2013
BizTalk Server 2013 Cumulative update package 2 3.10.305.2           10/31/2013
BizTalk Server 2013 Cumulative update package 3 3.10.344.2 10/9/2015

BizTalk 2010
BizTalk Edition BizTalk Version Release Date
BizTalk Server 2010 Beta 3.9.187.0            5/21/2010
BizTalk Server 2010 3.9.469.0            10/1/2010
BizTalk Server 2010 Cumulative Update Package 1 3.9.522.2 5/21/2011
BizTalk Server 2010 Cumulative Update Package 2 3.9.530.2            8/31/2011
BizTalk Server 2010 Cumulative Update Package 3 3.9.542.2            11/20/2011
BizTalk Server 2010 Cumulative Update Package 4 3.9.545.2 2/28/2012
BizTalk Server 2010 Cumulative Update Package 5 3.9.556.2 6/19/2012
BizTalk Server 2010 Cumulative Update Package 6 3.9.575.2 7/11/2013
BizTalk Server 2010 Cumulative Update Package 7 3.9.644.2 3/20/2015
BizTalk Server 2010 Cumulative Update Package 8 3.9.668.2 8/17/2015
BizTalk Server 2010 Cumulative Update Package 9 3.9.674.2 2/1/2016

BizTalk 2009
BizTalk Edition BizTalk Version Release Date
BizTalk Server 2009 3.8.368.0            4/27/2010
BizTalk Server 2009 Cumulative Update Package 1 3.8.454.2            12/8/2010
BizTalk Server 2009 Cumulative Update Package 2 3.8.463.2            3/17/2011
BizTalk Server 2009 Cumulative Update Package 3 3.8.469.2            8/1/2011
BizTalk Server 2009 Cumulative Update Package 4 3.8.473.2            11/1/2011
BizTalk Server 2009 Cumulative Update Package 5 3.8.475.2 1/20/2012
BizTalk Server 2009 Cumulative Update Package 6 3.8.477.2 4/27/2012
BizTalk Server 2009 Cumulative Update Package 7 3.8.492.2 11/28/2014

BizTalk 2006\R2\SP1
BizTalk Edition BizTalk Version Release Date
BizTalk Server 2006 3.5.1602.0           3/27/2006
BizTalk Server 2006 R2 3.6.1404.0           10/2/2007
BizTalk Server 2006 R2 SP1 3.6.2149.10          1/27/2010
BizTalk Server 2006 R2 SP1 Cumulative Update Package 1 3.6.2210.12          4/12/2010
BizTalk Server 2006 R2 SP1 Cumulative Update Package 2 3.6.2217.12          6/24/2010
BizTalk Server 2006 R2 SP1 Cumulative Update Package 3 3.6.2224.12          8/30/2010
BizTalk Server 2006 R2 SP1 Cumulative Update Package 4 3.6.2237.12 3/30/2012

BizTalk 2004
BizTalk Edition BizTalk Version Release Date
BizTalk Server 2004 3.0.4902.0           3/2/2004
BizTalk Server 2004 Rollup Package 1 3.0.5204.0           4/8/2004
BizTalk Server 2004 SP1 3.0.6070.0           12/16/2004
BizTalk Server 2004 SP2 3.0.7405.0           1/10/2008

Check if a cumulative update is installed via powershell script

With growing number of updates, keeping tack of what cumulative update's (CU) are installed on which developer machine can be painful point .. We can always go the control panel and manually get the list .. but imagine if you have stack of developer machines and you need to do this on every machine ... i know its pain full..

What if we can have one script that verifies if a CU is installed or not else install it. below is a simple power shell script which searches the registry with a key word and skips that Installation.


function SearchRegistry([string] $Name)
{
    Write-Host "Checking Registry for $Name"
    $Results = Get-ChildItem -path HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ -Recurse -ErrorAction SilentlyContinue | where { $_.Name -match $Name}
    if($Results.Count -gt 0)
    {
        return $true
    }    
}

#Adapter Pack CU3 Install
if(SearchRegistry 'Biztalk Adaptor Pack 2010 CU3*')
{
    write-host 'Software Already Installed Skipping'
}
else
{
#install the package
}

#HIS 2010 CU9 Install
if(SearchRegistry 'CU9: Host Integration Server 2010 Hotfix (KB2897923)*')
{
    write-host 'Software Already Installed Skipping'
}
else
{
#install the package
}



Hope this help... If you have any question please feel to ping me .. 
Happy Integrating ..