January 9, 2023 Weekly Update on Microsoft Integration Platform & Azure iPaaS

January 9, 2023 Weekly Update on Microsoft Integration Platform & Azure iPaaS

__CONFIG_colors_palette__{“active_palette”:0,”config”:{“colors”:{“f3080”:{“name”:”Main Accent”,”parent”:-1},”f2bba”:{“name”:”Main Light 10″,”parent”:”f3080″},”trewq”:{“name”:”Main Light 30″,”parent”:”f3080″},”poiuy”:{“name”:”Main Light 80″,”parent”:”f3080″},”f83d7″:{“name”:”Main Light 80″,”parent”:”f3080″},”frty6″:{“name”:”Main Light 45″,”parent”:”f3080″},”flktr”:{“name”:”Main Light 80″,”parent”:”f3080″}},”gradients”:[]},”palettes”:[{“name”:”Default”,”value”:{“colors”:{“f3080”:{“val”:”rgb(23, 23, 22)”,”hsl”:{“h”:60,”s”:0.02,”l”:0.09}},”f2bba”:{“val”:”rgba(23, 23, 22, 0.5)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.5}},”trewq”:{“val”:”rgba(23, 23, 22, 0.7)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.7}},”poiuy”:{“val”:”rgba(23, 23, 22, 0.35)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.35}},”f83d7″:{“val”:”rgba(23, 23, 22, 0.4)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.4}},”frty6″:{“val”:”rgba(23, 23, 22, 0.2)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.2}},”flktr”:{“val”:”rgba(23, 23, 22, 0.8)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.8}}},”gradients”:[]},”original”:{“colors”:{“f3080”:{“val”:”rgb(23, 23, 22)”,”hsl”:{“h”:60,”s”:0.02,”l”:0.09}},”f2bba”:{“val”:”rgba(23, 23, 22, 0.5)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.5}},”trewq”:{“val”:”rgba(23, 23, 22, 0.7)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.7}},”poiuy”:{“val”:”rgba(23, 23, 22, 0.35)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.35}},”f83d7″:{“val”:”rgba(23, 23, 22, 0.4)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.4}},”frty6″:{“val”:”rgba(23, 23, 22, 0.2)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.2}},”flktr”:{“val”:”rgba(23, 23, 22, 0.8)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.8}}},”gradients”:[]}}]}__CONFIG_colors_palette__

Azure Logic Apps Standard REST APIs (Part I)

Azure Logic Apps Standard REST APIs (Part I)

You may know, and many of you may be familiar with Logic Apps REST APIs that are very well documented by Microsoft here: Azure Logic Apps. However, for those who didn’t know about this, I recommend you to look. They may be handy in specific scenarios. One of these cases is the strategy I documented to get the error message from a particular fail inside Logic App Consumption. You can read more about it here: How to get the Error Message with Logic App Try-Catch (Part II) – Using an Azure Function.

Another great thing about this Microsoft documentation is the availability to try these REST APIs directly from the documentation page!

But there is one major problem! These REST APIs can be applied only to Logic Apps Consumption. There isn’t any REST APIs documentation available for Logic Apps Standard… and yes, they are different. There isn’t until now!

We are going to use the following workflow to test these APIs:

Of course, this is a very simple sample just to demonstrate the APIs.

REST Operation Groups

Like Logic Apps Consumption, Logic App Standard REST APIs are organized in these REST Operation Groups:

  • Workflow Run Actions: Lists workflow run actions.
  • Workflow Runs: Provides operations for listing and canceling workflow runs.
  • Workflow Trigger Histories: Lists workflow trigger histories.
  • Workflow Triggers: Provides operations for listing and running workflow triggers.
  • Workflow Versions: Lists workflow versions.
  • Workflows: Provides operations for creating and managing workflows.

Today we are going to address the first Operation Group: Workflow Run Actions.

Workflow Run Actions

These are the available operations:

  • Get: Gets the history of a specific workflow run action.
  • List: Gets the list history of all workflow run actions.
  • List Expression Traces: Lists a workflow run expression trace.

This list may change since this is not the official list, and many things under the hood are different from Consumption to Standard.

Get

Request URL:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{logicAppStdName}/hostruntime/runtime/webhooks/workflow/api/management/workflows/{workflowName}/runs/{runId}/actions/{actionName}?api-version=2018-11-01

URI Parameters:

Name In Required Type Description
subscriptionId path True string The subscription id.
resourceGroupName path True string The resource group name.
logicAppStdName path True string The Logic App Standard name.
workflowName path True string The workflow name.
runId path True string The workflow run id (name).
actionName path True string The workflow action name.
api-version query True string The API version.

Response:

Sample Request:

https://management.azure.com/subscriptions/xxxxxxxx/resourceGroups/RG-SPMSDN-LASTD-POC/providers/Microsoft.Web/sites/LASTD-SPMSDN-EAI-POC/hostruntime/runtime/webhooks/workflow/api/management/workflows/DemoHTTP/runs/08585286433641737811956886654CU00/actions/Initialize_variable?api-version=2018-11-01

Sample Response:

Status Code: 200

