Support Deliberation

Support Deliberation

Support deliberation is a process of discussing the challenges we faced in support handling. It is an initiative which our CEO suggested, and we are following this to transfer the knowledge to the team. With the different levels of support, it is important to share the knowledge between the team members, so that it would help them to resolve customer issues efficiently, when they come across similar kind of issues. It’s not only for the support team, the entire product team, including the developers, QA and the documentation teams take part in this deliberation.

I would like to narrate this blog as a Q&A session, so that I can explain in detail.

What is deliberation?

As deliberation defines, it’s a place where we discuss in detail about the support process and the challenges we faced in resolving the issues related to the product. Every participant will share their view and add points to the discussion.

Who are all the stakeholders?

Everyone who is inside/part of the product will take part. People from Development, QA, Document and Support. The thumb rule is no one should skip the meeting. It is important for every team member to attend this meeting, because it would be helpful for everyone to gather more information about the product, as well as the customer’s expectations and queries.

Yes…!! We are the stakeholders of BizTalk360

What do we discuss?

At first, we used to conduct this meeting twice in a month for 30 minutes. We thought that we were delaying the process and for providing immediate attention to the support tickets, we cut down the days and currently we are conducting every week, Tuesday from 03:00 to 03:30 PM IST, sometimes it may extend a bit longer.

Each support person would come up with a list of interesting and challenging support tickets they had resolved the past week. The challenges include the support tickets, support articles, blogs, new feature requests and enhancements which were raised by customers.

What is the process?

The process is simple and clear, we will follow the below Agenda:

  • Discussing past one week important/challenging support cases
  • Discussing the solution provided
  • Gather inputs from the team members
  • What needs to be improved
  • Key Takeaways

Simple isn’t it?

What’s the flow?

We start with the updates and actions taken on what we discussed for the previous week, based on the key takeaways from the meeting. Then we will discuss the current week challenges.

What did we discuss in the present week?

Well, let’s dive deep into this. We will take past 7 days tickets for the discussion.

Interesting/challenging support tickets

We started the meeting with the interesting/challenging support tickets which we handled that week. Let’s take a support case.

When a customer tried to install BizTalk360 on a stand-alone machine, they faced below exception during BizTalk360 database creation.

At an initial stage, we thought it might be a permission issue. Later, after a lot of effort we found it’s due to the TLS versions enabled in that machine.

Key Takeaway

The development team would only have more knowledge about the product functionality, but they would be unaware of the security configuration at the customer end. This discussion will give them a better insight into the customer scenarios. As a takeaway, we have conveyed this to the developer team and testing team. So, that they will know the dependency of the installer and work/test accordingly.

Bugs

There is no perfect product and there is always more scope for the development of the product in the form of either bugs or enhancements. As BizTalk server is an ocean, we are trying to cover most of the functionality. Very recently we faced an issue with the customer side on Business Activity Monitoring (BAM). When they added a column, they received an error.

This issue happens when the end date column has NULL values and it was selected in the BAM query in BizTalk360.

Key Takeaway

We have passed this scenario to our team so that both developers and test engineers will be aware of it and they will include these scenarios in their test case checklist.

Creating team awareness

This topic is something interesting; even though it will be out of BizTalk360, it is still relevant.

Most of our customers started to face an exception in BizTalk360, once after installing a Windows Security patch update. We found the root cause, that not only BizTalk360 shows the exception, it is because BizTalk Server facing an exception, which is reflected in BizTalk360. We recommended removing the patch update and that solved their problem. Luckily Microsoft has re-issued the updated patch for the same on July 30, 2018.

Key Takeaway

Interesting isn’t it? We have conveyed to the team, so that they will be aware of the issue. If they face the same problem with BizTalk server, they will not wait for our system engineer to repair, but they will try to fix the issue in BizTalk Server. After that, the problem will most likely be fixed in BizTalk360 as well.

Improvement tickets

At BizTalk360, we evolve the product based on feedback we get from different forums like:

  1. Support tickets
  2. Customer relationship calls
  3. Feedback portal
  4. Direct feedback

Based on the customer’s feedback, the tickets will be discussed. The feedback may concern an existing feature enhancement, a new feature or a feature document.

Key Takeaway

Based on the discussion the action will be performed. Say for example, if the feedback comes to a documentation enhancement, one of us (as we are DevOps) will be assigned to complete the necessary changes.

For an existing feature enhancement or a new feature, we will discuss with the team. Based on the team members feedback, we will add the feature in the Feedback portal and make other customers vote for it. Based on the number of votes, we will include in the product or if it is already available in the portal, we will wait for the interest of other customers. If the team agrees to accept the feature for development, one of the persons will be assigned to develop or to improve the feature.

The Brainstorming session

This is an interesting part for me. We don’t want to run the session like a normal Knowledge Transfer session with the team and we always prefer an interactive session. So once after explaining the problem faced by the customer, we will ask the team what the best solution would be and what the necessary steps are to solve the problem.

Key Takeaway

The first point is to make the team understand the problem and get their opinion. It will help us to get the solution and their point of view and may provide a better dimension of that case. We have received a better suggestion from the team, every time. 

Hidden fact, it helps themselves, while developing, testing or documenting a feature. They will always be aware of how the customer is using a feature and act accordingly.

