by Mekala Ramesh | Sep 25, 2018 | BizTalk Community Blogs via Syndication
High availability, Multi server, Multi-environment Infrastructure Guide
This article will help you to understand the architecture of the infrastructure details for various scenarios of high availability, multi-server and multiple environments setup.
With regards to High Availability of BizTalk360, there are few parts which can be made Highly Available/Load Balanced:
- The User Interface
- The Windows NT services (Monitoring & Analytics)
- The BizTalk360 database
The User Interface (UI)
The UI, including the REST services, can be made Highly Available by installing BizTalk360 on multiple servers. By putting a software/hardware load balancer (NLB) in front of these BizTalk360 servers, the UI of BizTalk360 can be accessed via the virtual address which is provided by the NLB.
Independently whether one of the BizTalk360 servers is down, you will always be able to access BizTalk360 via the address of the NLB. This is in no way related to the high availability of the BizTalk360 NT services.
The BizTalk360 Windows NT services
Depending on the license tier a company goes for, BizTalk360 comes with the following Windows NT services:
- One for the Monitoring activities
- One for collecting Analytical data (only needed in case of Platinum license)
To split the responsibilities of the NT services, each of these services contains several sub-services. One of these sub-services is used for heartbeat and will be used in case BizTalk360 is installed on multiple servers.

The picture shows the BizTalk360 Monitoring Service, including its sub-services. See below list, for some more explanation about the capabilities:
- Refresh and Restart buttons – With the Refresh button, the status of the Monitoring service and its sub-services are retrieved. The Restart option enables you to restart the Monitoring services. As a result, the sub-services will also be restarted
- Start and Pause buttons – Each sub-service can be Started/Paused individually. By selecting one or more sub-services with the check boxes, you can Start/Pause multiple sub-services at once
- Service Name column – This column shows the name of all sub-services. Based on that, you will understand the responsibilities of each sub-service. As mentioned earlier, the Heart Beat sub-service is one of them
- Polling (Sec) column – Each sub service has its own polling interval, after which the sub-service will do its job. It is not possible to change this interval. In the Last Execution column, the date and time of the last execution of each sub-service is shown
- Current State column – This column shows the actual state of each sub-service. By default, all these sub-services should be Started
- Last Status – This column shows whether the last execution of the sub-service was successful or not
- Exception – In case the last execution was not successful, the exception of the last execution is shown in this column
To make these NT services highly available, BizTalk360 needs to be installed in multiple servers. At these servers, the BizTalk360 NT services must be started. From that moment on, the heartbeat of the services will be monitored cross-wise between the services on the BizTalk360 servers. For each (Monitoring and Analytics) service only one on either BizTalk360 machine can be Active. In other words, this is an Active-Passive configuration. Active-Active is not supported!
Below screenshot shows a configuration in which the BizTalk360 Monitoring service is installed in 2 servers. As you can see, the BTS2016LAB02 server is Active, which means that it is performing the monitoring tasks. The other server, the BTS2016LAB03, is not active. However, this server can be activated by clicking the Activate button.
Again, it is important to remember that although BizTalk360 can be installed on multiple servers, only one of these servers can be Active and performing the monitoring tasks.

In such multi-BizTalk360 server setups, in case the heartbeat sub-service on the Active BizTalk360 machine is not responding, there is automated fail-over of the BizTalk360 NT services taking place. So, the tasks of the BizTalk360 NT services will be performed by the server which was, until then, Passive. Thereby, High Availability is reached.
The BizTalk360 database
For making the BizTalk360 database highly available, you need to use a clustered SQL instance. That could be the same SQL instance as where the BizTalk databases reside, but could also be a separate (clustered) instance.
Different standalone and multi-server scenarios
As BizTalk Server can also be made High Available and Load Balanced, there are quite a lot of different scenarios possible, with respect to the server setup of both products. Let’s have a look at the most common scenarios and see how these scenarios affect the BizTalk360 licensing.
Scenario 1 – Standalone BizTalk server and standalone BizTalk360 server
First scenario, let us see how a simple solution, like having a standalone BizTalk Server and a standalone BizTalk360 environment setup will look like.
Following are the prerequisites:
- 1 x BizTalk Server
- 1 x MS SQL Server
- 1 x BizTalk360 server
- 1 x valid BizTalk360 server license (total BizTalk Server count will be 1 in this scenario)

Scenario 2 – Multiple BizTalk servers and a standalone BizTalk360 server
In our following scenario, we will see how to have multiple BizTalk Servers and a standalone BizTalk360.
Following are the prerequisites:
- 2 x BizTalk Server
- 1 x MS SQL Server
- 1 x BizTalk360 server
- 1 x valid BizTalk360 server license (total BizTalk Server count will be 2 for the BizTalk360 license)

- Though we require one BizTalk360 license, the max server count for the license, should be = 2 as BizTalk360 is licensed per number of BizTalk servers in the BizTalk group
- If both BizTalk servers (BTSRVR1, BTSRVR2) are active, it means that this is a multi-server environment
- If BTSRVR1 is active and BTSRVR2 is passive (or vice versa), then it is High Availability
Scenario 3 – Multiple BizTalk servers and multiple BizTalk360 servers
Below is the diagram that explains how to have a multiple server setup for both BizTalk Server and BizTalk360 servers and its pre-requisites:
- 2 x BizTalk Server
- 1 x MS SQL Server
- 2 x BizTalk360 servers
- 1 x valid BizTalk360 server license (Total BizTalk Server count will be 2 for the BizTalk360 license)