{
    "properties": {
        "inputsLink": {
            "uri": "https://lastd-spmsdn-eai-poc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/77611e515f054951b892c7da37d37e8c/runs/08585286433641737811956886654CU00/actions/Initialize_variable/contents/ActionInputs?api-version=2018-11-01&code=xxxxxxx%3d%3d&se=2023-01-06T04%3A00%3A00.0000000Z&sp=%2Fruns%2F08585286433641737811956886654CU00%2Factions%2FInitialize_variable%2Fcontents%2FActionInputs%2Fread&sv=1.0&sig=xxxxxxxxx",
            "contentSize": 69
        },
        "startTime": "2023-01-06T00:05:22.8183475Z",
        "endTime": "2023-01-06T00:05:23.4705888Z",
        "correlation": {
            "actionTrackingId": "b8af094f-acd0-48ad-9d08-acee1d10360b",
            "clientTrackingId": "08585286433641737811956886654CU00"
        },
        "status": "Succeeded",
        "code": "NotSpecified"
    },
    "id": "/workflows/DemoHTTP/runs/08585286433641737811956886654CU00/actions/Initialize_variable",
    "name": "Initialize_variable",
    "type": "workflows/runs/actions"
}

List

Request URL:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{logicAppStdName}/hostruntime/runtime/webhooks/workflow/api/management/workflows/{workflowName}/runs/{runId}/actions?api-version=2018-11-01

URI Parameters:

Name In Required Type Description
subscriptionId path True string The subscription id.
resourceGroupName path True string The resource group name.
logicAppStdName path True string The Logic App Standard name.
workflowName path True string The workflow name.
runId path True string The workflow run id (name).
api-version query True string The API version.
$filter query False string The filter to apply on the operation. Options for filters include: Status.
$top query False integer
int32
The number of items to be included in the result.

Response:

Sample Request:

https://management.azure.com/subscriptions/xxxxxxxx/resourceGroups/RG-SPMSDN-LASTD-POC/providers/Microsoft.Web/sites/LASTD-SPMSDN-EAI-POC/hostruntime/runtime/webhooks/workflow/api/management/workflows/DemoHTTP/runs/08585286433641737811956886654CU00/actions?api-version=2018-11-01

Sample Response:

Status Code: 200

{
    "value": [
        {
            "properties": {
                "inputsLink": {
                    "uri": "https://lastd-spmsdn-eai-poc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/77611e515f054951b892c7da37d37e8c/runs/08585286433641737811956886654CU00/actions/Initialize_variable/contents/ActionInputs?api-version=2018-11-01&code=xxxxx%3d%3d&se=2023-01-06T04%3A00%3A00.0000000Z&sp=%2Fruns%2F08585286433641737811956886654CU00%2Factions%2FInitialize_variable%2Fcontents%2FActionInputs%2Fread&sv=1.0&sig=xxxxxx",
                    "contentSize": 69
                },
                "startTime": "2023-01-06T00:05:22.8183475Z",
                "endTime": "2023-01-06T00:05:23.4705888Z",
                "correlation": {
                    "actionTrackingId": "b8af094f-acd0-48ad-9d08-acee1d10360b",
                    "clientTrackingId": "08585286433641737811956886654CU00"
                },
                "status": "Succeeded",
                "code": "NotSpecified"
            },
            "id": "/workflows/DemoHTTP/runs/08585286433641737811956886654CU00/actions/Initialize_variable",
            "name": "Initialize_variable",
            "type": "workflows/runs/actions"
        },
        {
            "properties": {
                "inputsLink": {
                    "uri": "https://lastd-spmsdn-eai-poc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/77611e515f054951b892c7da37d37e8c/runs/08585286433641737811956886654CU00/actions/Response/contents/ActionInputs?api-version=2018-11-01&code=xxxxx%3d%3d&se=2023-01-06T04%3A00%3A00.0000000Z&sp=%2Fruns%2F08585286433641737811956886654CU00%2Factions%2FResponse%2Fcontents%2FActionInputs%2Fread&sv=1.0&sig=xxxxx",
                    "contentSize": 46
                },
                "outputsLink": {
                    "uri": "https://lastd-spmsdn-eai-poc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/77611e515f054951b892c7da37d37e8c/runs/08585286433641737811956886654CU00/actions/Response/contents/ActionOutputs?api-version=2018-11-01&code=xxxxx%3d%3d&se=2023-01-06T04%3A00%3A00.0000000Z&sp=%2Fruns%2F08585286433641737811956886654CU00%2Factions%2FResponse%2Fcontents%2FActionOutputs%2Fread&sv=1.0&sig=xxxxxx",
                    "contentSize": 46
                },
                "startTime": "2023-01-06T00:05:23.6343337Z",
                "endTime": "2023-01-06T00:05:23.7654387Z",
                "correlation": {
                    "actionTrackingId": "9fc1530d-a50e-450b-9792-e785462ebfba",
                    "clientTrackingId": "08585286433641737811956886654CU00"
                },
                "status": "Succeeded",
                "code": "OK"
            },
            "id": "/workflows/DemoHTTP/runs/08585286433641737811956886654CU00/actions/Response",
            "name": "Response",
            "type": "workflows/runs/actions"
        }
    ]
}

List Expression Traces

Request URL:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{logicAppStdName}/hostruntime/runtime/webhooks/workflow/api/management/workflows/{workflowName}/runs/{runId}/actions/{actionName}/listExpressionTraces?api-version=2018-11-01

URI Parameters:

Name In Required Type Description
subscriptionId path True string The subscription id.
resourceGroupName path True string The resource group name.
logicAppStdName path True string The Logic App Standard name.
workflowName path True string The workflow name.
runId path True string The workflow run id (name).
actionName path True string The workflow action name.
api-version query True string The API version.

Response:

Note: I wasn’t able to successfully test this API. But I assume it will exist.

Stay tuned for the next Operation Group: Workflow Runs.

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

Notes From The Road: 2022 Year In Review

Notes From The Road: 2022 Year In Review

2022… back to normality! Yes and no, nothing will be the same as it was before the COVID-19 pandemic. The pandemic brought many bad things, that we all know, but like everything, there are always two sides to the coin. The reality is that the pandemic forced us to change our existing living style, and with that came also good stuff like remote work (for good) and more freedom of working hours… but yes, it was a year that we recovered more and more our life normality and freedom.

It was a year that I returned to perform live events… especially at my favorite event: INTEGRATE 2022 London + Remote! (I say this without discrediting all the other events, I like them all, but this one I helped create from day one 11/12 years ago!)

and see so many friends I made during these years!

It was also the year I released my SECOND book! This time alongside my dear friends Tom Canter and Lex Hegt: Migrating to BizTalk Server 2020

And was a year, I decided to do more online training courses about Microsoft Enterprise Integration, which means:

  • BizTalk Server on Administration or development topics
  • and Azure Integrations Services (Logic Apps Standard and Consumption, API Management, Azure Service Bus, and Functions)

One of these examples is this short and intense BizTalk Server training course that I do alongside my friends Stephen W. Thomas and Lex Hegt.

My Blog has still solid numbers and growing every year…

The numbers of my blog kept solid in terms of visitors and new content, and 2022 was again a very productive year:

  • Publish 70 new posts on my blog;
    • More than 364,107 visits to my blog.
    • Coming from 212 countries across the world in the past year (and more than 15,191 cities).
      • And the countries that most visited my blog are once again the top 3 maintains unchanged: the United States, followed by India, the United Kingdom, and, this time, Canada got the fourth position.
      • In terms of cities, Hyderabad got the first position followed closely by London and Bengaluru.

For me, this is amazing considering the fact I decided this year to do different things, so I dedicate 70% of my community time to doing other stuff them my blog, something that I never did on this scale during these 12 years. And if we compare it to the previous years… not bad indeed:

  • 2021: 375,328 visits, 210 countries, 77 new posts
  • 2020: 392,535 visits, 214 countries, 92 new posts
  • 2019: 431,000 visits, 207countries, 43 new posts
  • 2018: 246,381 visits, 194 countries, 70 new posts
  • 2017: 210,000 visits, 167 countries, 63 new posts (migrate to a new blog)
  • 2016: 318,576 visits, 190 countries, 50 new posts
  • 2015: 350,000 visits, 184 countries, 79 new posts
  • 2014: 310,000 visits, 183 countries, 52 new posts
  • 2013: 200,000 visits, 176 countries, 79 new posts
  • 2012: 170,000 visits, 171 countries, 102 new posts
  • 2011: 91,000 visits, 61 new posts

I want to say thanks to all my readers. I appreciate all the visits to my blog, and thanks for your support.

Attractions in 2022

I’m always surprised by this analysis because my estimates never come out right to what the community consumes but I always like to do this. So, these are the top 10 posts that got the most views in 2022:

  1. Microsoft Integration and Azure Stencils Pack for Visio: New Azure and Dataverse Logos with 14,482 views – note to myself to do more Dynamics 365-oriented posts!
  2. A fish out of water: How to Add connector points on Visio Stencils with 12,621 views – this is for all my friends who make fun of me for writing from time to time about Visio (I’ve been a proud Visio MVP for a year)
  3. SQL Server detected a logical consistency-based I/O error: incorrect pageid in BizTalkMsgBoxDb database with 11,574 views
  4. Logic Apps: How to send a well-formatted HTML Email notification with Office 365 Outlook connector with 10,297 views – this is already a classic one, and I definitely need to come back to this topic!
  5. A fish out of water: PowerShell – The term ‘Invoke-Sqlcmd’ is not recognized as the name of a cmdlet, function, script file, or operable program. with 7,121 views
  6. Azure Breakthroughs: Finding the Azure VM administrator username with 7,121 views – This is a timesaver tip!
  7. The job failed. Unable to determine if the owner (domainusername) of job job-name has server access (reason: Could not obtain information about Windows NT group/user) with 6,890 views
  8. Note to myself: How to perform a CTRL+ALT+DEL inside an Azure Virtual Machine? with 6,357 views
  9. The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security with 5,627 views
  10. Power Automate Best practices, Tips and Tricks: #6 Error handling… configure run after settings with 5,425 views – The only blog from 2022 on the top 10!

And these are some of my 2022 favorite posts:

My 2022 Contributions

I mentioned before that I dedicate 70% of my community time doing other stuff them my blog, but in reality, I spend that amount of time doing different things than the previous years. That means I dedicate less time writing in my blog and doing online events, just to refresh a little… don’t get me wrong I love doing events, but after 21 virtual sessions last year, I was a little tired. So I focus more on writing whitepapers and outside my blog and getting back to code and providing a lot of resources.

More Open Source Contributions…

Continue to improve the existing GitHub contributions and add new ones. Here are some samples:

More whitepapers…

I was able to publish 10 whitepapers:

Don’t forget that I also publish a new book!

Posting outside my blog…

This year, was also the year that I start publishing more blogs and more constantly on other sites, and on that my major partner in crime is Saravana Kumar:

  • Publish 19 guest blog posts on Serveless360 about Azure Integration Services on topics like Logic Apps, API Management, Azure App Configuration, and Power Automate.
  • Publish 20 guest blog posts on BizTalk360 about BizTalk Server.

