Visual Studio error: Unable to find transmitPipeline.vstemplate. Please repair the product to fix this issue

Visual Studio error: Unable to find transmitPipeline.vstemplate. Please repair the product to fix this issue

My blog backlog is full of precious things and I stop counting the number of pages I have on my OneNote to be published. Today I randomly selected this Unable to find transmitPipeline.vstemplate error that I got on December 4, 2017, in a client when I try to do something – unfortunately I don’t remember what I was trying to do – on Visual Studio. The full error message was:

Unable to find “C:program Files (x86)Microsoft Visual Studio 14.0Common7IDEItemTemplatesCacheBizTalkPipeline FilesTransmitPipeline.ziptransmitPipeline.vstemplate”.

Please repair the product to fix this issue.

Unable to find transmitPipeline.vstemplate

Cause

Well, I don’t know the exact reasons why this happened or why these files were missing from the development machine.

However, and that is clear from the error message description. The visual studio templates, in this case, the Transmit Pipeline template was missing from the expected directory.

Solution

The easy solution for this problem is quite simple: use the BizTalk Server ISO file to repair the BizTalk Server installation.

This will “install/copy” all the files, including all BizTalk Server visual studio templates to the development machine.

Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a 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. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community. View all posts by Sandro Pereira

Introducing additional column filters capability in BizTalk360

Introducing additional column filters capability in BizTalk360

Introducing new capability “Add/Remove” column headers

Here is another interesting capability, we are transporting in our upcoming version. Tired of filtering data using the static predefined columns? Hereafter, no worries. Grid columns in BizTalk360 are getting a fresh look. You can customize the column headers which are most important to your business scenario.

What is this new implementation?

Grid columns can be dynamically removed or added based on the user preference. As per the settings in the configuration section, columns will be aligned and displayed in the grid view. These customized column settings can be saved for future reference as well. We are sure, this capability will add more value when the administrator is looking for the instances/messages based on various conditions.

As an initial phase, this implementation has been done in the following areas in BizTalk360:

  1. Message Box Queries
  2. Graphical Flow (Tracking)
  3. Electronic Data Interchange

Why we implemented the Additional column filters in BizTalk360?

Let’s take an example. For a healthy working system, all the service instances must complete message processing successfully and clean up periodically. For this, the administrator keeps an eye on the message box queries interface for any instances hanging in error states like suspended (Resumable) and suspended (Non-Resumable). The administrator may look for errors based on specific parameters like Service Instance ID, Service Type ID, URI. In such cases, BizTalk360 has limited static columns (Service Name, Application, Service Class, Status, Creation Time and few more) to fetch and view the information in the Message Box database and for few other features.

We constantly listen to our customers’ feedback and ensure necessary improvements are made in the product regularly. These improvements will ease their day to day operations of their BizTalk Server environment. Therefore, this new capability called “Add/Remove grid columns” is implemented.

Hide or show a column

In the corresponding sections (Message Box Queries, Graphical Flow (Tracking), Electronic Data Interchange) there is a new option introduced “Edit Columns”. Through this, all the possible columns will be listed, which are essential to filter the data. Based on the (de)selection, columns are displayed or removed from the grid view. This functionality enables the user to choose the columns which are required to be shown in the grids.

Additional_Columns_filters_configuration_screen

Filtering context promoted properties made easy

As you all probably know, there are two types of properties in the context of the messages:

  1. MessageDataPropertyBased (Message Properties)
  2. MessageContextPropertyBased (Context Properties)

Basically, to process and track the messages, some properties will be promoted during the transaction. The promotion of the properties varies based on different business scenarios.

Let’s consider a scenario. Suppose a particular message got a huge number of properties promoted and the administrator wanted to narrow down the search in BizTalk360. Until our previous versions that would be a difficult task.

This search is simplified by now by making use of this new capability. You can select the important context promoted properties and save it. This customized setting will be there in the tool until the user prefers to delete the saved query. Following screenshots will provide an insight of how this new feature eases the operation of administrators.

Below screenshot represents the column grid view when the message has quite a number of context promoted properties. Data is accessed and visible, only the column headers are resized.

