Quotes

Automating BizTalk Administration Tasks using BizTalk360: Auto Healing

Introduction

BizTalk server state based artifacts such as receive location, send port, orchestration may go down due to various reasons. This could stop a business critical interfaces from processing messages. Monitoring the artifact states is a tedious task for both operational and administrative users. The operational users must monitor the state of artifacts constantly if any violation happens to the artifact state the operational user will intimate the administrative users immediately. In turn, administrative users should take corrective actions to bring the artifact to the expected state to avoid/minimize the business impact.  This process involves the operational and administrative users be available throughout the clock to enable the interfaces again. BizTalk360 overcomes this challenge with its auto healing capability. I am writing series of articles on Automating BizTalk Administration Tasks Using BizTalk360”. First Blog was focused on service instance data monitoring. In this article, I will be explaining how you can leverage auto healing capability in BizTalk360.

How it works

With the auto healing functionality, Administrators can set up monitoring on any “State-based” artifact and let the monitoring service to automatically heal the artifact any time when there is a mismatch between the “Expected State” and “Current State”. For instance, Administrators can set up monitoring on the receive location(s) of an application and additionally set up the auto correct functionality for the Expected State of the artifact (which should be “Started”). Whenever the receive location goes down/gets disabled, there will be a state mismatch and the auto correct will try to bring the artifact back to the expected state. If the operation is successful, the artifact will come back to the Expected State within the next monitoring service cycle (60 seconds).
You can download the entire article as a PDF document. Automating BizTalk Administration Tasks using BizTalk360: Auto Healing

State Based Monitoring

Artefacts State Based monitoring is one of core feature in BizTalk360. State Based monitoring is included for Application Artefacts
  • Send Ports
  • Receive Location
  • Orchestrations
  • Host Instances
  • NT Services
  • SQL Jobs
  • Logic Apps
To avoid this manual intervention, administrators can set up the “Max Retries” count in the auto healing. This would allow the auto healing (BizTalk360 monitoring service) to continuously try and bring back the receive location to “Enabled State”. If the operation was successful within the Max Retry count, the artifact would be automatically healed to ensure business continuity. If the operation was not successful within the Max Retry count, the artifact would move into a Critical state. Automating BizTalk Administration Tasks using BizTalk360: Auto Healing

Email Notification

Artefact (Receive Location) is configured for monitoring and auto healing when the receive location violates the threshold condition means monitoring service will first trigger the down alert. Automating BizTalk Administration Tasks using BizTalk360: Auto Healing Monitoring service will auto correct the state of receive location to expected state and trigger an auto correct email. Automating BizTalk Administration Tasks using BizTalk360: Auto Healing

Custom BizTalk Adapters

Custom BizTalk adapters are used in Receive Location/Send Port; In this case, we must install Custom adapter components in BizTalk360 servers. If you have installed BizTalk360 Monitoring service in multiple servers for BizTalk360 HA then install Custom Adapters pack in multiple servers. We can few cases where custom adapters pack needs to be installed;

1. BizTalk Scheduler Adapter

When you are using BizTalk Scheduler in BizTalk Artefacts and not installed in BizTalk360 Box. Then you will get the error as like below “ReceiveLocations: Exception raised while trying to set receive locations to the expected state. Ex: Microsoft.BizTalk.ExplorerOM.BtsException: Could not validate TransportTypeData, Address or Public Address properties for Receive Location ‘Receive_INV_Scheduler’ “ To address this issue we need to GAC Microsoft.BizTalk.Scheduler.dll in BizTalk360 Box(es).

2. nSoftware Adapter

 nSoftware Adapters are used in BizTalk Artefacts (e.g.: FTP(s)/SFTP Adapters). Exception raised while trying to set receive locations to the expected state by auto correct feature. “Ex: Microsoft.BizTalk.ExplorerOM.BtsException: Failed to create ‘nsoftware.SFTP v4’ Transport Component at Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer.SaveChangesWithTransaction(Object transactionObj)” Overcome this challenge we need to install the nSoftware adapters where BizTalk360 Monitoring service is running.

 3. Host Integration Adapter Pack

 BizTalk Artefacts are using MQSC (HIS) adapters in your BizTalk Environment means you have to install Host Integration Pack Adapters. The following are adapters in Host Integration Adapter Pack
  • Host Applications
  • DB2
  • WebSphere MQ
  • Host Files