In this scenario, we have used two BizTalk360 servers, pointing to the same BizTalk group, which makes BizTalk360 highly available.
Scenario 4 – 2 multi-server BizTalk groups and multiple BizTalk360 servers
Now, we will see another scenario where we have multiple BizTalk Server environments; both BizTalk Server & BizTalk360 are highly available.
Following are the prerequisites:
- 2 x 2 BizTalk Server
- 2 x MS SQL Server
- 2 x BizTalk360 server
- 2 x valid BizTalk360 licenses (total BizTalk Server count will be 2 for each BizTalk360 license)

As we have seen, there can be several combinations of server setups, and it is purely based on the customer’s requirement and their infrastructural policies. What we explained are 4 various scenarios and their requirements. These are basic setups and the fundamentals will not change, even if you have other scenarios.
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
by Gautam | Sep 24, 2018 | BizTalk Community Blogs via Syndication
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.
by Sandro Pereira | Sep 23, 2018 | BizTalk Community Blogs via Syndication
Last Friday while checking the Twitter I found a twitter from Jon Levesque asking if someone had a sample on how to took SQL data table results and passed a markdown-formatted table into an Approval Request. By coincidence, two week ago, I was helping a colleague of mine doing something similar, in that case, it was just adding a well formatted table with the results of an SQL expression to a notification email. Two different but similar scenarios.
To be able to create this simple proof-of-concept you should:
- Access the Flow portal: https://flow.microsoft.com/ and sign in with your account
- In flow.microsoft.com, select “My flows” in the top navigation bar, and then select “+ Create from blank” to create a Flow from scratch.
- On the “Create a flow from blank”, select “Create from blank” to start the process of creating an empty Flow
Because this is a simple POC and it supposed to be a notification email we will be using the Scheduler trigger to start the Flow from time to time. For that you need:
- On the Flow designer, on the Trigger event enter “Schedule” and select the option “Schedule – Recurrence”

- For this POC, we want to receive a notification on a daily, so on the Schedule Trigger configuration set the:
- “Interval” property as “1”
- And the “Frequency” property has “Day”

- Add the next step by clicking the “+New step” button and then choose the “Add an action” option

- On the “Choose an action” window, enter “SQL Server” and select the action “SQL Server – Execute a SQL query”

| Note: |
| This can be a different action like, get rows or execute a stored procedure. |
-
- After you connect to the proper SQL Server and database, on the Execute a SQL query action configuration:
- On the “query” property, type
SELECT [Id],
[Name],
[Age],
[Nacionality]
FROM [dbo].[Persons]

- Add the next step by clicking the “+New step” button and then choose the “Add an action” option
- On the “Choose an action” window, enter “Variables” and select the action “Variables – Initialize variable”

-
- On the Variable action configuration:
- On the “Name” property, type “lines”
- On the “Type” property, specify the type as “String”
- On the “Value” property leave it blank

| Note: |
| Initialize variable needs to be performed on Top Level, in other words, outside any cycle operation (Do Until or For Each). Initialize variable inside cycles are not permitted. |
- Add the next step by clicking the “+New step” button and then choose the “Add an action” option
- On the “Choose an action” window, enter “Variables” and select the action “Variables – Append to string variable”

-
- On the Variable action configuration:
- On the “Name” property, select “lines” variable
- On the “Value” property type
<tr>
<td style="border:1px solid black; border-collapse: collapse;">@{items('Apply_to_each')?['Name']}</td>
<td style="border:1px solid black; border-collapse: collapse;">@{items('Apply_to_each')?['Nacionality']}</td>
</tr>

| Note: |
| @{items(‘Apply_to_each’)?[‘Name’]} and @{items(‘Apply_to_each’)?[‘Nacionality’]} are inserted and selected from the list of “Execute a SQL query” action tokens |
- Because we can have multiple rows retrieved from SQL Server, the Flow designer will automatically place this “Variable – Append to string variable” inside a Loop that will iterate thru each SQL row.

Now that we have our SQL rows partially well formatted in a markdown-formatted table, what we need to do is create our notification/Approval Request email. To do that we need:
- Add the next step by clicking the “+New step” button and then choose the “Add an action” option
- On the “Choose an action” window, enter “Office 365 Outlook” and select the action “Office 365 Outlook – Send an email”

- On the Office 365 Outlook action configuration:
- On the “To” property, type the email for which you want to send the email
- On the “Subject” property, type the subject of the email
- On the “Body” property, type:
<h1>Summary</h1>
<table style="border:1px solid black; border-collapse: collapse;">
@{variables('lines')}
</table>
by www.devscope.net

| Note: |
| @{variables(‘lines’)} is inserted and selected from the list of “Variables” tokens |
Now the final trick for you to receive this type of email:

instead of this:

On the Office 365 Outlook action configuration you need to:
- Click on “Show advanced options”.