Speaking engagements…

However, that is not all! I still was able to deliver 21 virtual sessions in several conferences and User Groups worldwide on topics like BizTalk Server, Logic Apps, and Power Automate:

  • M365 Below in Chicago! | January 14, 2022 | Power Automation: A new set of Best practices, tips and tricks
  • Global Automation Bootcamp | February 4, 2022 | How to monitor your integrations solutions with Automation Account
  • Azure Integration Bootcamp | February 5, 2022 | Logic Apps: New set of Best practices, Tips and Tricks
  • Global Power Platform Bootcamp 2022 – Münsterland | February 19, 2022 | How to create robust monitor solutions PowerShell, Azure Functions & Power Automate
  • aMS Lausanne 2022 | April 19, 2022 | LogicApps: New set of Best practices, Tips and Tricks
  • Microsoft 365 Virtual Marathon | May 4, 2022 | Power Automation: Best practices, tips and tricks
  • Global Azure 2022 – Spain | May 6, 2022 | Logic Apps: New set of Best practices, Tips and Tricks
  • Global Azure Bootcamp 2022 Lüdinghausen | May 7, 2022 | Logic Apps: New set of Best practices, Tips and Trick
  • INTEGRATE 2022 | June 13-15, 2022 | Building Hybrid Integration Solutions with BizTalk Server
  • CONNECTED Conference 2022 | November 11, 2022 | Logic Apps: The good, the bad and the ugly
  • Porto.Data | December 20, 2022 | Logic Apps: Error Handling

For all of you…

Once again, thanks for following me, and for reading my blog, and I promise that I will continue to share my knowledge during 2023.

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

What makes BizTalk360 the best BizTalk Server Monitoring tool?

What makes BizTalk360 the best BizTalk Server Monitoring tool?

Key takeaways from this blog

  • Introduction
  • BizTalk Server Monitoring tools
  • Azure Serverless Monitoring
  • Pricing Structure of BizTalk360
  • If everything is a peaceful and relaxing environment, then something is wrong

Introduction to BizTalk360 

BizTalk360 has been around for more than a decade in the field of BizTalk Server Administration and Monitoring. This blog shows users how they can streamline their day-to-day monitoring. Besides providing full coverage of your BizTalk Server Monitoring, BizTalk360 also fulfils many other functions. Let us see this in detail.

BizTalk Server Monitoring tools

In this section, you can get a deeper understanding of what you can monitor with BizTalk360.

  • Application and artifacts monitoring
  • Host Instance Monitoring
  • Host Throttling
  • EDI (Electronic Data Interchange) Agreement Monitoring
  • Database size
  • Event Log Monitoring
  • Event Log Data Monitoring
  • File Location Monitoring
  • Queue Monitoring
  • BizTalk & SQL Server Monitoring
  • SQL Job Monitoring

Application and artifacts monitoring

BizTalk360 automatically shows the applications that are deployed in the BizTalk Server environment at hand. All state-based applications artifacts can be monitored, including:

  • Orchestrations
  • Receive locations
  • Send ports
  • Send port groups

Users can set the expected state of those artifacts. When there is a mismatch between the actual and the expected state, BizTalk360 sends you an email, or a notification to any of the systems such as:

  • Microsoft Teams
  • Slack
  • ServiceNow
  • PowerShell
  • Webhook
  • Twilio
  • PagerDuty

Host Instance Monitoring

In BizTalk, messages can only be processed when the host instance is running. BizTalk360 allows users to manage and monitor BizTalk Host Instances. Additionally, BizTalk360 can also monitor clustered host instances. To learn more about clustered host instances, follow the link.

Host Throttling

Microsoft does not provide any tool to understand whether your BizTalk environment is working efficiently or under throttling conditions. It is typical for administrators to use Windows Perfmon to add all the performance counters associated with throttling and then analyse throttling conditions. This requires extensive knowledge of how the BizTalk Server works, various throttling counters & conditions, whether it is running at an optimum level, etc.

Setting up Host Throttling monitoring in BizTalk360 is just a 5-minute process, where users can monitor the following:

  • Rate throttling
  • Process memory
  • System memory
  • Database size
  • Database session
  • Thread count
  • User override

EDI agreement monitoring

Any business trading partners commonly exchange data electronically through EDI. For successful transactions, it is important to maintain the agreement state. Via BizTalk360, users can monitor the states of EDI Agreements.


Database size

For a healthy BizTalk environment, it is essential to monitor the growth of the BizTalk databases. With the Database size monitoring feature, users can monitor the database and log the file size of the BizTalk and BizTalk360 databases. Follow the link to learn more!

Event log monitoring

What happens when your Windows server gets booted without your knowledge? It may be a good idea for users to check if everything is still in good shape. Without a monitoring product, it requires manual intervention to be aware of the reboot. Wouldn’t it be more convenient if there was a tool to monitor your Event log entries?

BizTalk360 comes with a feature named Event log monitoring that enables users to be alerted about specific events being written to event logs in your BizTalk or SQL servers.

There is also another type of monitoring, which is Event Log Data Monitoring where users can configure a specific value based on conditions. Follow the link to know more.

Before moving on to the next topic, it is helpful to know the difference between Event Log and Event Log Data Monitoring. Let us say you have multiple BizTalk servers and want to correlate and monitor event IDs. In such a scenario, Event Log Data Monitoring will be helpful whereas, in Event Log Monitoring, you need to create two event logs to monitor different event IDs.