After executing the query, the result grid shows up, including the context properties. To make the screen more useful, you can select which fields you want to see in the grid and which ones don’t need to be shown.

Below, the configuration screen to select and deselect the columns.

additional column filters capability - Context promoted properties configuration screen

Once the needed fields have been selected in the configuration screen, the grid immediately reflects that configuration.

additional column filters capability - Context promoted properties grid view

How does BizTalk360 save the customized column settings?

BizTalk360 allows saving as many patterns as the user wants. I mean, to search the messages based on different scenarios, admins prefer different filter conditions to validate. In those situations, BizTalk360 allows to save different query filters and keeps them for future use.

Let me give you a detailed example. If you want to search for service instances based only on the applications and Error code, you just select those columns in the configurations screen. This change makes the grid realign based on the selection with applications and error code columns. The second step would be to preserve the selected columns for future reference. To achieve that, you need to save the query. This way, you can retrieve the same query, including the same context properties, in the future.

Easy migration from one environment to another

This is another interesting existing capability, we are having in BizTalk360. As a best practice to protect the production environment, all the data settings and testing are carried out in non-production and UAT environments.

If all the configurations are done in those environments and BizTalk360 is ready to be deployed to the production environment, users don’t need to worry about the recreation of those configurations in the new environment as this is where our import and export capability plays a vital role. Just by the click of a button in the UI, you will be able to export and import all the data between source and destination environment.

Download the customized column data using the Export to Excel capability

This is not a new capability in BizTalk360. As we enhanced, to support the column customization, users can also download this data by using the Export to Excel capability. 

Conclusion

We believe this new capability will provide extensive search ability and get the desired result in a blink of an eye. Happy migrating and try BizTalk360!!!

Get started with the free 30 days trial. For any queries/feedback please write to us [email protected].

Author: Mekala Ramesh

Test Lead at BizTalk360 – Software Testing Engineer having diverse exposure in various features and application testing with a comprehensive understanding of all aspects of SDLC. Strong knowledge to establish the testing process from the scratch. Love to test the software product to deliver it with good quality. Strongly believes on “Testing goes beyond just executing the test protocol”. View all posts by Mekala Ramesh

Backup BizTalk Server job failed. Executed as user NT SERVICESQLSERVERAGENT. Cannot open backup device destination path.

Backup BizTalk Server job failed. Executed as user NT SERVICESQLSERVERAGENT. Cannot open backup device destination path.

Another day, another error to report directly retrieved from my backlog to be published. Today is about another error that can happen on the Backup BizTalk Server job: “Executed as user NT SERVICESQLSERVERAGENT. Cannot open backup device destination pathdatabase name“. I got this error a few months ago in a client while doing an installation assessment:

Executed as user: NT SERVICESQLSERVERAGENT. Cannot open backup device ‘C:Program FilesMicrosoft SQL ServerMSSQL13.BIZTALKMSSQLBackup<destination path>NAME_BAMPrimaryImport_Log_BTS_2017_12_18_15_07_41_447.bak’. Operating system error 123(The filename, directory name, or volume label syntax is incorrect.). [SQLSTATE 42000] (Error 3201) BACKUP LOG is terminating abnormally. [SQLSTATE 42000] (Error 3013). The step failed.

Backup BizTalk Server job: Executed as user NT SERVICESQLSERVERAGENT. Cannot open backup device destination pathdatabase name

This error was occurring on the third step of the Backup BizTalk Server job: MarkAndBackupLog.

Cause

On the third step, MarkAndBackupLog, of the Backup BizTalk Server job, if you check in input parameters of the stored procedure that is invoked there: the “sp_MarkAll” stored procedure. You will find out that the second parameter is the location of backup files and this location must exist in the file system.

The reason for this error to occur may be related for one of these reasons:

  • This step is not properly configured, and you still have “<destination path>” set as the value for the location of backup files – second parameter;
  • Or the folder/path that you define as the location of backup doesn’t exist;

Solution

You must remember that you need to ensure that all the paths specified in the BizTalk jobs must exist in the file system.

But in this case and as you will see in the error description, the backup job was not properly configured and still have “<destination path>” set as the value for the location of backup files.