- And on the “Show advanced options”:
- On the “Is HTML” property, select “Yes”

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
by Sandro Pereira | Sep 21, 2018 | BizTalk Community Blogs via Syndication
A funny error I found out on December 4, 2017, that I’m now recovering from my backlog to be published. While trying to repair a BizTalk Server 2016 installation on a virtual machine I got this annoying, funny and strange error: Please insert the disk: 1.
Microsoft BizTalk Server 2016 Installation Wizard
Please insert the disk: 1

and regardless of what I did back then, like running the execution file as an administrator, I was getting this error every time I was trying to repair the BizTalk Server installation.
And what I did back then was:
- Attach the BizTalk Server ISO file in the DVD drive of Virtual Machine that was running in the Hyper-V;
- And execute the installation file from the DVD drive of the VM;
Cause
Unfortunately, this message may appear if you are trying to repair the product from the CD/DVD drive and the reason is not clear for me.
I don’t know if this error occurred by the fact that in the original installation the ISO that was locally on the machine or it is just a coincidence.
Solution
The solution, however, is very simple:
- Copy content of the BizTalk Server 2016 ISO to the local hard drive of the Virtual Machine – but I believe that this can be the same to other BizTalk Server versions;
- And execute from the local Hard Drive the BizTalk Server setup file has an Administrator;
By doing that you will definitely solve the “Please insert the disk: 1” issue and you will be able to repair the existing installation.
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
by Sandro Pereira | Sep 20, 2018 | BizTalk Community Blogs via Syndication
Finally, my latest whitepaper has been published: “BizTalk Server and GDPR“! After doing several GDPR assessments and talked a little about this topic on INTEGRATE 2018 London event I thought this should be the next logical step considering that this is a topic that has worried a lot of BizTalk Server customers, and still worries, and in a more general way all organizations regardless of whether they use or not BizTalk Server.

In a general way, BizTalk Server is GDPR compliant – in fact Microsoft Product group announced in INTEGRATE2018 London Event that one of the features of BizTalk Server 2016 Feature Pack 3 (FP3) was FIPS and GDPR privacy standards compliant, but that was just a marketing strategy since, in its most simplistic form, BizTalk Server is a messaging broker, which doesn’t capture or store any type of data on its system other than for the time needed to complete business processes and to connect and route messages to their target systems. However, because you can process messages and/or communicate with systems that contain sensitive data (personal data) you must have some good practices in BizTalk Server Applications to comply with GDPR. So, in other words, BizTalk Server is GDPR compliant but your BizTalk Applications may not be.
What to expect about BizTalk Server and GDPR whitepaper
BizTalk Server is part of complex enterprise IT environment, we also need to guarantee that these BizTalk Server environments are GDPR compliant. This white paper intends to provide key points on how you can archive and deploy secure integrations in BizTalk Server, and how you can ensure and/or help organizations for this complex middle piece, become GDPR compliant.
This whitepaper will cover the impact of the new regulations and what needs to be done with a focus exclusively on BizTalk Server environments.
Where I can download it
The whitepaper is completely free and you can download it here:
I would like to take this opportunity also to say thanks to Lex Hegt for helping me reviewing this whitepaper especially for the incredible work of him correcting my horrible English and in this way make the document and my thoughts being readable.
I hope you enjoy reading this paper and any comments or suggestions are welcome.
You can also find, download and enjoy several other free whitepapers of my own here:
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
by Praveena Jayanarayanan | Sep 20, 2018 | BizTalk Community Blogs via Syndication
We are super excited to welcome our new release version of BizTalk360, v8.9. There has already been a series of blogs explaining the features coming up in the release. Here is another such blog which explains the enhancements done in the User Access Policy section in v8.9.
User Access Policy is one important feature in BizTalk360, where you can provide access to certain applications in your BizTalk environment to Normal Users and NT groups. This is not available at the BizTalk server level. The importance of this feature can be read here “Why did we build User Access Policy to Manage BizTalk Server Security?
Customer Feedback getting answered
In BizTalk360, we aim at improving the product and adding new features based on the customer feedback and business scenarios. The Feedback portal is one such platform for the customers to provide their suggestions on which can be voted by other customers, if they feel that these ideas fit in their business requirements as well. It’s based on the priority of voting the features and enhancements before getting picked up for development. One such feedback was the access to newly created BizTalk applications.

Hence, in the new release we thought of giving a fresh coat of paint to this feature, based on the feedback we received.
What’s New in User Access Policy
BizTalk360 supports management of multiple BizTalk Server environment from a single console. So, you can set up security and access rights from a single place. You can either configure security for individuals or as team (ex: Create an NT Group called “BizTalk Production Support”).

Now here comes the twist on the Application access. For your information, the rest all remains the same.
In earlier versions, it was a simple grid displaying all the available applications in a BizTalk environment and you can select the applications to provide access to Normal Users/Groups. But now we have slightly modified this, to provide multiple options for providing access to the applications. This would surely be more user friendly and of course meet the requirements. The different options include:
- Grant Access by Applications
- Grant Access to all Applications
- Wildcard Search
- Grant Access to Application Groups

Only one rule can be applied at a time. This holds for both users and groups. We shall have a detailed look at each one of them.
Grant Access to All Applications
As the name denotes, enabling this rule will provide access to all the available applications for the Normal Users/Groups. This will be similar to the permissions of the Super User who will have access to all applications.