Event Log Data Monitoring

BizTalk administrators look first for the Event Logs when something unexpected happens since the Event Viewer contains the exact error information. Logging in each time to the BizTalk and SQL servers to check the event logs would be cumbersome. When BizTalk360 event log data monitoring is enabled, it is easy to check for event logs. You can get the log message count as well as event log message information in the alert email.

Wouldn’t it be helpful if we see all this information in one place? Yes, BizTalk360 provides you with this option where data can be filtered with more options and conditions. An additional filtering option is that the event logs can be filtered based on multiple event ids.

File Location monitoring

BizTalk360 lists all the locations configured in the BizTalk artifacts (Send Ports and Receive Locations) for the Transport types (File, FTP, SFTP) respectively, which helps users to monitor all the File Locations mapped with Receive Locations/Send Ports.

Queue Monitoring

BizTalk360 monitors the health of the IBMMQ and MSMQ along with other parameters, including Queue Size, Active Messages, Dead Letter messages, and Journal Messages. Monitor your local and remote queues and set threshold conditions to get notified of any violations.

SQL Jobs Monitoring

BizTalk Server heavily relies on SQL Server databases. The health of these databases is crucial for the health of the BizTalk Server. Out of the box, BizTalk Server comes with several SQL Server jobs that perform all kinds of maintenance tasks, thereby contributing to the health of those databases. BizTalk360 allows you to monitor those SQL Jobs.

BizTalk & SQL Server monitoring

This feature helps the users to monitor the availability of

  • Disk space
  • CPU and Memory usage
  • Event Log entries
  • Windows NT Services

Azure Serverless Monitoring

To support hybrid integrations, BizTalk360 becomes aligned by supporting Azure Serverless technologies. Hereby, the product prevents you from switching between BizTalk360 and the Azure portal. Let’s see what Azure Services can be monitored by BizTalk360:

  • Azure Logic Apps
  • Azure API (Application Programming Interface) Apps

Azure Logic Apps

With BizTalk360, Logic Apps can be monitored and ensure they are running correctly. You will gain deeper insight into when the expected number of runs is met and the number of failures that occur.

Azure API apps

Users can monitor the health of their API apps and the configured endpoints. Monitoring API apps includes endpoints and provides a seamless monitoring experience.

Azure Service Bus Queue monitoring

Azure Service Bus allows applications and services to communicate with other applications in the cloud, on-premises, or both and ensures message exchange occurs smoothly. With BizTalk360, configure alarms for various parameters like

  • Queue Size
  • Status
  • Messages
  • Active Messages
  • Scheduled Messages
  • Transfer Messages
  • Dead letter Messages

Auto Correct

Administrators can set up monitoring on “State-based” artifacts and let the monitoring service automatically heal the artifact at any time. For example, administrators can monitor the receive locations of applications and set up auto correct functionality for the Expected state of the artifact. Whenever the receive location goes down or gets disabled, there will be a mismatch and the auto correct will try to bring the artifact back to the Expected state within the next monitoring service cycle. The feature applies to the following artifacts:

  • Send ports
  • Send port groups
  • Receive locations
  • Orchestrations
  • Host Instances
  • NT Services
  • SQL jobs
  • Logic Apps
  • EDI Agreements

Pricing Structure of BizTalk360

There are one-year and three-year subscription options available for BizTalk360. Depending on the number of BizTalk servers in the BizTalk group, the BizTalk edition (Standard or Enterprise), and the BizTalk360 feature-based license tier (Silver, Gold, Platinum), users will pay a different license fee. A license comes with unlimited users and unlimited customer support, also users can customize their license according to business requirements. A free trial is also available.

If everything is a peaceful and relaxing environment, then something is wrong

The BizTalk360 team is always there for customers when they need Product support. They frequently reach out to each customer, to update them on the latest release, and to make sure they are using the product to the fullest.

Ask for Support

When setting up BizTalk360 monitoring, you are not alone. Whenever you have a problem, the BizTalk360 technical support team is there to help. They are knowledgeable about the product and can share their experiences with other customers as well. Directly ask them to review your setup before it fails, and you find out it was set up incorrectly.

Documentation Help

It is crucial to document exactly how users have set up their business requirements and assist team members in the future. In BizTalk360, users can easily locate any information they need through the documentation portal.

Demo & Free Trial

Currently the product contains over 80 features, but Product Consultant team of BizTalk360 provides a fully customized product demo based on business needs, so please do contact the support team without any obligation. Users can either request a demo or take a free trial.

  • Introduction
  • BizTalk Server Monitoring tools
  • Azure Serverless Monitoring
  • Pricing Structure of BizTalk360
  • If everything is a peaceful and relaxing environment, then something is wrong

Why is BizTalk360 needed more than ever before? Interview with Lex Hegt, Lead Product Consultant

Introduction 

After twelve years of working as a BizTalk Server consultant in The Netherlands and working with BizTalk360 at his customers, Lex Hegt joined Kovai.co/BizTalk360 in 2016. We interviewed Lex about the life cycle of the BizTalk Server and why BizTalk360 is needed more than ever.  

Do you think Microsoft BizTalk Server 2020 is a game-changer? 

Yeah, especially with Microsoft’s announcement about extending support for BizTalk Server to 2030, you can consider BizTalk Server 2020 as a game-changer. It gives customers the confidence that until that time, they don’t need to be worried about receiving support when that would be required. Also, when customers migrate from an older version of BizTalk Server, like 2013 (R2), the new cloud-connectivity capabilities open a wealth of new possibilities and integration scenarios. 