To solve this problem, you need to:

  • Press the “Windows key” type “SQL Management” or “SQL” and click in “SQL Server Management Studio”.
  • In Object Explorer panel, connect to the SQL Server instance and expand the server tree.
  • Expand the “SQL Server Agent” node
  • Expand the “Jobs” node
  • Double click “Backup BizTalk Server (BizTalkMgmtDb)” to open the job properties window.
  • In the Job Properties – Backup BizTalk Server (BizTalkMgmtDb) dialog box, under “Select a page”, click “Steps”.
  • In the “Job step list”, click on the job you want to edit, in this case, “MarkAndBackupLog”, and then click “Edit”
  • On the “Command” property correctly specify a path for the backup files

Backup BizTalk Server job: Executed as user NT SERVICESQLSERVERAGENT. Cannot open backup device destination path fixed

After I properly configure the job this error was solved and I was successfully able to run the Backup BizTalk Server job.

Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a 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. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community. View all posts by Sandro Pereira

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

BizTalk Mapper Extensions UtilityPack: Convert to a Number Functoid

BizTalk Mapper Extensions UtilityPack: Convert to a Number Functoid

It’s been a while since I don’t make any changes to one of my favorite pet projects: BizTalk Mapper Extensions UtilityPack! Today I’m happy to announce the release of a new BizTalk Functoid: Convert to a Number Functoid.

Note: And it will not be the only one, soon I will release two new Functoids that I’m working on.

Today I was working on a map that I had the need to transform several numbers delivers in a string with a decimal format:

  • 1.000
  • 121.000

to an Oracle NUMBER(x) – without decimals.

Initial, I thought in create a Scripting Functoid and reuse it inside the map for each element. However, I realize that I will have to use the same transformation in different maps… so I end up creating this simple Functoid.

Convert to a Number Functoid

This functoid allows you to convert a string to a number (integer)

Parameters

The functoid takes three mandatory input parameters:

  • The input value to be converted to a number;
    • 1.0000
    • 1.000,00
    • 123,10
  • A character that describes what is the decimal separator (can be empty);
  • A character that describes what is the group separator (can be empty);

The output of the functoid will be a Number (integer), example: 1234

BizTalk-Server-Convert-to-Number-Functoid

In this sample described in the picture above we are receiving a string with a decimal: “1.000” and we want to transform into “1”. So, in this case, the functoid configuration will be:

  • the first input will be our value;
  • the second input will be “.” (dot) that describe the decimal separator;
  • and the third input will be “” (empty) because there isn’t any group separator (delimitator);

BizTalk Mapper Extensions UtilityPack: Project Description

BizTalk Mapper Extensions UtilityPack is a set of libraries with several useful functoids to include and use it in a map, which will provide an extension of BizTalk Mapper capabilities.

Where to download?

You can download this functoid along with all the existing one on the BizTalk Mapper Extensions UtilityPack  here:
BizTalk Server Community Extensions Utility Packs GitHub Repository
GitHub

Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a 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. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community. View all posts by Sandro Pereira

Microsoft Integration Weekly Update: August 27, 2018

Microsoft Integration Weekly Update: August 27, 2018

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

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

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

Feedback

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

Advertisements

BizTalk WCF-ORACLEDB error: This is because either (a) ambient transaction is present and the TNS alias is longer than 39 characters

BizTalk WCF-ORACLEDB error: This is because either (a) ambient transaction is present and the TNS alias is longer than 39 characters

Another day, another error to report – still have plenty of them in my backlog to be published, they are an “easy and quick way” to publish something in my blog when I really don’t have much free time to write something different. Today is about “This is because either (a) ambient transaction is present and the TNS alias is longer than 39 characters” error message that I got when I was initially trying to connect for the first time to ORACLE database to insert some data:

Microsoft.ServiceModel.Channels.Common.MetadataException: Metadata resolution failed for OperationId: “http://Microsoft.LobServices.OracleDB/2007/03/STGADMIN/Table/TRANSACTIONS/Insert”. —> Microsoft.ServiceModel.Channels.Common.ConnectionException: Due to an Oracle Client limitation, the adapter failed to open a connection. This is because either (a) ambient transaction is present and the TNS alias is longer than 39 characters, or (b) ambient transaction is present and a non-TNS based URI was used. To resolve this, use a TNS alias to connect to Oracle and make sure it is not more than 39 characters.