Note: The user will automatically be granted access to all the newly created applications. The user doesn’t need to scroll down the complete list, to select the newly created application and provide access. The extra burden to check for the new applications is now reduced.
Wildcard Search
This is the new capability introduced in this release. It enables users to select the options from the wildcard operator drop down.

With the four options that are available in the Wildcard search, the user can select the required option and provide the search value. Once this rule is configured, the user will have access to all the applications matching this wildcard. The user will automatically be given access to the newly created applications that match the wildcard.

This will save a lot of time because in a business scenario, the applications will be named based on specific activity and it would be easy for the admins to select the appropriate wildcard option and provide access. This would be quite interesting and easy option for configuring access to these applications.
Grant Access to Application Groups
We know about the BizTalk Group. But what is this Application Group? Sounds new, isn’t it? Yes, it is new to BizTalk360. With this new capability, you can create Application Groups and map the applications to that group. Once the user is given access to the Application group, he can access all the applications mapped to that group.

The Concept of Application Groups
The Application Group is something new to BizTalk360. We always aim at providing a user interface that must ease the work of the customer, with minimal configuration. You can create a group and map the related applications to that group.

Now, providing access to this application group will automatically enable the users to access the applications which are mapped to that Application Group. This Application Group is only related to BizTalk360 and not to BizTalk itself. When the corresponding Normal User logs in to BizTalk360, his access will be limited to these applications. Only Super Users can view and edit the Application Groups.
The Normal Users/Groups will have access to other modules in BizTalk360, based on the applications only. The concept of Application Groups was created to ease the work of the admins.
It is also possible to view the list of Application Groups created for an environment; editing or deletion them is done by the Super users.

Scenario
Do you know what happens if you try to delete an Application Group that is already given access to a Normal user? It is not possible to delete that Application Group. The exception message would be captured and displayed in the UI.

This way, it would be easy to identify the association between the user and the Application Group.
Would it not be interesting to try this out?
What would happen to existing user configuration?
Now that we know what the different available options are for associating the applications to new users/groups. At this point of time, there must be a question coming up on what would happen to the existing users created when we upgrade from an older version to the new version of BizTalk360.
- Will all that information be lost?
- Do I need to create all the users once again and configure the rules?
- Will the user data not get migrated during the upgrade?
Lot more questions would come up during the upgrade, as this is a critical area of security and there would be different users and groups which are already created and provided access to the applications.
Please don’t panic. As promised, we always take care of your data and configuration and migrate them successfully to the new version. There will not be any data loss.
Yes, your data and configuration are safe and will be migrated successfully during the upgrade. Now, said that the data will be safe, what will happen to the User configuration data after the upgrade? There was no concept of Wildcard or Application group in the previous versions. The only which was available, was to select the applications from the grid and save them.
For persisting the existing configuration data, we have another rule available: ‘Grant Access by Application’. You will probably be happy to hear that!

Once the upgrade is completed, this will be the default rule which is selected for existing users. Once the Super users edits the details for a Normal User, this rule is selected. They can now change the rule configuration as per the requirement.
The only difference between this configuration and the other new rules is that when Grant Access by Applications is configured, newly applications created will not automatically be given access as in the other rules.
Viewing the permitted applications
Once the rule is configured, there is a view option for the admin to verify who have been provided access to which applications. Here is the option that we have given:
A view option has been provided in the User settings screen, which will list all the permitted applications for the users.

By viewing the permitted applications, the Super User can verify if the access to the applications have properly been provided to the Normal users/groups.
Conclusion
With the new look for application access, we are convinced that we brought a great new feature 😊. It will save time for the admins to provide access to users and groups. It will now be easy for users to take care of the newly created applications as well. Once the rule is configured, it is all set and no need to worry about new applications.
Happy monitoring with BizTalk360!
Author: Praveena Jayanarayanan
I am working as Senior Support Engineer at BizTalk360. I always believe in team work leading to success because “We all cannot do everything or solve every issue. ‘It’s impossible’. However, if we each simply do our part, make our own contribution, regardless of how small we may think it is…. together it adds up and great things get accomplished.” View all posts by Praveena Jayanarayanan
by Senthil Palanisamy | Sep 18, 2018 | BizTalk Community Blogs via Syndication
Introduction
In real time scenarios, monitoring all the HTTP endpoints in an environment is a complex process. Constantly monitoring the web endpoints which are running and produce the expected results for each execution is tedious. In a BizTalk environment, the health of Web Endpoints is vital to be able to process the data between multiple applications/partners. BizTalk Administrators manually monitoring the health and results of web endpoints in every execution is a cumbersome process. To overcome this challenge in BizTalk360, Web Endpoint Monitoring is introduced during 7.x version and it is received positive feedback about Web Endpoint Monitoring. We are constantly improving this feature. During 8.1 version, this feature had added functionalities like configuring custom HTTP headers, Payload details and additionally Response configuration like Return Code Alerts, Keyword Alerts, Response Time Alerts for every monitored web endpoint.
Web Endpoint monitoring is important in BizTalk Integration; Based on the feedback’s received, we decided to further improve the web endpoint monitoring to meet their business needs. Most of the customers, who provided feedback, requested to support additional authentication methods in web endpoints like:
- Basic
- SSL client certificate support to Basic & Windows authentication
- Azure Services