User Permission

Taking automatic actions on BizTalk Artefacts, SQL Jobs, Host Instances and NT Services we need adequate permissions to Service Account user with respect to Windows, SQL, and Azure.
Feature Minimum Required Permission
BizTalk Artefacts – To change the status of BizTalk Artefacts BizTalk Operators Group
Host Instances – Operations (WMI) BizTalk Administrator Group
SQL Jobs – Change state of Jobs SQLAgentOperatorRole
Logic Apps – Enable/Disable Owner (Subscription User)
You can see more information about BizTalk Server Security.

Conclusion

BizTalk users can leverage this most powerful feature “Auto Healing” in BizTalk360 to maintain/monitoring the states of various Artefacts. It will minimize the downtime of BizTalk Artefacts.

BizTalk Health Monitor Integration in BizTalk360

Introduction

Most of BizTalk users know MessageBox Viewer (MBV) is replaced with BizTalk Health monitor (BHM). BHM is a complete MMC Snap-in reusing the same health check engine and architecture as MBV, but its query/rule repository is updated frequently to detect all recent BizTalk issues. You can go through this interesting article by founder of BizTalk360, Saravana Kumar, about the difference between BizTalk360 and BHM.

MessageBox Viewer(MBV) Deprecated!

BizTalk360 supports MessageBox Viewer until 8.3 version. Most of our customers have requested the upgrade to BizTalk Health Monitor. Based on feedback, we decided to integrate the BizTalk Health Monitor into BizTalk360.
MessageBox Viewer Integration is deprecated from BizTalk360 8.4 version.
The next version of BizTalk360 (8.4) is planned to release during last week of April. Users can install BHM in order to take advantage of the BizTalk health report feature. For the existing users, while they are migrating from previous version of BizTalk360, the MBV configuration is removed from BizTalk360 Settings section. The configuration and functionality of BHM is like the previous version of Health Monitoring Tool (MessageBox Viewer).

BHM Integration

Settings

The first step the users have to configure, is the BHM installation directory and to schedule the reports generation. By the schedule, the BizTalk360 Monitoring Service will generate the reports. BHMSettings

BHM Monitoring

In BizTalk360 you can configure BHM Monitoring in the section Manage Mapping>BizTalk Environment. Here users can set the threshold limit of critical and non-critical errors to monitor the BizTalk Health Reports. BHMMapping Monitoring Dashboard will plot the BizTalk Health Monitor status for every monitoring cycle. The users can configure BHM Threshold settings for multiple environments. BHMMonitoringDashboard

Viewing BHM Reports

BizTalk Health Monitor runs are viewed under the Health Tools in the Operation section. The monitoring service produces the health reports based on the configured schedule. Reports are categorized into Critical, Non-Critical, Header and Summary Report. In BizTalk360 users can view multiple BHM runs under BizTalk Health Monitor Reports. BHMReports

Summary

BizTalk360 users can take full advantage of BizTalk Health Monitor feature from BizTalk360 8.4 onwards. If you have any feedback, please write to support@biztalk360.com. get biztalk360

BizTalk360 Support Process

The BizTalk360 Support Process

As the product support team, we are customer facing people. The support forms the backbone of every product developed. In BizTalk360 we follow the mantra of “Exceptional Customer Support” and this is made possible through our support process. In our flagship product, BizTalk360, the all-in-one solution for Operating, Monitoring and Analyzing Microsoft BizTalk environments, customer support plays a major role. The BizTalk360 support started with the tradition ways like emails and calls. Soon our CTO, Saravana Kumar, realized that we should have a proper channel for communication and recording the issues. This was possible with Freshdesk. There starts the support process: a complete rule management system. The customers raise issues and we track these through the assist portal with Freshdesk. What if that issue is really a bug? We have to provide the fix. Here comes the Jira software for internal tracking purpose and to coordinate with the internal technical team. Sometimes, we do need to check for issues at customer end. Then we use GoToMeeting for a screen sharing session with the customer. This is the complete pack of the BizTalk360 support process.