What do you think about BizTalk Server 2020 and Microsoft’s end-of-support announcement? 

Microsoft recommends organizations move to the cloud for their integration platform. Their announcement could mean that we won’t see the release of a newer version of BizTalk Server anymore. However, at least this gives existing (and even new) customers confidence that until the end of this decade, they won’t run unsupported with their BizTalk Server environments.  

Please share some thoughts on the BizTalk Server end of life. 

Although the future of integration is in the cloud, it still happens that organizations choose BizTalk Server as their integration platform. Reasons for selecting an on-premises platform include organization or industry strategy, or most integrations are happening on-premises. However, Azure Serverless is very powerful and winning in popularity. So, we expect that BizTalk Server will still be around for several years but will slowly fade away. Given the limited offerings in the market, it makes even more sense to use a powerful product like BizTalk360 to run your BizTalk environments more efficiently. 

Do you think Azure can be a replacement for BizTalk Server? 

Both platforms have a lot of similarities and capabilities, but each platform also has its strengths and weaknesses. In the end, we choose a platform based on the requirements. We don’t expect many new developments in BizTalk Server, while Azure Serverless gets stronger and richer every single release cycle. Over time, Azure Serverless also supports features not available in BizTalk Server, making Azure Serverless the better choice as an integration platform. Although there still is a place for BizTalk Server, it will fade to the background. 

What is the ultimate advantage of using BizTalk360 for a BizTalk Server user? 

BizTalk360 has over 80 features focused on streamlining your BizTalk Server operations, administration, and monitoring. Some of them are technically focused, and some of them are business-focused. Out-of-the-box BizTalk server comes with BizTalk Admin Console for everything, from development, deployment, support, operations, configuration changes, diagnosis, etc. It is a potent tool in some aspects, but it is very weak in certain aspects, especially around user security access, governance, auditing of who did what in the environment, etc. Our goal here at BizTalk360 is to provide one solid tool to solve all the operational and monitoring pain points that arise once your BizTalk applications get to production. 

December 12, 2022 Weekly Update on Microsoft Integration Platform & Azure iPaaS

December 12, 2022 Weekly Update on Microsoft Integration Platform & Azure iPaaS

__CONFIG_colors_palette__{“active_palette”:0,”config”:{“colors”:{“f3080”:{“name”:”Main Accent”,”parent”:-1},”f2bba”:{“name”:”Main Light 10″,”parent”:”f3080″},”trewq”:{“name”:”Main Light 30″,”parent”:”f3080″},”poiuy”:{“name”:”Main Light 80″,”parent”:”f3080″},”f83d7″:{“name”:”Main Light 80″,”parent”:”f3080″},”frty6″:{“name”:”Main Light 45″,”parent”:”f3080″},”flktr”:{“name”:”Main Light 80″,”parent”:”f3080″}},”gradients”:[]},”palettes”:[{“name”:”Default”,”value”:{“colors”:{“f3080”:{“val”:”rgb(23, 23, 22)”,”hsl”:{“h”:60,”s”:0.02,”l”:0.09}},”f2bba”:{“val”:”rgba(23, 23, 22, 0.5)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.5}},”trewq”:{“val”:”rgba(23, 23, 22, 0.7)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.7}},”poiuy”:{“val”:”rgba(23, 23, 22, 0.35)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.35}},”f83d7″:{“val”:”rgba(23, 23, 22, 0.4)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.4}},”frty6″:{“val”:”rgba(23, 23, 22, 0.2)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.2}},”flktr”:{“val”:”rgba(23, 23, 22, 0.8)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.8}}},”gradients”:[]},”original”:{“colors”:{“f3080”:{“val”:”rgb(23, 23, 22)”,”hsl”:{“h”:60,”s”:0.02,”l”:0.09}},”f2bba”:{“val”:”rgba(23, 23, 22, 0.5)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.5}},”trewq”:{“val”:”rgba(23, 23, 22, 0.7)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.7}},”poiuy”:{“val”:”rgba(23, 23, 22, 0.35)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.35}},”f83d7″:{“val”:”rgba(23, 23, 22, 0.4)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.4}},”frty6″:{“val”:”rgba(23, 23, 22, 0.2)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.2}},”flktr”:{“val”:”rgba(23, 23, 22, 0.8)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.8}}},”gradients”:[]}}]}__CONFIG_colors_palette__

Azure AD application registration monitoring: All you need to know 

Azure AD application registration monitoring: All you need to know 

App registrations is a mechanism in Azure AD allowing to work with an application and its permissions. It’s an object in Azure AD that represents the application, its redirect URI (where to redirect users after they have signed in), its logout URL (where to redirect users after they’ve signed out), API access and custom application roles for managing permissions to users and apps. 

As a matter of fact, through an app registration, you can restrict access to an application to only a specific group of users, if needed. An example of this is a solution I built a few years ago where we had two separate apps: a customer-facing app and a management app. Each had its app registration. I’ve restricted access to only a select group of people responsible for managing the system for the management app. 

Associated with an app registration is a service principal, which is the identity of that application. As you undoubtedly know, a service principal has credentials. However, you may not know that these credentials have an expiry date (end-date). If you’re not aware of that and don’t monitor and manage that, you may end up with applications and services that stop working. 