Additional Authentication Support
Prior to BizTalk360 version 8.9, Web Endpoint monitoring supported Windows authentication to monitor the endpoints. From 8.9 version on, BizTalk360 Web Endpoint authentication is extended to support:
- Basic Authentication
- Certificate Authentication
- Azure Services Authentication
Below, we have a better look at each of the added authentication methods.
1. Basic Authentication
In the context of an HTTP transaction, Basic Access authentication is a method for an HTTP user agent to provide a user name and password when making a request. To unauthenticated requests, the server should return a response whose header contains a HTTP 401 Unauthorized status and a WWW-Authenticate field. In the BizTalk Admin Console, an HTTP endpoint can provision Basic authentication with a username and password.

2. Certificate Authentication
For monitoring HTTP web endpoints with SSL certificate settings, a client certificate thumbprint is provided in BizTalk HTTP transport properties, along with user name and password. A client-based certificate thumbprint is used to negotiate the server-side certificate.
BizTalk HTTP Transport Properties:

Similarly, In BizTalk360, the authentication type of Basic or Windows along with the client certificate thumbprint is configured in the Authorization section of Web Endpoint monitoring.

Note: Client certificates must be installed in the machines where BizTalk360 Web and Monitoring services reside.
3. Azure Services Authentication
To be able to use Azure Services Authentication, a Service Principal must be configured in Azure.

To be able to use Azure Services Authentication, a Service Principal must be configured in Azure. A Service Principal is an application within Azure Active Directory whose authentication tokens can be used as the client Id, client secret, and tenant fields (the subscription can be independently recovered from your Azure account details). With a Bearer Token being generated, using the Service Principal authentication takes place at the Web Endpoint.
There are two tasks needed to create a Service Principal via the Azure Portal:
- Create an Application in Azure Active Directory (which acts as a Service Principal)
- Grant the Application access to manage resources in your Azure Subscription
You can check how to create service principal in Azure Portal.
Content Type Support
The Content-Type entity header is used to indicate the media type of the resource. In responses, a Content-Type header tells the client what the content type of the returned content is. Browsers will do MIME sniffing, but in some cases, they will not necessarily follow the value of this header. To prevent this behavior, the header X-Content-Type-Options can be set to “nosniff”. In requests, (such as POST or PUT), the client tells the server what type of data is sent.

BizTalk360 8.9 extends the support to additional content types in request and response objects:
- SOAP (1.2) Content Type: “application/soap+XML” is a SOAP 1.2 content type which is added to the list. With this additional content type, SOAP V1.2 protocol is supported in web endpoint monitoring. The user can configure the XPath conditions to monitor the SOAP 1.2 endpoints, based on the results of the execution.
- Custom Content Type: When Endpoint Request/Response content types are not supported by BizTalk360, the Web Endpoint throws a HTTP 415 Unsupported Media Type. To prevent this from happening, you can configure Custom Content types. From the Request/Response content type drop downs, BizTalk360 allows you to select custom content type. When this option is chosen, users can enter Content Types which are not supported by BizTalk360, out-of-the-box, like:
- application/EDI-X12(application)
- text/CSV(Text)
- application/vnd.ms-excel (VDN)
Deprecation of TLS 1.0
The TLS 1.0 encryption protocol can no longer be used for secure communications in most of industries like PCI (Payment Card Industry). All web servers and clients must transition to TLS 1.1 or above. This deprecation will primarily affect non-browser software, APIs, and other internet infrastructure. Older versions of development tools which don’t support TLS 1.2, such as curl, are still widely in use—either directly by developers or as dependencies bundled into other software
BizTalk360 Web Endpoint monitoring throw an error when TLS 1.0 is disabled. From BizTalk360 version 8.9, Web Endpoint monitoring supports the TLS encryption protocol (TLS 1.1 and TLS 1.2), when TLS 1.0 is disabled.
Conclusion
The Web Endpoint monitoring improvements in this version will be helpful to monitor additional web endpoints. BizTalk Administrator/Developers can utilize the powerful Web Endpoint Monitoring feature in BizTalk360 with additional authentication type and content type.
Get started with the free 30 days trial. For any queries/feedback please write to us [email protected].
Author: Senthil Palanisamy
Senthil Palanisamy is the Technical Lead at BizTalk360 having 12 years of experience in Microsoft Technologies. Worked various products across domains like Health Care, Energy and Retail. View all posts by Senthil Palanisamy
by Gautam | Sep 16, 2018 | BizTalk Community Blogs via Syndication
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.
by Sandro Pereira | Sep 13, 2018 | BizTalk Community Blogs via Syndication
Some time ago I wrote a blog post on how to Process Feedback Evaluations (paper) automagically with SmartDocumentor OCR, Logic Apps, Azure Functions and Power BI, at that point there weren’t so many of the functionalities that we have at the moment both on Logic Apps and Microsoft Flow: like concept of variables, Case operations, more expressions an so on. I will not address here in this blog post if can we redesign to be different or better. The question I raise and will address here is: can we do the same with Microsoft Flow, instead of using Logic Apps?
And the reason I ask this question is that Microsoft Flow is more targeted to Business Users which fits perfectly with scenarios in which we want to extend a product to fit each business users’ requirements/scenarios. If you have an Office365 you can use Microsoft Flow and you will have 2,000 runs per month, so you don’t need to pay extra for using Logic Apps, you can instead use Microsoft Flow.
And the answer is: Yes, you can!
The problem and scenario will be exactly the same: How can we easily convert paper in data to generate additional value? How can we perform operations on it and easily gain insights?