The story of BizTalk360 support with Freshdesk

The motto being “Customer happiness, refreshingly easy“, BizTalk360 support also aims for the same. The dashboard is the most significant feature, it gives a clear picture of all the open, overdue and unresolved tickets. We can see our conversations with the customer by clicking on each ticket. This channel seems to have improved the support process. As a Product support team, we make sure there are no long pending tickets. We have included the customer survey which will rate our support to the customer. The portal takes care of rule management so that the tickets get assigned to the right people. Whenever a customer raises an issue, support team members get a notification email. The ticket gets assigned to the person who will take the responsibility of resolving the issue. The number of conversations with the customer also matters.  We cannot go on dragging the issue for a long time until and unless, the customer is busy and delayed in response. There is an “Add private note” section where the internal team members get notified about the discussion on the issue raised, if any technical assistance is required. We have the escalation process in our support to make sure the customer’s issue is taken care of and resolved in time. There are different levels of support team namely L1, L2, L3 and L4 in the ascending order. When a customer raises a ticket, it gets assigned to the L1 Team. This team does the analysis and provides the solution to the customer. In case, if we need any help in resolving the ticket, we escalate it to the next L2 level technical team, adding our observations and details in the private notes section. If it cannot be resolved by L2, then its moved to the L3 team and so on. The L1 team will make the follow ups on the escalated tickets and make sure that they are responded in time and closed after getting resolved. Interested to have a look at the BizTalk360 Support Portal?

Leader-board Achievements

biztalk360 support team members The activities of the support team can be monitored through the dashboard of the BizTalk360 Freshdesk. It says who has done what. The rating in the Leaderboard is based on the number of conversations that we handle to resolve the issue and close the ticket. This helps to improve the agent productivity. The different trophies based on the different criteria include:
  • Most Valuable Player: Agent with the most overall points for the current month.
  • Customer “Wow” Champion: Agent with the maximum Customer Satisfaction points for the current month.
  • Sharpshooter: Agent with the highest First Call Resolution (Ticket was solved with only one interaction between agent and customer) points for the current month.
  • Speed Racer: Agent with the maximum points for Fast Resolution (Ticket was solved in under an hour) for the current month.
The Leaderboard is reset on the first of every month so everyone can start over with a clean slate. Recently we started with the addition of survey rating for our support. When the survey rating was started, my teammate Sivaramakrishnan was leading in all the four categories. Our team is really proud of him. Being with the team for two whole years, he has gained a very good knowledge on the functionality of the product. Behind every brilliant performance there were countless hours of practice and preparation.                                                                                                                         – Eric Butterworth biztalk360 support team This motivation is required for each and every team member to gain high customer satisfaction with clear and appropriate resolution to the issues raised. Of course, we do have some lags when the issue raised by the customer is a rare scenario, which we might not have seen before. Then unfortunately there are a large number of interactions which may make the customer frustrated. The customer’s experience or feelings will help to improve business, especially in the areas of Sales and Marketing. Positive experiences get passed along and even the bad experience would turn into a lesson of improvement for our BizTalk360 Support team. For quick resolution we also set up web meetings through GoToMeeting website where we can have a screen sharing session with customers. The SLA’s for the tickets would be based on the priority of the tickets raised. For example, for a low priority ticket, the due date would be three days. We see to it that we resolve the tickets on time for better customer satisfaction. biztalk360 support tickets The status of the tickets is categorized as Open, Pending, Bug, New Feature Request etc., based on the issues raised and the conversations handled. When we wait for a reply from the customer, we set the status as “Waiting on Customer”. The status of the ticket is changed to closed, once the issue is resolved. This is called “refreshingly easy”, where every act refreshes the status of the issue raised. For the New Feature request, we recommend the customer to add it to our user voice in the feedback portal, where we collect new requirements or enhanced requirements of existing features and take it for development, based on the number of votes received.

The Jira software