The Microsoft identity platform handles identity and access management (IAM) only for registered applications. Registering an application creates trust between the application and the Microsoft identity platform. 

The trust is unidirectional which means that the registered application trusts the Microsoft identity platform, but not the other way around. 

In Azure AD, applications can be represented in two ways: 

Application objects – Application objects define the application for Azure AD and can be viewed as the definition of the application. This enables the service to understand how to issue tokens to the application based on its settings. 

Service principals – The instance of the application in the user’s directory that controls connections to Azure AD is known as a service principal. 

Monitoring 

Serverless360 is an out-of-the-shelf platform to keep track of the expiration of client secrets for specific app registrations and delivering notifications prior to the expiration date, prompting you to renew it. 

Navigate to the Monitoring section of the resource to specify the number of days before which the expiry alert must be received, that’s pretty much the user has to configure and the rest of the work the platform will take care for you. 

Can you achieve the same from the Azure portal? 

In this section, we’ll see how we can define an Azure Automation runbook that we can run periodically to detect and get a list of those credentials that are either expired or about to expire. 

Setting up the automation runbook 

Creating an Azure Automation runbook can be done through the Azure portal or a CLI. We’ll show the portal way here. 

We first start by creating an Automation account. In the Azure portal, look for “Automation accounts”, then create a new instance: 

Once the account is created, we need to make a runbook (Use an Automation account to do many tasks where each runbook will handle a given task). 

Go to the “Runbooks” section, then click “Create a runbook” and enter the requested information 

You’re then presented with a screen to enter the code for that runbook. Our code will be in PowerShell. We’ll get to the complete source code in the next section. 

For now, I’ve displayed some sample codes:

  • You can notice, in line 3, that we import the “AzureAD” PowerShell module to interact with Azure AD. We use it at line 13 to get the list of all app registrations. 
  • You can notice that, too, between lines 6 and 9, we are authenticating to Azure AD before getting the list of app registrations (again, at line 13). 
From the toolbar (above the text editor), you can save the runbook, test it, publish it (you need to do that before you can use it in production), and revert to the previous version (in case the new version doesn’t work as expected).
 
We need first to install it since we’re importing a module (here, “AzureAD” at line 3). 

For that matter, at the Automation account level, we click on “Modules”, and we look for “AzureAD”: 

Since that module isn’t installed, we need to install it from the gallery by clicking on “Add a module”. We’ll pick 5.1 as the runtime version: 

The code 

The PowerShell code to be added to the runbook is listed?here. Replace the previous code with this one. 

The code is pretty easy to understand. One thing worth mentioning is the $daysToExpire variable that you’ll have to set to an appropriate value for your scenario. It’s intended to detect the service principals whose credentials are about to expire in the x coming days. 

Configuring the permissions for the runbook 

At this point, if you execute the runbook, you’ll notice that it might not work. That’s because the identity under which the runbook runs doesn’t have permissions to interact with Azure AD. 

An Azure Automation account has an associated identity. Find it in the “Connection” section under “Shared resources” in the Azure portal. 

I’ll choose the “AzureRunAsConnection”, which is of type “Service principal”, and give it the appropriate

To find that service principal in Azure AD, I need to search for the name of the Automation account in the list of “All applications” under “App registrations”: 
Since we want to list app registrations from the Azure AD, we need to assign the directory role “Directory readers” to the service principal associated with our Automation account (the one that will execute the runbook) following the least privileges principle. 
 
So, we go to “Roles and administrators” in our Azure AD tenant and select “Directory readers”: 
Then, we add an assignment to our service principal: 
And we’re done. 

The post Azure AD application registration monitoring: All you need to know  appeared first on Steef-Jan Wiggers Blog.

December 5, 2022 Weekly Update on Microsoft Integration Platform & Azure iPaaS

December 5, 2022 Weekly Update on Microsoft Integration Platform & Azure iPaaS

__CONFIG_colors_palette__{“active_palette”:0,”config”:{“colors”:{“f3080”:{“name”:”Main Accent”,”parent”:-1},”f2bba”:{“name”:”Main Light 10″,”parent”:”f3080″},”trewq”:{“name”:”Main Light 30″,”parent”:”f3080″},”poiuy”:{“name”:”Main Light 80″,”parent”:”f3080″},”f83d7″:{“name”:”Main Light 80″,”parent”:”f3080″},”frty6″:{“name”:”Main Light 45″,”parent”:”f3080″},”flktr”:{“name”:”Main Light 80″,”parent”:”f3080″}},”gradients”:[]},”palettes”:[{“name”:”Default”,”value”:{“colors”:{“f3080”:{“val”:”rgb(23, 23, 22)”,”hsl”:{“h”:60,”s”:0.02,”l”:0.09}},”f2bba”:{“val”:”rgba(23, 23, 22, 0.5)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.5}},”trewq”:{“val”:”rgba(23, 23, 22, 0.7)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.7}},”poiuy”:{“val”:”rgba(23, 23, 22, 0.35)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.35}},”f83d7″:{“val”:”rgba(23, 23, 22, 0.4)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.4}},”frty6″:{“val”:”rgba(23, 23, 22, 0.2)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.2}},”flktr”:{“val”:”rgba(23, 23, 22, 0.8)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.8}}},”gradients”:[]},”original”:{“colors”:{“f3080”:{“val”:”rgb(23, 23, 22)”,”hsl”:{“h”:60,”s”:0.02,”l”:0.09}},”f2bba”:{“val”:”rgba(23, 23, 22, 0.5)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.5}},”trewq”:{“val”:”rgba(23, 23, 22, 0.7)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.7}},”poiuy”:{“val”:”rgba(23, 23, 22, 0.35)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.35}},”f83d7″:{“val”:”rgba(23, 23, 22, 0.4)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.4}},”frty6″:{“val”:”rgba(23, 23, 22, 0.2)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.2}},”flktr”:{“val”:”rgba(23, 23, 22, 0.8)”,”hsl_parent_dependency”:{“h”:60,”s”:0.02,”l”:0.09,”a”:0.8}}},”gradients”:[]}}]}__CONFIG_colors_palette__