But in this case, to solve this problem, in which I wanted to have the evaluations forms to be processed in real-time, i.e., as the attendees handed in the forms, the results were presented in a public Power BI dashboard in a matter of seconds, we will be using:
- DevScope SmartDocumentor OCR that, not also allowed me to extract the data from my documents and easily integrate with other systems, but also to intelligently set my OCR streams (flows), defining:
- Different receive locations, like FTP, file or directly from scanner devices;
- Create/test my recognition templates and review/ validate the data which is gathered;
- But also, enabled me to connect and send the metadata, XML or JSON, through any kind of HTTP service, I could even extend it by using a PowerShell provider that would enable me to execute a PowerShell script.
- Microsoft Flow that allows all type of Business Users to create and automate workflows across multiple applications and services without the need for developer help in a very simple and fast way. These automated workflows are called flows.
- And finally, Power BI to create interactive data visualization (dashboards and reports)

Processing Feedback Evaluations: The solution
SmartDocumentor: to process and extract metadata from paper
Again, I’m not going to explain in details how the solution is implemented inside DevScope’s SmartDocumentor for it is not the point of this article, and if you want to know more about it, you can always contact me. However, let me contextualize you:
- SmartDocumentor OCR flow will be listening in two receive locations: Share Folder and directly from the scanner device;
- After receiving and extract the data from the scanned documents (paper), SmartDocumentor will send the metadata to a Microsoft HTTP endpoint.

- Inside the SmartDocumentor processes, we optional can specify if we want to review the documents – SmartDocumentor Review Station – before you sent to the Microsoft Flow (or any other system).

Power BI to deliver interactive data visualization (dashboards and reports)
Regarding Power BI, Microsoft Flow Power BI connector (is the same of the Logic Apps connector) only accepts you to use streaming datasets (this has advantages and some disadvantages that we will see further on), that allows you to easily build real-time dashboards by pushing data into the REST API endpoint. To create your streaming datasets, you should access to Power BI with your account:
- Select your ‘Workspace à Datasets’, and then on the top right corner click ‘+ Create’ and then ‘Streaming dataset’

- In the ‘New streaming dataset’, select ‘API’ and then click ‘Next’
- In the second ‘New streaming dataset’, give a name to your dataset: “FeedbackForm” and then add the following elements:
- SpeakerName (Text) – represents the name of the speaker that is obtained in the evaluation form according to the session.
- ContentMatureFB (Number) – a value between 1 and 9 that is obtained in the evaluation form
- GoodCommunicatorFB (Number) – a value between 1 and 9 that is obtained in the evaluation form
- EnjoySessionFB (Number) – a value between 1 and 9 that is obtained in the evaluation form
- MetExpectationsFB (Number) – a value between 1 and 9 that is obtained in the evaluation form
- SpeakerAvrg (Number) – A simple average calculation (sum all the above metrics divide by 4)
- WhoAmI (Text) – represents the type of attendee you are (developer, architect, …) that is obtained in the evaluation form
- SpeakerPicture (Text) – picture of the speaker according to the session that is that is obtained in the evaluation form.

- And because we want to create interactive reports in order to have more insights from the event. We need to enable ‘Historic data analysis’ and then click ‘Create’
Unfortunately, streaming dataset is meant to be used for real-time streaming and is a little limited in terms of want we can do with it. For example, it doesn’t allow you to combine different sources, for example, a “table” that can correlate speaker to get their pictures, or to make aggregations of metrics like “Speaker average”. Which means that we need to send all of this information from Microsoft Flow.
Microsoft Flow to create an integration process flow
At the beginning of this article, I told that one of the advantages of Microsoft Flow is that allows Business Users to create and automate workflows across multiple applications and services without the need for developer help. So, for this example, I will try to abstract from the fact that I am a developer and “try” to implement as if I were a business user: no custom code is allowed!
Microsoft Flow it will be the component that will allow us to extend a product (OCR software) that, as all products, are limited to certain features and capabilities to be able to communicate with a huge range of SaaS applications that appear all day on the market.
In order to integrate SmartDocumentor OCR with Power BI, we need to create a Microsoft Flow that:
- Accept a JSON through an HTTP Post. For that, we use a ‘Request – When a HTTP request is received’ trigger.

-
- And, because we do have friendly tokens to access the elements of the message, we will use a sample of the JSON message to be able to generate the correct JSON Schema. For that you should:
- From the trigger configuration box, select the option “Use sample payload to generate schema” and past the above sample:
[
{
“Key”: “RecognitionRating”,
“Value”: “100”
},
{
“Key”: “RecognitionStatus”,
“Value”: “Final”
}
]
-
-
- To generate the JSON schema, click “Done”