The customer raises an issue and if it’s found to be a bug, we have an internal tracking system called Jira. This issue tracking software is used by development and technical support team to get more work done and getting it done faster. When we confirm that an issue is a bug, we create a Jira ticket, assign it to the development team and tag the ticket as “bug” in the Assist portal. They will fix the issue and add it to the upcoming release. We can define the workflow for the same. This is used as an internal tracking system for us. Jira is updated whenever the issue is fixed. We will inform the customer about the fix and close the ticket once after the customer confirmation. biztalk360 support tickets

The GoToMeeting

What if we are not able to reproduce the issue raised by the customer or we need to know their environment setup? Instead of dragging on too many conversations, it would be better if we contact the customer directly. But how? Here comes the GoToMeeting, which is an online meeting, desktop sharing, and video conferencing software that enables the user to meet customers via internet in real time. This way, the customer will be able to show their issue where either we can directly resolve them or get the appropriate details regarding the issue. Before arranging for the meeting, we will confirm the convenient time of the customer and then send the invite. This helps the customer to prepare their environment and even helps us to collect the necessary details. Some customers feel happy when we ask for the call because they feel that it is the faster way to resolve the issue. But some may feel that it’s a waste of time, if we don’t provide a solution or if we ask for some other information. biztalk360 support calls We get a chance to interact with different types of customers in the call. Some of them would patiently listen to us, explain their problem and provide the required details. But some of them would become impatient when we ask them some details. But we assure that the issue gets resolved at the earliest so that the customer’s confidence is not shaken.

Conclusion

With the different tracking systems along with the Support Assist portal, we are providing an exceptional customer support. This can be known from the customer survey ratings, where we have got the rating as “Awesome” making the agents as the “Customer Wow Champion”. We continue our teamwork in achieving “Maximum Customer Satisfaction”. Also, check out the continuation of this blog “BizTalk360 Support Process – Part 2“.

Using Azure Management API in an On-Premise Application

With the release of version 8.1, BizTalk360 has the capability of monitoring Logic Apps, API Apps and Azure Service Bus in the Microsoft Azure stack. During the development phase, we have faced quite some challenges to bring Azure settings into on-premise BizTalk360. In this article, we can see how BizTalk360 adopted the Azure Service Management API.
You can download the entire article as a PDF document. Using Azure Management API in an On-Premise Application

Connecting to Azure Service Management API’s

There are two options available to programmatically connect to Azure Service Management API’s:
  • Azure Management Certificate
  • Azure Active Directory
Let’s take a detailed look at the options below.

Azure Management Certificate

API Apps use Management Certificates to authenticate and retrieve the details. To connect the API’s using Management Certificates, we have to generate and download the certificate from Azure. Next, you’ll convert the downloaded file to a X509Certificate2 and attach this certificate under the WebRequestHandler.ClientCertificates in web requests to get the results.
  • Download the Azure Setting file https://manage.windowsazure.com/publishsettings/index?client=xplat.If you click on the link and login into Azure portal, the Settings file will be downloaded instantly.
  • After opening that file, you can find the subscription with ID and you will be able to manage the certificate. Just parse that certificate using a C# XML class and convert it into a X509Certificate2.
 var certificateAsBytes = Convert.FromBase64String(certificateString);
 var certificate = new X509Certificate2(certificateAsBytes);
  • Once the certificate is ready, the next step is to insert the certificate into a HTTP Handler. Then you can call an Azure API using that handler.

Azure Active Directory