at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)

— End of inner exception stack trace —

Server stack trace:

at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)

at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)

at System.ServiceModel.Channels.ServiceCh.

This is because either (a) ambient transaction is present and the TNS alias is longer than 39 characters

Followed by other similar warning messages:

A message sent to adapter “WCF-Custom” on send port “INSERT_PAYMENTS_WCFORACLE” with URI “oracledb://IP-ADDRESS:PORT-NUMBER/PATH” is suspended.

Error details: Microsoft.ServiceModel.Channels.Common.MetadataException: Metadata resolution failed for OperationId: “http://Microsoft.LobServices.OracleDB/2007/03/STGADMIN/Table/PAYMENTS/Insert”. —> Microsoft.ServiceModel.Channels.Common.ConnectionException: Due to an Oracle Client limitation, the adapter failed to open a connection. This is because either (a) ambient transaction is present and the TNS alias is longer than 39 characters, or (b) ambient transaction is present and a non-TNS based URI was used. To resolve this, use a TNS alias to connect to Oracle and make sure it is not more than 39 characters.

at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)

— End of inner exception stack trace —

Server stack trace:

at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)

at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)

at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)

at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)

Exception rethrown at [0]:

at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)

at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)

MessageId: {DE7ABF70-D6B7-4FC8-A570-5AAE4FFACBB9}

InstanceID: {5842C3C7-6746-4A56-8707-FF53123A4101}

Cause

Non-TNS based URI is not supported under an ambient transaction. If you have to use transactions, you should use the TNS alias.

Note: TNS Alias needs to be less than 39 characters.

Solution

To solve this problem, you need to:

  • Open the send port properties, by double-clicking on the port;
  • Click on “Configure…” button under Transport
  • On the Transport Properties window, select the “Message” tab and then uncheck the “Use Transaction” box under Transactions

This is because either (a) ambient transaction is present and the TNS alias is longer than 39 characters

If you try to resend the message this problem should be solved. Additionally, if this error still persists, you should change the following properties in the oracleDBbinding:

  • “enableBizTalkCompatibilityMode” = True (this is set to false per default)
  • And/or “useAmbientTransaction” = False
Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a 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. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community. View all posts by Sandro Pereira

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

Azure API Management Feature: Application Insights

Azure API Management Feature: Application Insights

By Bill Chesnut

This is the third post in a multi part series on the features of Azure API Management.

As with the previous posts where I demonstrated publishing a SOAP Services with pass-through and SOAP to REST, this time I am going to demonstrate how you can connect Azure API Management to Azure Application Insights, to monitor the call to APIM and the dependent APIs. This post will not go into how or why to use Azure Application Insights, just how to configure APIM to use it.

By connecting APIM to Application Insights, information from APIM sent to Application Insights will include the request and response from APIM, the backend request and response and any Exception information. This will give end-to-end monitoring capabilities to the APIs that are being exposed in APIM if those APIs are also using Application Insights for monitoring.

As with any telemetry gathering system, there are some performance implications, APIM has recently added the ability to control this with a much finer grain as we will see later in the configuration screens.

To get started with Application Insights for APIM, you will need an Application Insights instance, I am not going to cover how to create that in this blog post, but you can find the instructions here: https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-app-insights

Once the Application Insights instance has been created (you can also use an existing instance if you want), lets connect Application Insights to APIM, go to the ‘Application Insights’ tab in the Azure Portal for APIM.

image

Then Click ‘+ Add’

image

Select the instance of Application Insight that you want to configure, optionally add a description and Click ‘Create’

image

You can have multiple instances of Application Insights connected to APIM, now we need to configure how this instance of Application Insights is used, it can be the default for all APIs in APIM or just used for specific APIs, to use it as the default instance, Click ‘APIs’, Click ‘All APIs’, Click Settings and to enable Click the ‘Enable’ check box

image