- Next, we need to create the following support variables, that we will use to store the data extracted from the SmartDocumentor JSON message – that is a Name/value typed message – to be sent to Power BI dataset:
| Name |
Type |
Initial Value |
| count |
Integer |
0 |
| speakerName |
String |
|
| Picture |
String |
|
| ContentClear |
String |
|
| GoodCommunicator |
String |
|
| EnjoySession |
String |
|
| MetExpectation |
String |
|
| whoAmI |
String |
|
-
- For that, we need to add a ‘+New step’, ‘Add an action’ and then enter Variables’ into the search box. Select “Variables – Initialize variable” from the actions list.

-
- And repeat the same task for all the variables.
Note: Unfortunately, to the date, there is still no way to create multiple variables using a single shape. In my opinion, this could and should be made as a table approach instead of the existing approach.
Now that we have all our variables that we need to store the information that we need to extract from the SmartDocumentor JSON message, we need to start extracting based on the Evaluation form. The first part of the form is: “What session are you evaluating”:

and for us to find out what session is being selected so we can “map” the speaker and picture name we need to look for the keys “S1”, “S2”, “S3” and “S4” and see which on them is filled. To do that we need to:
- Add a ‘+New step’, ‘… More’ and then select ‘Add a switch case’

-
- On the “On” property of the switch condition configuration, select from the list of tokens the “Key” token from the “When a HTTP request is received” trigger

-
- Because this is a Key/Value messages with multiple records, the Flow designer will automatically place this switch condition inside a Loop that will iterate thru each key/value pair.
- In the first case, let rename it ‘Case S1’ branch configuration:
- On the “Equals” property, type “S1”
- And then add a new condition by selecting ‘… More’ and then select ‘Add a condition’
- On the ‘Yes’ branch
- Choose the “Add an action” option and on the “Choose an action” window, enter “Variables” and select the trigger “Variables – Set variable”
- And set the “Picture” variable to the desired value
- Do the same steps this time to set the “speakerName” variable
- Leave the ‘No’ branch as it is

- Add 3 more new Case branches and repeat the same steps, this time configuring the values to look for “S2”, S3” and “S4”.
The second part of the form is: “What is my evaluation”:

To extract this information, and because we already have a Switch case condition in place, what we need to do is:
- Create 4 new different branches in the Switch case condition, one for each question – “Q1”, “Q2”, “Q3” and “Q4” – and then:
- On the “Equals” property, type “Q1”
- And then Choose the “Add an action” option and on the “Choose an action” window, enter “Variables” and select the trigger “Variables – Set variable”
- And set the “ContentClear” variable to the rate provided by selecting from the list of tokens the “Value” token from the “When a HTTP request is received” trigger
- Do the same steps for
- “Q2” to set the variable “GoodCommunicator”
- “Q3” to set the variable “EnjoySession”
- “Q4” to set the variable “MetExpectation”

Finally, the last section is about “Who am I”

This is probably the more complicated section. Here, we basically want to travel from a range of position and if this is selected we append to a string separated by a comma, something like “Developer; Student”. To do that we need to:
- On the Default branch, add a new condition by selecting ‘… More’ and then select ‘Add a condition’
- In the condition expression, select “Edit in advanced mode” and then type the condition to treat the key/name pair if “count” variable is >13 and less or equal with 28
@and(greater(variables('count'), 13),lessOrEquals(variables('count'), 28))

-
- On the ‘Yes’ branch
- We need to check if “tag” is selected or not. If yes set we need to add to the “whoAmI”, otherwise we don’t do nothing. To do that we need an extra if condition: Add a new condition by selecting ‘… More’ and then select ‘Add a condition’
- On “Choose a value” property select the “Key” token from the “When a HTTP request is received” trigger.
- On the condition set “Is not equal to”
- And in the other “Choose a value” property leave it empty

-
-
- However, to set properly the “whoAmI” variable we need another additional condition to check if the “whoAmI” variable is empty or not. If empty set the “whoAmI” variable with the value, otherwise append to the existing value a comma and the new value. To do that we need to:
- Add a new condition by selecting ‘… More’ and then select ‘Add a condition’
- On “Choose a value” property select the “whoAmI” token from the “Variable” context.
- On the condition set “Is not equal to”
- And in the other “Choose a value” property leave it empty
- On the “Yes” condition, choose the “Add an action” option and on the “Choose an action” window, enter “Variables” and select the trigger “Variables – Set variable”
- And set the “whoAmI” variable to the desired value – select the “Key” token from the “When a HTTP request is received” trigger.
- And on the “No” condition, choose the “Add an action” option and on the “Choose an action” window, enter “Variables” and select the trigger “Variables – append to string variable”
- And set the “whoAmI” variable to the desired value – select the “Key” token from the “When a HTTP request is received” trigger.

- Finally, after the Switch case condition, and just before finishing the “Apply to each” cycle
- Choose an action” window, enter “Variables” and select the trigger “Variables – Increment variable”
- On the “Name” property select the “count” variable
- And on the “Value” set as 1