Logic Apps use Azure Active Directory authentication. If the Azure subscription is not connected with an Azure Active Directory, you’ll have to create a new Active Directory in Azure and get a ClientID, Appkey and TenantID to call the Azure API’s. We can see an example how Logic Apps information are retrieved using Azure Active Directory.
private static string azureActiveDirectorylnstance =
System.Configuration.ConfigurationManager.AppSettings["AzureActiveDirectoryInstance"];
private static string tenantlD =
System.Configuration.ConfigurationManager.AppSettings["TenantlD"];
private static string clientlD =
System.Configuration.ConfigurationManager.AppSettings["ClientID"];
private static string appKey =
System.Configuration.ConfigurationManager.AppSettings("AppKey"];
private static string resource =
System.Configuration.ConfigurationManager.AppSettings["Resource"];
private static string subscriptionlD =
System.Configuration.ConfigurationManager.AppSettings["SubscriptionID"];
static string authority = azureActiveDirectorylnstance + tenantlD;
private void buttonl_Click(object sender, EventArgs e)
{
using (LogicManagementClient client = GetLogicManagementClient())
var workflowPage = client.Workflows.ListBySubscription();
List<Workflows> workflows = workFlowPage.ToList();
Foreach (var workflow in workflows)
listboxl. Items.Add(workflow.Name);
}
private string GetToken()
{
var httpClient = new HttpClient();
var authContext = new AuthenticationContext(authority);
var clientCredential = new ClientCredential(clientID, appKey);
var result = authContext.AcquireToken(resource, clientCredential);
return result.AccessToken;
}
private string GetAuthToken()
{
var httpClient = new HttpClient();
var authContext = new AuthenticationContext(authority);
var clientCredential = new ClientCredential(clientID, appKey);
var result = authContext.AcquireToken(resource, clientCredential);
var token = result.CreateAuthorizationHeader();
return token;
}
private LogicManagementClient GetLogicManagementClient()
{
var credentials = new TokenCredentials(GetToken());
var client = new LogicManagementClient(credentials);
client.SubscriptionId = subscriptionID;
return client;
}

Proxy Settings

If the environment is configured with Proxy Settings, you’ll have to modify the Access Token code by using HttpWebRequest instead of HttpClient, since we have to support a Proxy to all the service calls.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format(subscriptionsAuthorizationUri, subscription.TentantId));
 System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
 string postData = "grant_type=client_credentials";
 postData += "&resource=" + HttpUtility.UrlEncode(resource);
 postData += "&client_id=" + HttpUtility.UrlEncode(subscription.ClientId);
 postData += "&client_secret=" + HttpUtility.UrlEncode(subscription.SecretKey);
 byte[] data = encoding.GetBytes(postData);
 request.Method = "POST";
 request.ContentType = "application/x-www-form-urlencoded";
 request.ContentLength = data.Length;
 if (webProxy != null)
 {
 request.Proxy = webProxy;
 }

 using (Stream stream = request.GetRequestStream())
 {
 stream.Write(data, 0, data.Length);
 }
 using (var response = request.GetResponse())
 {
 using (var stream = response.GetResponseStream())
 {
 DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(B360.Plugin.Common.AADJWTToken));
 B360.Plugin.Common.AADJWTToken token = (B360.Plugin.Common.AADJWTToken)(ser.ReadObject(stream));
 return token.AccessToken;
 }
 }

Azure Subscription Configuration

Now, let us see how BizTalk360 validates Azure credentials and configure the Azure subscription. azure subscription configuration Call the Azure Role Access API to ensure that BizTalk360 has permission to access the Azure resources.
roleAssignmentsURI = "https://management.azure.com/{0}/providers/Microsoft.Authorization/roleAssignments?api-version={1}&$filter={2}";
When we call this API using the generated token, we will get multiple responses — so we are handling all the responses properly at the code to complete the validation.

Forbidden

response.StatusCode == HttpStatusCode.Forbidden If the Validation method returns Forbidden, then that means the details provided are right. However, BizTalk360 doesn’t have access to read those resources. In this case, we will generate a PowerShell command and prompt the user to execute that command in PowerShell and then try to validate again. If they executed that command and tried to validate again, we will get a OK response and close.
azurePowerShellCommand = "New-AzureRmRoleAssignment -ObjectId '{0}' -RoleDefinitionName Owner -Scope '/subscriptions/{1}'";

Not Found

response.StatusCode == HttpStatusCode.NotFound If the Service responds with Not Found status code, then redirect back to user saying there is a mismatch in the provided Azure Active Directory and the Management Certificate.

OK

response.StatusCode == HttpStatusCode.OK When the response returns OK, this confirms the Azure Subscription validation is successfully completed and configured into BizTalk360.
You can download the entire article as a PDF document. Using Azure Management API in an On-Premise Application