Building BizTalk Solution Error: Couldn’t process file  due to its being in the Internet or Restricted zone or having the mark of the web on the file.

Building BizTalk Solution Error: Couldn’t process file due to its being in the Internet or Restricted zone or having the mark of the web on the file.

One error never comes alone! Following the error reported in my last blog post while working last week with one of my clients, I was able to catch an error that I never saw during these long years working with BizTalk Server while trying to build a BizTalk Server Visual Studio solution in this specific case a custom pipeline component:

Couldn’t process file XMLAttributesStripper.resx due to its being in the Internet or Restricted zone or having the mark of the web on the file. Remove the mark of the web if you want to process these files.??????????????????

Indeed I download that resource from the Internet, from my GitHub page, like I do thousands of times for many clients and projects!

Cause

This issue happens due to the fact that you downloaded from the web these files/resources from a machine with security restrictions configured. So, when Visual Studio attempts to build the project, this error occurs because The .NET Framework resource compiler honors this marker and refuses to compile those resource files for security reasons.

The underlying cause is that the respective resource file has the so-called mark of the web applied to it. This is a marker that browsers place on downloaded files so that other applications can make informed decisions on whether to trust that file or not.

Solution

To fix this issue, the solution is quite simple. Nevertheless, there are many ways to solve or avoid this issue.

Solution 1: Fix the issue

To solve this issue, we need to remove the mark of the web, to do that, we need to:

  • Right-click on the file in windows explorer and select Properties.
  • On the General tab, at the bottom under Security, there is a check box to remove mark of the web.
  • Unselect the Unblock check box and click OK.

Note: This needs to be done with Visual Studio closed.

Solution 2: Fix the issue with PowerShell script

We can also do the same functionality as Solution 1 using the following PowerShell script:

  • On the folder for the project, run the following script
dir -Path . -Recurse | Unblock-File
  • or
Get-ChildItem -Path . -Recurse | Unblock-File

Solution 3: Fix the issue from Visual Studio

Didn’t try this approach, but apparently, we can also fix this issue directly from Visual Studio by:

  • Select the menu option Tools > Options
  • From the Options windows, select the option Trust Settings under Environment and add the project path as a trusted path.

Credits to Cody J. Mathis

Solution 4: Avoid this issue from happening again

Didn’t try this approach, but apparently, we can also fix this issue directly from Visual Studio by:

  • Open Internet Explorer and click on the gear in the top right corner.
  • Click Internet Options. and select the Security tab.
  • Click Trusted Sites and then on Sites button.
  • Enter the URL of the site you want to trust, in this case, GitHub, and click Add.
  • Click OK.
BizTalk WCF-SAP Adapter: Could not load file or assembly ‘Microsoft.Adapters.SAP.SAPGInvoker.dll’ or one of its dependencies

BizTalk WCF-SAP Adapter: Could not load file or assembly ‘Microsoft.Adapters.SAP.SAPGInvoker.dll’ or one of its dependencies

Last week I was adding new processes to an existing and old project for a client, a project that I started a few years ago, and I was caught by surprise with the following error while trying to generate a new SAP schema from Visual Studio:

Error occurred while browsing the LOB system. Adapter Message: Could not load file or assembly ‘Microsoft.Adapters.SAP.SAPGInvoker.dll’ or one of its dependencies. The specified module could not be found.

At first sight, the cause for the error is simple, and I will explain above the main causes, but in my case, the problem was that I had all the pre-requirements for the WCF-SAP adapter to work, and again that was an existing project where I had already generated several SAP Schemas.

Cause

Normally the main reason for this error is that the pre-requirements to run the WCF-SAP adapter are not installed in the environment. Even if you see the WCF-SAP adapter present and configured in the BizTalk Server Administration console, it doesn’t mean that it is ready to work. This adapter requires you to install the following SAP resources to run the adapter in the BizTalk Server box:

  • NCo3018_Net40_x64.msi
  • NCo3018_Net40_x86.msi

You can download these resources from the SAP Service Marketplace.

It is required (mandatory) to install the x86 version of the SAP Connector for Microsoft .NET. However, if you want to run the adapter under a 64-bit Host Instance, you need to install both the x86 and x64 versions of the SAP Connector for Microsoft .NET (recommended).

But once again, I knew that I had all these resources installed, and I doubled check that they were installed.

In my case, for some unknown reason, some of these DLLs got corrupted, and for that reason, I was getting this error.

Solution

To fix this issue, the solution is quite simple:

  • Reinstall the x86 and x64 versions of the SAP Connector for Microsoft .NET.
    • NCo3018_Net40_x64.msi
    • NCo3018_Net40_x86.msi
  • When asked, repair the installation of the components.

After that, I was once again able to generate SAP Schemas from my BizTalk Server Visual Studio project.

This applies to:

  • BizTalk Server 2020
  • BizTalk Server 2016