To finalize the entire process, we just need to:
- Calculate the rate average – the sum of all question results divided by the number of questions.
- And send it to Power BI
To accomplished that we need to:
- Add a ‘+New step’, ‘Add an action’ and then enter “Variables” into the search box. Delect the trigger “Variables – Initialize variable”
- On the “Name” property select the “SpeakerAvrg” variable
- On the type property set to be Integer
- And in the Value property, from the context dialogue box, select “Expression” tab and set the following expression:
int(div(add(add(int(variables('ContentClear')), int(variables('GoodCommunicator'))) , add(int(variables('EnjoySession')), int(variables('MetExpectation')))),4))

- In the last step of the Logic App: we push the data into the Power BI streaming dataset created earlier by using the new ‘Power BI’ Connector. To do this we need to:
- Add a ‘+New step’, ‘Add an action’, and then enter ‘Power BI’ into the search box. Select “Add row to streaming dataset” from the actions list.
- Select the name of the workspace and then the name of the streaming dataset
- The next step is to select the Table titled “RealTimeData”
- And finally, map the properties with the different variables tokens has in the picture

Give a proper name to the flow and save it
The end result
After saving the Microsoft Flow and process the Evaluation forms, the result is this beautiful and interactive report that we can present in a monitor during the breaks of our events:

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
by Mekala Ramesh | Sep 12, 2018 | BizTalk Community Blogs via Syndication
Introduction
We are super excited to announce the availability of another interesting improvement in our upcoming version! BizTalk360 will allow you to setup monitoring maintenance, based on the business holidays configured for the environment.
Sometimes, administrators setup the maintenance period during new deployments or installation of security patches in their BizTalk environment. In such situations, to temporarily stop the monitoring in BizTalk360, there is a feature available “Stop Alerts for Maintenance”. Using this capability, the user can set the multiple future maintenance windows to stop false alerts being triggered from BizTalk360. This feature can be found in the Settings area of the application.
Initially, BizTalk360 allowed users to set only a single maintenance window. From v8.8 onwards, users can setup multiple future maintenance windows. So, during these maintenance periods the alarms will be disabled and no notifications will be sent from BizTalk360. At the same time, a maintenance notification will be shown in the Home dashboard and in the Stop Alerts for Maintenance Settings section. Refer to this article, to know more about this enhancement.
What is the new enrichment?
The basic idea here, is that perhaps if a user is able to setup multiple maintenance windows, they need to configure the business holidays individually. It will take much of your time, to configure for every single environment in BizTalk360. To reduce the time and ease the maintenance configuration for the users, the capability to add business holiday calendars has been introduced.

What is a business holiday calendar?
BizTalk360 provides this new capability to configure the business holidays in a calendar. These business holiday calendars can be mapped during maintenance window setup. This new configuration section is introduced in the Monitoring Notification settings section as “Configure Business Holidays”.
Using this intuitive UI, users can configure the business holidays in a calendar and save it for further mapping during the maintenance setup process.

Let’s take an example: as a user, I wanted to configure a calendar for London business holidays. By clicking the “New” button, you can access the screen to configure the business holiday calendar.

After providing the basic details (Holiday Calendar Name, Description, Status), you can configure the dates for the business holiday in the Calendar Configuration part of the screen. For each date selection, a set of text boxes will be generated. The user has the liberty to provide their own text for the selected dates. On the right-hand side of the calendar configuration section, there are two checkboxes. Using these checkboxes, a user can include Saturdays and Sundays in the maintenance window. You can select both options or either one option, based on the business need.

Once the calendar is configured with business holidays, the user can save it for further use. The calendar will be listed in the Manage Business Holiday grid view. At any point in time, a user can add/delete new business holidays to the existing calendar configuration and save it. The changes will be updated automatically and maintenance will happen accordingly.
Preventing the business holiday calendar from accidental deletion
There is a chance that a configured calendar becomes deleted accidentally. The UI is designed in such a way that accidental deletion of calendars which are associated with maintenance windows is prevented. By any chance, if a user tries to delete a calendar which is associated with a maintenance window, a message will be shown in the UI that deletion is prevented.

How to associate the business holiday calendar to maintenance windows?
In the Stop Alerts for Maintenance settings page, A new section is introduced to configure the business holiday calendars. All the configured calendars with Status enabled will be displayed in the “Select Business Holiday Calendar” dropdown list. A user can select the desired calendar and use it for a maintenance window. During the business holiday, a maintenance window will be active.

There is a new tab “Business Holidays” added in the grid section to view the configured business holidays to the calendar.

Excluding alarms during maintenance
wherewith this capability, users can exclude alarms during the maintenance. This means, that, except the selected alarms, other alarms will undergo maintenance.
Scenario: Enable Monitoring for few alarms (for example to monitor system resources) during deployments or security patch updates.
Let’s consider a situation, where administrators have configured critical alarms to monitor the system resources (CPU usage, Memory usage) of their BizTalk Environment in BizTalk360. It is important to monitor these resources in their BizTalk Environment to identify any performance glitches as early as possible to avoid significant business consequences.
In such scenarios, there will be a need to keep those alarms always on. Though the environment is in maintenance mode, if administrators wanted to monitor their system resources, they can make use of this new capability.
This capability is very useful in situations where administrators don’t want to receive alerts during the weekends except for few alarms.

Conclusion
Definitely, these improvements are like icing on the cake to our existing Stop Alerts for Maintenance capability. 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