Configure the destination (instance of Application Insights), Sampling (there are some performance implication with the sampling %, see the this link – https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-app-insights#performance-implications-and-log-sampling ), Always log errors (recommended) and First bytes of body (if necessary).  Click ‘Save’

image

The Advanced Options allow you to control which Request are logged and headers and body logging

image

If you do not want to use the same instance of Application Insights for all APIs, you can select the API and configure Application Insights just like above for the particular APIs

image

Now lets open Application Insights, Click ‘Search’, then in the Search, Click ‘Refresh’, the results are empty since we have not made any calls to the API yet.  If this was an existing instance of Application Insight, there may already be some telemetry from the other services

image

Now lets go back to APIM and run some tests, Select and Operation, enter the required data (in this case, an invalid URL to see the exception processing) and Click ‘Send’

image

The result is a 500 Internal Server Error

image

Switch to Application Insights and Click ‘Refresh’, There is now data in Application Insights, 2 Request, 2 Trace, 1 Exception and 1 Dependency.

image

For this particular API, Application Insights is also setup on the API, so we can have end-to-end Application Insights information. Click on one of the entries to get the details

image

The details for the Request are contained in the view above and you can see the related Application Insights entries on the left and the particular details for the request on the right.  If we want to get more details on the Exception, other than the 500 Response code we see in this entry, click on the Exception entry on the left

image

By configuring Application Insights for APIM, the full end-to-end flow of requests can be seen, the percentage of requests that are captured in Application Insights depends on your sampling, in a Development or Testing environment you can set this to 100% but in Production environments if the APIs are very active this may introduce too much overhead and require a lower sampling rate to prevent performance degradation.

Hopefully this has given you a quick demonstration on how to connect Application Insight to APIM.

Cross Posted on http://www.sixpivot.com.au

BizTalk Administration Console: An internal failure occurred for unknown reasons (WinMgmt) fixed by July 30, 2018 Microsoft Security Updates

BizTalk Administration Console: An internal failure occurred for unknown reasons (WinMgmt) fixed by July 30, 2018 Microsoft Security Updates

Last month I wrote a blog post regarding the “An internal failure occurred for unknown reasons (WinMgmt)” error in the BizTalk Server Administration Console caused by the July 10, 2018 Microsoft Security Updates, you can see the entire blog post here: July 10, 2018 Microsoft Security Updates cause errors on the BizTalk Administration Console: An internal failure occurred for unknown reasons (WinMgmt). In which I document a workaround to solve the following problem:

TITLE: BizTalk Server Administration

——————————

Failed to create a BizTalkDBVersion COM component installed with a BizTalk server.

Class not registered (WinMgmt)

——————————

BUTTONS:

OK

——————————

An internal failure occurred for unknown reasons (WinMgmt)

And based on that you wouldn’t be able for example to: restart the host instances from the BizTalk Server Administration console.

Happy to inform you that Microsoft already released a new security update that will fix this problem.

Cause

As official documentation (https://support.microsoft.com/en-gb/help/4345913/access-denied-errors-after-installing-july-2018-security-rollup-update) state: Applications that rely on .NET Framework to initialize a COM component and that run with restricted permissions may fail to start or run correctly after you install the July 2018 Security and Quality Rollup updates for .NET Framework.

Microsoft .NET Framework runtime uses the process token to determine whether the process is running within an elevated context. These system calls can fail if the required process inspection permissions are not present. This causes an “access denied” error.

After you install any of the July 2018 .NET Framework Security Updates, a COM component fails to load because of “access denied,” “class not registered,” or “internal failure occurred for unknown reasons” errors.

So, the cause of these problems was security updates that were released by Microsoft on July 10, 2018.

Solution

On July 30, 2018 Microsoft released new Security Updates https://www.catalog.update.microsoft.com/Search.aspx?q=4346877 that will fix these issues.

An internal failure occurred for unknown reasons (WinMgmt) fixed

To solve my problem, I:

  • Applied/installed all the possible available updates on my BizTalk Server machine;
  • I manually download and installed the Security Update marked in the picture above;

After I restarted my BizTalk Server machine, this problem was fixed.

Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a 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. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community. View all posts by Sandro Pereira