Minutes of Meeting (MOM)

Each meeting ends up with the key takeaways and MOM. This will help us to follow up and take necessary actions. During the next deliberation meeting, we start up with the past week’s MOM or with the tickets what we have discussed.

Why we started this process?

We wanted to break the dependency of individuals like Module owners and get more knowledge from our higher levels. As DevOps, we should be ready to accept any challenge while working in different roles . It’s also important to understand and be aware of the customer environment and business requirements.

I want to take this opportunity once again to thank everyone in and out of BizTalk360 for this wonderful opportunity and believing in us. We are looking forward, for much more opportunities.

Author: Sivaramakrishnan Arumugam

Sivaramakrishnan is our Support Engineer with quite a few certifications under his belt. He has been instrumental in handling the customer support area. He believes Travelling makes happy of anyone. View all posts by Sivaramakrishnan Arumugam

An interesting support experience – Troubleshooting External Notification Channel(Slack)

An interesting support experience – Troubleshooting External Notification Channel(Slack)

I can say last month was one another interesting month for me as a Support and Test engineer, as we have received quite a few interesting tickets.

Every support ticket gives us a different experience in its own way. But, some of the support tickets seem interesting, because it helps us to explore and learn new things. One of such tickets was related to the Slack Notification Channel.

Short intro about Notification Channels

BizTalk360 is embedded with a feature called Notification Channel. Not only does BizTalk360 support internal notification like emails and SMS, along with it, we support external notifications so that customers can write their own code to send alerts to the Notification Channel they use as per their organization policy.

External Notification Channel is another customer’s feature request, which we have developed and included in our product. As it can be very helpful to Support teams, we decided to create some inbuilt Notification Channels. Further, customers can create their own Notification Channel using their own code. Kindly find the blog for Custom Notification channel.

Feedback from the customer about custom Notification Channel

We have got very positive feedback from our customers about external Notification Channels and received quite a few requests to include some of the Notification Channels as an inbuilt feature. And we did so.

Also, we haven’t kept support aside; whenever customers face challenges with Notification Channels, we helped them to solve the issue at hand to our best. One such classic case is ‘Using BizTalk360’s Notification Channel to perform some action via a PowerShell script’.

Default Notification Channels

During the initial point of time, along with the version 8.0, we have provided BizTalk360 with some inbuilt Notification Channel such as:

1. Slack and
2. Webhook Notification Channel

Later as per the customer’s request, we have included two more Notification Channels and we have 4 now.

3. ServiceNow
4. Teams
Notification channel configuration in our latest version 8.8 looks like below.


Also, we have enhanced the Notification Channel feature as per the customer’s request. Such as,

Challenge in External notification #Slack

Last month, we received a support case regarding the Slack Notification Channel, that it’s not receiving any notifications from BizTalk360 and they faced the below exception in the log file:

2018-06-08 12:01:40 ERROR – Unable to connect to the remote server

We started to approach the case with the basic troubleshooting steps such as:

• Does the user have proper credentials?
• Any ports are blocked?
• Any security tools are blocking the connection?
• The URL what they used to connect slack?
•Does the proxy is blocking the internet connectivity?

The basic troubleshooting did not help us to solve the problem. So, we went into the screen-sharing session to investigate furthermore. At that point of time, we found that admin scope is missing for the application.

To give more insight about Slack:

In Slack,

• Groups are considered as #Channels
• Applications are predefined functionality, that is considered as #Apps
• Permissions are called as #Scopes

The flow is like:

1. You must create a Channel inside Slack
2. App creation will be followed by channel
3. Add necessary permissions/scopes to the created app
4. Generate Access Key/Token for the app
5. Add app inside the channel
6. Add the Access token for the app inside BizTalk360

We asked the customer to provide the admin scope and left the call. After few days customer came back with the same problem even though they have provided admin scope.

Creation of test environment

For Testing purposes, I have created a new Slack account and Channel, tested from the scratch and we have provided the same permission as the customer had.We got the same issue as the customer encountered, though the application has the scope admin.

What our code does?

We have analyzed with the source code level to find if anything is missing at our side. But found, the code is written in a generic way to push the plaintext message to any Notification Channel. So that, it could be sent to any platform. we have found that it is not a problem with sending a notification from BizTalk360, but it could be a permission issue.

After some testing and researching, we were not able to find the minimum permission what needs to be provided for the application in order to solve the customer issue. Later, we have decided to seek help from the Slack support team for further investigation.

Working with Slack Support

Daniel from the slack support team who worked with me throughout the way. I have created the support ticket along with the sample test application which had been created for testing. The conversation started with the basic questionaries and made sure the basic configuration is configured as per the actual expectation. However, everything is correct, still, we couldn’t make the app work. The direction of an investigation gone little deep and we will look it in the coming section in detail.

Troubleshooting with the permissions

Daniel conveyed, installed app in the test workspace has a valid token. But, looking through the logs, the application has enough permission (both admin & User identity) to receive the messages. Permissions are as below,

  1. https://api.slack.com/scopes/admin – Got Admin scope
  2. https://api.slack.com/scopes/identify – And got Identify Scope

Additionally, he suggested providing 

  1. Conversiontions:write &
  2. Converstions:read scopes

After following the suggestion, the app was not working. But the next suggestion made a trick.

What is the trick?!!

Later, we got a reply from Daniel “I took a closer look at your app, and it appears you haven’t added the chat: write scope. You’ll need this to make any chat:postMessage (https://api.slack.com/methods/chat.postMessage) calls with your app.
Providing the chat: write permission to the application indeed did the trick! The application writes a message in the Slack from BizTalk360. I have updated the same to the customer and that helped them to resolve their issue.

Satisfaction does it!

This was another support case which was interesting for me as it helped me to understand the code of Notification Channel from a Developer perspective. I have explored Slack along with BizTalk360 which provided more insight from the Tester perspective. Working along with the customer and Slack Support team gave satisfaction as a Support engineer. I have received “an Awesome” review from the customer side 😊

Author: Sivaramakrishnan Arumugam

Sivaramakrishnan is our Support Engineer with quite a few certifications under his belt. He has been instrumental in handling the customer support area. He believes Travelling makes happy of anyone. View all posts by Sivaramakrishnan Arumugam

How we introduced DevOps during the release of BizTalk360 v8.8

How we introduced DevOps during the release of BizTalk360 v8.8

We are excited to launch version 8.8 of BizTalk360, where we have added improvements to existing features and resolved quite a few numbers of outstanding support tickets which were raised by our customers.

As others are excited, I’m even little bit more excited about the BizTalk360 new version release. The reason being, in this release every person in the team has transformed and performed as a DevOps in BizTalk360. Everyone on the team provided their contribution in the form of developing a new feature, enhancing an existing feature, testing, documenting, writing blogs and so on.

DevOps Transformation

2017 was a special year for BizTalk360 product support, we had learned many new things. We started this year with a lot of training. We all product support engineers underwent product training with the help of the respective developers who developed the product features and with the QA who tested.

In 2018, we evolved ourselves from support engineers to QA cum Product Support engineer this year!!! As a product-based and a start-up company, we have improved ourselves and have learned from previous practices.

Being a support engineer for a long time, I have been involved in the development activity. I take this opportunity to thank everyone in and out of BizTalk360 for this wonderful opportunity.

The Development Process of v8.8

This time we have changed our development process from Agile to Kanban as well. As the process changed, we are in a situation to monitor each task what we do.

In the version 8.7, few of us evolved as a DevOps and worked along with the release. With the hands-on experience in the version 8.7, we planned our 8.8 from the requirement of the features to the post-release validation.

Here is the task list what we followed in 8.8.DevOps at BizTalk360: Task list

Sprint plan

We planned for 2 months duration with 4 sprints, each sprint holding 2 weeks of duration in this release. As we have our own priority (like Support, QA, Dev involved) based on our availability, the tasks were allocated in each sprint.

During the completion of a sprint and to start another sprint, the feature allocated must be in the deliverable state.

DevOps at BizTalk360: Sprint plan

Task plan

The tasks will be assigned to the individuals based on the nature of their jobs. The assigned tasks must be completed before sprint completion. When I say fixing or enhancement of the feature for the sprint, it doesn’t mean just development. It includes:

  • development
  • testing
  • documentation of the feature
  • support document
  • mock Release notes

Documentation

For the Release Notes, we took a complete list of the development tasks and decided what needed to be added in the Release Notes and the support documentation.

If it’s a feature enhancement, we will change the existing documentation according to the feature enhancement. For a new feature, we created a new article in our support portal (https://assist.biztalk360.com). Also, we prepared a rough Release Notes article.

Screenshot of mock release notes.

DevOps at BizTalk360: Release Notes mock

Once we complete a feature enhancement or a new feature document, we will send it to one of the team members for internal review.  After review, we will pass it on to the Documentation team to add or make changes to the support document.

Here is a part of the list of the documentation index what we had done in 8.8.

DevOps at BizTalk360: Documentation Index

Post-release validation

The process does not end once the product is ready for release. We do have few activities for the post-release validations to make the release complete and we were also involved in these activities. The activities include the tasks needed to be done before the product is announced to the public.

Here is the sample list of post-release validation list.

DevOps at BizTalk360: post release validation checklist

Daily Stand-up

Meetings are always helpful for the team coordination and understand the activities and make sure everyone on the team is on the same page. Daily stand-up is one another way to update our daily task, to reveal our technical challenges what we had faced on the day before, the tasks what we have worked and what we are going to work on the day.

If there are any challenges faced, any one of the people from the team or from other teams will help you out to overcome the problem. Also, we get feedback and suggestion on the tasks. If we have any technical dependencies we will convey in the meeting so that within a team all will get to know who is working on what. It helped us to complete the task on time.

Along with the task update, we will also verify the development progress, testing, documentation of the feature, support and mock release notes.

Show and Tell

As the name implies, we show our developed feature and tell the progress of our development activity to the team. This is something different from the Daily stand-up as we would showcase the tasks performed for the entire week and demo the feature developed to have the feedback from the management.

Show and tell is conducted every Monday afternoon. We will showcase what we developed during the meeting to our CEO along with the external team members to get their feedback and suggestion. Based on the suggestion we will make changes.

Challenges what we faced

It is not that much easy to transform from a QA and Technical Support engineer to DevOps even though we handle technical things.

From our side, at the very beginning stage, we faced a problem with the priority and time consumption. At a very earlier stage, I was not able to focus completely on the development since we are handling the support. We receive support cases and our priority is to solve the tickets as soon as possible. We could overcome this by the practice in various sprints.

“Success is where preparation and opportunity meet”

From my personal point of view, since we handled from the requirement to post-release validation I would like to name it as contribute360. I personally take this opportunity once again to thank everyone in and out of BizTalk360 for this wonderful opportunity and believing in us. We are looking forward to much more opportunity.

Feedback portal

>>Which feature would you like to see coming in BizTalk360 in upcoming releases? <<

Now we would like to request you, our customers, to please take the time to fill this questionnaire. This helps us to prioritize the next upcoming feature tasks and will let us know what your main pain points are. This way we can further improve the product and make it a usable as possible for you.

Author: Sivaramakrishnan Arumugam

Sivaramakrishnan is our Support Engineer with quite a few certifications under his belt. He has been instrumental in handling the customer support area. He believes Travelling makes happy of anyone. View all posts by Sivaramakrishnan Arumugam

Monitoring multiple versions of BizTalk Environments using BizTalk360

Monitoring multiple versions of BizTalk Environments using BizTalk360

BizTalk360 is the one-stop monitoring tool for monitoring BizTalk server. It is possible to configure more than one BizTalk environments and monitor them in a single instance of BizTalk360. Recently in BizTalk360 technical product support, we received quite a few tickets regarding the BizTalk Server upgrade process. Some of the customers would like to test if their newly configured BizTalk environment is working as excepted and running without any issues. Also, the customer would like to test the new server using BizTalk360 as they like to monitor in future.

The customer scenario:

Most of the customers have a dedicated BizTalk360 server for their BizTalk environments. The scenario what customer required in the support ticket was to have two different environments configured on the same BizTalk360 machine for some days and then switch them when they go live onto the new environment. They just wanted to check if it is possible to setup two environments on the same BizTalk360 installation. And if possible, they requested us to provide a temporary license for migration.

One of the common queries from the customers is that, is it possible to monitor two different BizTalk environments in a single instance of BizTalk360. For example, the customer would like to monitor the old BizTalk Server 2013R2 environment and new BizTalk Server 2016 environment within a single BizTalk360 installation.

Monitoring multiple versions of BizTalk Environments using BizTalk360

What happens in BizTalk server?

It is not possible to monitor non-identical versions of BizTalk environments like BizTalk Server 2013 R2 and BizTalk Server 2016 within a single BizTalk360 installation. This cannot be achieved even within the BizTalk server. When you try to connect the existing database of BizTalk server 2013 R2 from the BizTalk server 2016, you may face the below exception.

Monitoring multiple versions of BizTalk Environments using BizTalk360

In the above error message, the 5th point explains the current scenario. It says the database is not compatible with the version of BizTalk server currently running. This message clearly tells the mismatch between the different BizTalk versions installed. The database of BizTalk server 2016 would not be compatible with BizTalk server 2013 R2.

At the same time when you connect to the BizTalk server 2013R2, you will not face any problem in connecting to the existing database.

Monitoring multiple versions of BizTalk Environments using BizTalk360

The reason behind this is, when you try to connect the existing database, it will verify the table BizTalkDBVersion in BizTalkMgmtDb database to confirm if the database version and the application version are same. If there is a difference it will throw an exception while connecting.

This is what happens in BizTalk360:

Let’s take a brief look within BizTalk360. During the installation of BizTalk360, one of the primary prerequisites is to install BizTalk Server components on BizTalk360 server. Once after the installation of these components, BizTalk360 installer allows you to proceed the installation on top of it. BizTalk360 directly calls the ExplorerOM to take any action against the BizTalk server artefacts. When you install BizTalk server components inside the BizTalk360 machine it will behave in the same way as the BizTalk server.

When you are trying to add another environment with different BizTalk Server version you will face the same exception and BizTalk360 will convey the exact problem with the below exception message.

Monitoring multiple versions of BizTalk Environments using BizTalk360

When you have multiple environments configured in BizTalk360 and if you are upgrading the BizTalk server, you must upgrade BizTalk servers in all the environments with the same version. If any machine is missed without upgrading, the below exception will appear while launching BizTalk360 UI.

Monitoring multiple versions of BizTalk Environments using BizTalk360

BizTalk360 works with any BizTalk version but it requires the Administration Tools from BizTalk to access the BizTalk API’s and since you cannot install multiple BizTalk version in one server you need to have separate BizTalk360 installations for each BizTalk version that you need to target.

What about the BizTalk admin components:

As mentioned earlier, BizTalk360 contacts BizTalk server through ExplorerOM with the help of the BizTalk admin components installed. Hence when we upgrade the BizTalk server in the server machines, we must also upgrade BizTalk admin components in the BizTalk360 machine. In BizTalk360 database, there are two tables in which the BizTalk version is stored, namely

  • b360_admin_BizTalkEnvironment -> BizTalk Version
  • b360_admin_GlobalProperties -> MS_BIZTALK_VERSION & MS_BIZTALK_INSTALL_LOCATION

So, when the BizTalk server and admin components are upgraded, the above-mentioned values must be changed manually in the BizTalk360 database for the new version to come into effect. The steps to be followed are:

1.We must deactivate the BizTalk360 license.

  1. Then upgrade BTS server & then admin components on the BT360 server (if it is standalone).
  2. Then if we activate BizTalk360 license it should pick up the new BTS version.
  3. Then update the BizTalk server version details in the two BizTalk360 database tables.

Conclusion:

But however, BizTalk360 can monitor multiple BizTalk environments with the same BizTalk server version. Hence, if you want to monitor different BizTalk server versions, there must be different installations of BizTalk360 for each BizTalk version with the respective BizTalk version components installed on the BizTalk360 machine. This way the database incompatibility error will be avoided. But we can monitor multiple BizTalk environments of the same version within the single instance of BizTalk360.

Author: Sivaramakrishnan Arumugam

Sivaramakrishnan is our Support Engineer with quite a few certifications under his belt. He has been instrumental in handling the customer support area. He believes Travelling makes happy of anyone. View all posts by Sivaramakrishnan Arumugam

Can we create Custom widgets with cross domain URL?

Can we create Custom widgets with cross domain URL?

In my previous blog, I spoke about one of the issues we encountered during our support. In this blog, I will specifically be talking about the custom widgets in BizTalk360, which a lot of our customers use to display data that is important to them. Users are able to create custom widgets and associate them with a dashboard. Custom widgets allow integration with BizTalk360’s own API’s, as well as third-party API’s.

The below code in a custom widget shows analytical data in graphical form. In recent times, we received a support case where the customer was trying to create a custom widget referencing the blog. Following should be the result of the custom widget in the dashboard.

Can we create Custom widgets with cross domain URL?

Can we create Custom widgets with cross domain URL?

But the customer ended up with the below error after integrating the custom widget.

Can we create Custom widgets with cross domain URL?

A script for the custom widget:

<script>
//URL used to get JSON Data for the Charts
this.URL = 'http://rawgit.com/cyberkingvb/CustomWidgetWithChart/master/sales2016.json';

//Refresh interval in milliseconds 60000 milliseconds = 60 seconds
this.REFRESH_INTERVAL = 60000;
 
//flag to check if widget should auto Refresh
this.AUTO_REFRESH_ENABLED = true;
 
//Highcharts Options
this.HIGHCHART_OPTIONS = {
            chart: {
                type: 'line',
                zoomType: 'x'
            },
            exporting: {
                enabled: false
            },
            credits: {
                enabled: false,
                title: '',
                style: {
                    display: 'none'
                }
            },
            title: {
                text: 'Sales of 2016'
            },
            xAxis: {
                type: 'datetime'
            },
            yAxis: {
                min:0,
                title: {
                text: 'Units'
                },
            },
            tooltip: {
                crosshairs: true,
                shared: true,
                valueSuffix: 'Units'
            },
            legend: {
                enabled: false
            },
            series: [{
                name: 'Sales',
                data: []
            }]
        };
     
this.widgetDetails = ko.observable();
this.error = ko.observable(null);
var _this = this;
var getdata = function() 
    {
$.getJSON(_this.URL, function (data) 
            {
                _this.HIGHCHART_OPTIONS.series[0].data = data;
                _this.widgetDetails(_this.HIGHCHART_OPTIONS);
            _this.error(null);
            }).fail(function(errorObject,error) 
            {
    console.log(errorObject);
    _this.error(errorObject);
});
    }
 
//loading data for the first time
getdata();
     
//handles auto refresh
if(this.AUTO_REFRESH_ENABLED)
    setInterval(getdata, this.REFRESH_INTERVAL);
     
</script>
 
<!-- ko if: error() == null -->
<div data-bind="highCharts: widgetDetails()" style="height:380px; width:700px"></div>
<!-- /ko -->
 
<!-- ko if: error() != null -->
<div class="row">
  <div class="col-md-offset-4 col-md-4 bg-danger">
    <b>
      <p>Error occured while trying to fetch data </p>
        <span>Status : </span><span data-bind="text:error().status"></span><br>
      <span>Status Text : </span><span data-bind="text:error().statusText"></span>
    </b>
</div>
</div>
<!-- /ko -->

Script Explained

This code consists of 4 configuration variables.

URL

URL variable will allow you configure the API URL from where you fetch the JSON data. Based on the High charts options, the formatting for the data may also change. Here in the above example, the API returns the data as JSON array and date-time stamp as a Unix Timestamp.

AUTO_REFRESH_ENABLED

This flag determines if your widget should be auto-refreshed or not. For instance, if the service call that feeds your chart is very expensive and you don’t want to call that every now and then, then you can probably disable this flag or set the refresh interval to a higher value.

REFRESH_INTERVAL

Refresh interval lets you configure the interval after which the widget data should be refreshed. Note that the interval is in milliseconds. So, if you want it to refresh every one minute then you should set the refresh interval to 60000. Note that for an auto-refresh to work, AUTO_REFRESH_ENABLED flag must be set to true.

HIGHCHART_OPTIONS

BizTalk360 uses High charts for all data analytics. We already have the underlying binding handler framework to apply the options and this makes analytic widget creation a lot easier. To modify the charts, you simply need to update the HIGHCHART_OPTIONS. In this example,

the “data” property inside series array (where the data is supposed to be) is left as an empty array intentionally. It will be filled with the data that is retrieved from the URL that you have specified. High charts support a variety of charts and you can follow this link to get the type of chart that you want to bring into your custom widget.

The line chart that we have created here can be converted into an Area chart or a Column chart by simply changing “type” under “charts” options in HIGHCHART_OPTIONS.

Investigation of the Issue

Initially, we suspected that the customer might not be able to fetch the JSON data using the http://rawgit.com/cyberkingvb/CustomWidgetWithChart/master/sales2016.json URL. When we asked to browse the URL and they could browse and view the results. So, the next step was to isolate the case at the customer end. Whenever such a situation arises we require more information about the customer’s environment, we would go for a web meeting with a screen sharing session. We went for the screen sharing session and we started with the basic troubleshooting steps like checking the configuration, environment etc.

At last, we found that the customer is using https://localhot/biztalk360 and he is trying to monitor http://rawgit.com/cyberkingvb/CustomWidgetWithChart/master/sales2016.json.

Using HTTPS, there is a security code being generated and shared to accept the information between computers. (Say, in client and server architecture). This keeps the information safe from the hackers.

They use the “code” on a Secure Sockets Layer (SSL), sometimes called Transport Layer Security (TLS) to send the information back and forth.

Resolution Provided

When the HTTP is used inside the HTTPS URL, the HTTPS expected a “code” from HTTP. When the response from the widget URL was coming without the code it threw the error message “Access is denied” on the widget.

Hence, It is not possible to create custom widgets with the cross-domain URL. If the HTTPS is used, all the related URL must use the HTTPS.

If you have any questions, contact us at support@biztalk360.com. Also, feel free to leave your feedback in our forum.

Author: Sivaramakrishnan Arumugam

Sivaramakrishnan is our Support Engineer with quite a few certifications under his belt. He has been instrumental in handling the customer support area. He believes Travelling makes happy of anyone. View all posts by Sivaramakrishnan Arumugam

Is Microsoft.BizTalk.Message.Interop.CompressionStreams.dll Missing in BizTalk Server 2016?

Is Microsoft.BizTalk.Message.Interop.CompressionStreams.dll Missing in BizTalk Server 2016?

Every year BizTalk360 releases with 3 or 4 major versions (with few minor patch releases addressing critical bugs) with new key features with every major release. From Version 8.2.2385.2511, we started to support BizTalk Server 2016 RTM. Once after the release, we faced a strange case that the customers were not able to view the Context properties and Message Content in BizTalk360, but the customer is able to view the properties and content in the BizTalk Server Administration Console.

Strange enough, before BizTalk Server 2016 RTM, we were able to view the Content properties and Message content in BizTalk360 with the BizTalk Server customer preview versions. Once after the upgrade to the RTM release, we started to face this case.

From the exception message, we found that some DLL is missing and when we asked to check that dll at the customer’s end, we found that it was missing. Then we proceeded the case on how the DLL was eliminated, we found that the DLL, Microsoft.BizTalk.Message.Interop.CompressionStreams, was removed by BizTalk itself.

Use of Microsoft.BizTalk.Message.Interop.CompressionStreams.dll

Let’s have a look at the use of Microsoft.BizTalk.Message.Interop.CompressionStreams. By default, BizTalk server stores the message body parts in the Parts table and context in the Spool table in the BizTalkMessageBoxDb. The message is inserted in the tables through the bts_InsertMessage Stored Procedure. The values in these columns of the message part and context are respectively encrypted or they might be compressed. The messages stay in the Spool table only while they’re in flight being processed by BizTalk. Then they are removed and optionally moved to the tracking database. If you stop the send port or orchestration that is subscribing to the messages (but leave them enlisted) they will sit on the Spool and Parts tables for you to check them out. There are also a few messages that stay in the Spool table that are for the messaging agent cache and not the usual BizTalk messages.

As the XML is compressed, the clue is to use a Microsoft.BizTalk.Message.Interop.CompressionStreams.Decompress method. From the Microsoft.BizTalk.Pipeline.dll the message body content and context can be retrieved and viewed. The bts_GetTrackedMessageParts stored procedure inside the tracking database expects the message GUID and will return the compressed message data back. We can then use reflection to invoke the Decompress method of the Microsoft.BizTalk.Message.Interop.CompressionStreams class inside Microsoft.BizTalk.Pipeline.dll to decompress the data returned from SQL.

Where the Microsoft.BizTalk.Message.Interop.CompressionStreams.dll went?

When we deeply investigated the case why the DLL is missing, we are able to find that the methods of the Microsoft.BizTalk.Message.Interop.CompressionStreams DLL were moved under Microsoft.BizTalk.StreamProcessing.

Use of Microsoft.BizTalk.StreamProcessing.dll

Stream processing saves programs from having to load data entirely into memory.

Instead, a program gets a hold on a stream instead of the actual data. The program then starts asking the stream to send a chunk of the data. BizTalk implements a forward-only streaming design. Forward-only means that the stream can only be read, and cannot be sought back. Out of the box pipelines are stream-based; they utilize streaming when fetching data from the adapter and as data passes from one stage to another. For example, out-of-the-box components such as the Flat-File Disassembler and the XML Disassembler, are built with streaming in mind.

We changed in the BizTalk360 source code to support BizTalk Server 2016 and refer to Microsoft.BizTalk.StreamProcessing.

If you have any suggestions or feedback, you can write to us at support@biztalk360.com. Have a try at our latest version by downloading a 14-day free trial of BizTalk360.

Read: BizTalk360 Supports for BizTalk Server 2016

Author: Sivaramakrishnan Arumugam

Sivaramakrishnan is our Support Engineer with quite a few certifications under his belt. He has been instrumental in handling the customer support area. He believes Travelling makes happy of anyone. View all posts by Sivaramakrishnan Arumugam

Do’s and Dont’s in Support Call Handling

Do’s and Dont’s in Support Call Handling

For any product, customer support will be considered as the face of the product and company. They deal with the customers and try to solve the problems which customers are facing. As a test and product support engineer of BizTalk360, I would like to share some of my experiences.

Let’s start with a support ticket which I handled and learnt from. A year back we received a support ticket from one of our customers. They were trying to renew their BizTalk360 license, for which they had to send their environment details to issue new license key (for 7.10 version). It’s a very simple process, the customer needs to select the environment and Generate License code using the Generate License Request button. But after selecting the environment, the ‘Generate Request’ button was not enabled. We found that the customer was missing some steps in between the process because the page was not used frequently by customers and at last we helped him to generate new keys after which they upgraded to the latest version (8.0).

Also, read Challenges in BizTalk360 Licensing after Environment Changes.

Issue faced by the customer after upgrade

After the upgrade to the latest version, customers must use the newly provided License keys to activate the environment so that they will be able to use the product. But unfortunately, this customer was stuck in the Settings page, it was loading for hours and no result. This case was very strange to us because we didn’t face the same problem anywhere in our testing although our testing team put lots of efforts in testing migrations. So, we planned to help them immediately by a web meeting, even though it was a Non-production environment.

Once after upgrading to the 8.0 version, we observed that the database table “b360_admin_BizTalkEnvironment” was empty and hence the environment details were not reflected in the BizTalk360 application UI, without which they cannot move forward in the application.
Our foremost task was to make the application up and running so that the customer can explore the new features available. We asked the customer to confirm if they had by any chance deleted/modified the table but he was not sure about it. But we were sure that without any manual changes those data will not get truncated.

Also, read Our experience solving a Culture Variant Issue in BizTalk360.

Approaching the case with the different plans

There were two options available to resolve the case. Plan A was to restore the database and then move on with the upgrade. Plan B was to proceed with the fresh installation, in case if no backup is available. We suggested plan A first, to restore the database if they have taken any backup before the upgrade. If so, we can restore the database and then update to the latest one, so that we can find out the root cause of the problem. But unfortunately, they did not have any backup before the upgrade process and the one they had was very old (taken early in 2014 exactly 3 years old), but they had taken the whole machine backup. With the least hope we requested to restore if possible and closed the call.

What happened during the web meeting?

The next day we received a mail that they were not able to restore the whole server as it contained lot of data and conveyed that they got a backup of BizTalk360 database. So, we thought to get into the call once again with plan A, i.e. to restore the database. We asked them to restore before the call. During the 2nd call we understood that the customer was very frustrated because of the launching issue and they didn’t restore it. Then we came to know that the database backup was the very old one. We conveyed to the customer that the backup will not be useful as it was very old. By this time, the customer got more frustrated as it was very hard to find and get database backup. We have no other go to, so we decided to go with the very old database restore, which took 2:00 hours of time to restore after we found that the database belonged to BizTalk360 7.0.

It took 2:00 hours of time to restore the backup of Database without my involvement and I was there in the call. 🙁

Finally, with the restoration of the database backup, we were now ready to set the application up and running with the following steps:

  • We uninstalled the current version and we installed the version 7.0 with the temporary Database name
  • Deleted the newly created database
  • Renamed the old one with the new name so that UI will be linked to the old database.
  • It helped us to check if BizTalk360 was working properly with that and we found that the environment details were also available
  • Followed by 7.0 we installed 7.2, 7.8 and 8.0 for the proper upgrade and we resolved the problem.

But, the call took 3 hours and 9 minutes exactly, involving one of our Product Leads.

Do’s and Don’ts in Support Call Handling

I was very proud for resolving the case and satisfying the customer who was frustrated due to the long call, and the customer was happy too! Then I came to know what I should and shouldn’t have done in the call.

  • If something needs to be done on customer side, we should give them time to do what they want and should request to complete it – Restoring the database took 2:00 hours of time without my involvement while I was there in the call
  • If anything is not really important and there is less chance to work, we should say directly to the customer – Very old database backup
  • If we are not confident about some suggestions, we should not take the risk. Without knowing which version the old database supports, I restored the old database. At that time, if it did not match with the UI and had some issues, the customer would have got even more frustrated
  • Should always approach the best way – Reinstalling the current version.
  • Should convey the best approach to the customer even though the customer becomes frustrated.

We have taken these points seriously from that day and we do some basic homework before the call, like what need to be discussed and what all the information we need from the customer side. Now this makes our troubleshooting during the web meeting very short and edge, so that saves both customer’s and our time.

You can write to us at support@biztalk360.com or visit our support portal. Have a try at our latest version by downloading a 14-day free trial of BizTalk360.

Author: Sivaramakrishnan Arumugam

Sivaramakrishnan is our Support Engineer with quite a few certifications under his belt. He has been instrumental in handling the customer support area. He believes Travelling makes happy of anyone. View all posts by Sivaramakrishnan Arumugam

Challenges in BizTalk360 Licensing after Environment Changes

Challenges in BizTalk360 Licensing after Environment Changes

In BizTalk360 support, we often face a lot of interesting issues and we thought we would bring out a series to discuss the different cases that come our way and how we dealt with them. A previous blog by my colleague spoke on the Culture variant issue, a very unique case. Recently we came across a very interesting support case.

The customer was not able to view BizTalk applications due to the reason that BizTalk admin group name present in BizTalk360 License information did not match with the customer’s domain BizTalk Administrator’s group.

What happens during the activation of License in BizTalk360?

During the activation of an environment in BizTalk360, BizTalk360 License will fetch the information about BizTalk Admin Group, BizTalk server Management SQL Instance, Management Database name and BizTalk version information from customer’s environment.  These details are stored into BizTalk360 license database and are embedded with the License after activation. If anything has changed at the BizTalk environment level, it will reflect in BizTalk360 UI or in performance.

Say for example: BizTalk servers were removed/added, changing BizTalk Admin Group name, BizTalk Server Management SQL Instance name, Management Database name, upgrading BizTalk server in one machine in multi-server environment., these changes will not be reflected with the BizTalk360 License information that is stored in the License database and hence it will display an exception message in BizTalk360 UI.

license activation/deactivation history

Screenshot of License history from BizTalk360 License application manager

It is always recommended that before making any environment related changes, you need to perform the license deactivation or else to contact our BizTalk360 support team for updating the changes into the License information and also for any guidance required.

Say for example: If the customer was not sure about moving the BizTalk360 database from one server to another server as a part of migration, we request our customers to contact our support team for the guidance.

Prologue to this story

From the BizTalk360 version 8.0 onwards, you will not be allowed to perform any action in BizTalk360 UI without activating the License.

The problem faced by the customer was that the name of the BizTalk Administrator group didn’t match with the information in the license.

  • BizTalk Environment Domain: BT360BizTalk360-SG-Kovai-Biztalk Administrators-Dev,
  • License Key Domain: BT360BizTalk360-SG-?Kovai-Biztalk Administrators-Dev

BizTalk Administrators group has the least privileges necessary to perform most administrative tasks. Members of that group can perform administrative tasks through the BizTalk Administration console or directly using the WMI provider and can deploy solutions, manage applications, and resolve message processing issues. Users will be added into the BizTalk Administrator’s group so that they can perform these administrative tasks.

Customer can change the name of the BizTalk Administrators group from BT360BizTalk360-SG-Kovai-Biztalk Administrators-Dev to BT360BizTalk360-SG-?Kovai-Biztalk Administrators-Dev which may resolve their problem. But, if they make any changes in BizTalk Administrators group, it may affect the BizTalk server process via the users who are added to that group to perform any operations.

biztalk exceptions

Screenshot of the exception from BizTalk360 UI

biztalk exceptions

The exception what the customer exactly faced

We noticed that there was a question mark added in between the domain name and the BizTalk Administrator’s group (Domain: BT360BizTalk360-SG-? -Biztalk Administrators-Dev). The customer conveyed that they worked with the domain admin team and removed the question mark symbol. But we are very sure windows server/operating system doesn’t allow to create a name with ‘?’ question mark while creating the group or a user.

We wanted to investigate within customer environment and so we requested a screen sharing session to see what’s happening and from where the name was taken from. Before going to any customer call, we would prepare a list of questions related to the necessary information we wanted from the customer end and where all we want to check. Also, we will try to reproduce the same at our end.

How did we back track the case?

During the testing, we tried to replicate the same. So we just copied the same BizTalk Administrator’s group ‘BT360BizTalk360-SG- Kovai-Biztalk Administrators-Dev’ name from the exception and created a group in our test machine and we added to BizTalk360. Once after adding as a NT Group in BizTalk360 we found a strange thing it got created with a special character ‘?’ question mark BT360BizTalk360-SG-?Kovai-Biztalk Administrators-Dev. Then we checked by using PowerShell command, found a special character added which was like a mobile phone character.

powershell screen

Screenshot of the BizTalk Admin group by using PowerShell

We asked the customer to change the Group name manually in all places in the database and in Windows Groups as well. But, it still showed the same exception even after the changes made by the customer. We requested for the desktop sharing session and checked all the places where the fault might be. But, we did not get any clue.

The idea was to verify the group name by editing and checking each and every individual character in the name by moving the cursor (that’s how we found special character during the testing). But we were not able to find the special character in the database and in Windows Groups.

Finally, in the properties of BizTalk Groups at BizTalk server we checked the BizTalk Administrator Group by each individual character by moving the cursor and we found the special character was still persisting. We asked the customer to remove the special character. They contacted their admin to change/modify the name, after which the exception was gone. BizTalk360 started working and the customer was able to view the applications without any problem.

What needs to be avoided?

We should try to avoid copy/paste while creating the group/user names most of the time instead type the name manually. Sometimes, while copying from a clipboard and pasting it in a password field may show some mismatch error due to the addition of special characters.

This was a good experience as a support engineer and had a different experience to learn as well.

The post Challenges in BizTalk360 Licensing after Environment Changes appeared first on BizTalk360.