Quantcast
Channel: BizTalk – SANDRO PEREIRA BIZTALK BLOG
Viewing all 287 articles
Browse latest View live

BizTalk DevOps: Monitor your BizTalk environment using PowerShell – How to schedule Message Box Viewer or BizTalk Health Monitor and customize notification alerts with PowerShell

$
0
0

There are several ways that you can integrate and schedule Message Box Viewer or BizTalk Health Monitor, since Message Box Viewer (aka MBV) is deprecated, and it is now replaced by BizTalk Health Monitor (aka BHM).

The first option is to use BHM itself, for that, if you have BHM integrated with BizTalk Administration Console (see how to here):

  • Open BizTalk Administration Console, expand BizTalk Health Monitor
  • And then right-click on “Default” profile (or your custom profile) and select “Settings…”
  • On the Monitoring Profile Settings – [Profile name] windows
    • Select “Schedule” panel and define your scheduler

BizTalk-Healt-Monitor-Scheduler-options

    • And then select “Notifications” panel to “customize” the desired notifications and email settings. For example:
      • Mail notification or/and Eventlog Notifications
      • Send a mail only when critical warnings are raised
      • And the option to attach the complete report (compressed)

BizTalk-Healt-Monitor-Notification-options

Of course, by using the BHM, you can customize also the types of queries that you want to run and so on.

The second option is, for example, to use BizTalk360 by:

  • Click the “Settings” icon at the top of the page and then selecting “Message Box Viewer” option from the left menu bar.
  • On “Config and Schedule Message Box Viewer Integration” panel you need to:
    • In the “Message Box Viewer Download Directory” property: Enter the path to the MBV directory in the
    • In the “Schedule Execution” panel:
      • In the “Environment” property: leave the default or select your BTS environment for which the MBV execution has to be scheduled
      • In the “Days” and “Time” properties – Select the day and time when the MBV should run automatically.
      • And finally, click “Save” to save the configuration settings.

MessageBox-Viewer-BizTalk360-integration

However, I was trying to full customize my notification warnings! And I want to receive an email notification if Warnings and Critical Warnings are raised but in some environments, special in small or test environments, I know that BizTalk machines are not fully configured as High Availability or according to all the best practices… sometimes these are limitations that you need to live with it. For example:

  • SSO DB: “Not Clustered (this DB is critical as it keep encrypted ports properties)!” – for small environments sometimes I only have one BizTalk Machine so in this case I don’t need, and I can’t, cluster the SSO. So, for me sometimes this is a false warning.
  • “MDF Db Growth for BizTalkMgmtDb” or “LOG Db Growth for BizTalkMgmtDb”: “Current =102400 KB (Def=1024 KB) – Recommended for this Db=1024 KB?!” – I have the MDF and LOG grow setting defined correctly but not according to the recommended setting of this tool, again, for me sometimes this is a false warning.
  • “LDF and MDF files Location for …”: “Same Drive (Can cause disk contention)!” – Again, sometimes the tool raises these warnings even if the location is different, so in certain cases, if I’m sure of the configurations I can consider this a false warning.
  • And so on…

Don’t get me wrong I love this tool but each time the report is generated, we need to make a review to the report and analyze what is real and what is “false” warnings, special the non-critical warnings. I want to be smarter and automate this task, so for fun I decide to give it a try with PowerShell script.

So how can PowerShell help us?

With this script you can be able to easily monitor the health of your BizTalk environment (engine and architecture) by scheduling Message Box Viewer(MBV) or BizTalk Health Monitor (BHM) and customize alerts using PowerShell.

Only if the script finds any critical warning (there are no conditions in critical warnings) or any non-critical warning that is not expected (what I may consider a “false” or expected warning) a mail notification will be sent.

Additional, if a notification mail is sent, I will also want to send the completed report (compressed) attached to the email.

This script allows you to set:

  • Set your email notification settings
#Set mail variables
[STRING]$PSEmailServer = "mySMTPServer" #SMTP Server.
[STRING]$SubjectPrefix = "MBV Notification Report -  "
[STRING]$From = "biztalksupport@mail.pt"
[array]$EmailTo = ("sandro.pereira@devscope.net")
  • Set location settings – the location of the tool and where the reports are saved can be different
#### Option to execute MBV
$mbvPath = "C:\Users\Administrator\Desktop\powerShell\MBV\"
#### Option to execute BHM
#$mbvPath = "C:\Program Files (x86)\BizTalk Support Tools\BHMv3.1\"
$mbvReportSaveLocation = "C:\Users\Administrator\Desktop\powerShell\MBV\"
  • Critical errors we want to be notified (in this case all of them)
# Critical errors we want to be notified (in this case all of them)
if($xml.MSGBOXVIEWER.WARNINGSREPORT_RED.Count -gt 0)
{
    $mailBodyMsb += "<h3>Critical Warnings</h3> `n`n"

    Foreach ($criticalReport in $xml.MSGBOXVIEWER.WARNINGSREPORT_RED)
    {
        $countCriticalAlerts++;

        #Add mail content
        $mailBodyMsb += "<th><b>Critical Warning: " + $countCriticalAlerts + "</font></b></th>"
        $mailBodyMsb += "<table style='boder:0px 0px 0px 0px;'>"

        $mailBodyMsb += "<TR style='background-color:rgb(245,245,245);';><TD>Category</TD>"
        $mailBodyMsb += "<TD><b><font color='red'>" + $warningReport.Category + "</font><b></TD></TR>"

        $mailBodyMsb += "<TR style='background-color:white;'><TD>Item Caption</TD>"
        $mailBodyMsb += "<TD><b><font color='red'>" + $warningReport.ItemCaption + "</font><b></TD></TR>"

        $mailBodyMsb += "<TR style='background-color:rgb(245,245,245);';><TD>Details</TD>"
        $mailBodyMsb += "<TD>" + $warningReport.ItemValue + "</TD></TR>"

        $mailBodyMsb += "</table>"
        $mailBodyMsb += "<BR><BR>"
    }
}
  • Non-Critical errors we want to be notified – REPORT FILTER EXCLUSIONS
# Non-Critical errors we want to be notified - REPORT FILTER EXCLUSIONS
if($xml.MSGBOXVIEWER.WARNINGSREPORT_YELLOW.Count -gt 0)
{
    $mailBodyMsb += "<h3>Non Critical Warnings</h3> `n`n"

    Foreach ($warningReport in $xml.MSGBOXVIEWER.WARNINGSREPORT_YELLOW)
    {
        #####################################################################################
        # REPORT FILTER EXCLUSIONS
        #
        #Exclude from the report "false" warnings (like MDF Db Growth for)
        #or warnings that you already know that you have and need to deal with it (like LDF and MDF files Location for)
        #or others that you want to exclude
        #####################################################################################
        if($warningReport.ItemCaption -eq "Errors during Collect")
        {
            continue;
        }

        if($warningReport.ItemCaption -eq "Class Settings Changed")
        {
            continue;
        }

        if(($warningReport.ItemCaption -Match "MDF Db Growth for") -or ($warningReport.ItemCaption -Match "LOG Db Growth for") -or ($warningReport.ItemCaption -Match "LDF and MDF files Location for"))
        {
            continue;
        }

        if(($warningReport.ItemCaption -Match "LDF files Location for BizTalkDTADb and BizTalkMsgBoxDb") -or ($warningReport.ItemCaption -Match "MDF files Location for BizTalkDTADb and BizTalkMsgBoxDb"))
        {
            continue;
        }

        if(($warningReport.ItemCaption -Match 'BizTalkServerApplication') -and ($warningReport.ItemValue -Match "Run Receive Location+Orchestration"))
        {
            continue;
        }

        if($warningReport.ItemCaption -Match 'SMS agent is running')
        {
            continue;
        }

        if($warningReport.ItemCaption -eq "Non WCF SQL adapter used in some Receive Locations")
        {
            continue;
        }

        if(($warningReport.ItemCaption -Match 'Server WH0') -and ($warningReport.ItemValue -Match "Running in VMware Virtual Platform "))
        {
            continue;
        }

        if($warningReport.ItemValue -eq "Custom or Third-party adapter !")
        {
            continue;
        }

        if($warningReport.ItemCaption -eq "'maxconnection' property")
        {
            continue;
        }
        #####################################################################################
        # Report Filter exclusions
        #####################################################################################

        $countWarningAlerts++;
        #Add mail content
        $mailBodyMsb += "<th><b>Warning: " + $countWarningAlerts + "</b></th>"
        $mailBodyMsb += "<table style='boder:0px 0px 0px 0px;'>"
        $mailBodyMsb += "<TR style='background-color:rgb(245,245,245);';><TD>Category</TD>"
        $mailBodyMsb += "<TD><b><font color='Orange'>" + $warningReport.Category + "</font><b></TD></TR>"

        $mailBodyMsb += "<TR style='background-color:white;'><TD>Item Caption</TD>"
        $mailBodyMsb += "<TD><b><font color='Orange'>" + $warningReport.ItemCaption + "</font><b></TD></TR>"

        $mailBodyMsb += "<TR style='background-color:rgb(245,245,245);';><TD>Details</TD>"
        $mailBodyMsb += "<TD>" + $warningReport.ItemValue + "</TD></TR>"

        $mailBodyMsb += "</table>"
        $mailBodyMsb += "<BR><BR>"
    }
}
  • Delete the reports history from “Save Report” folder (I can have the last day’s executions as history) and remove compressed files.
#remote the rip report file
Remove-Item $zipFile
#remote report folder older then X days
get-childitem $mbvReportSaveLocation |? {$_.psiscontainer -and $_.lastwritetime -le (get-date).adddays(-3)} |% {remove-item $_ -Force -Recurse}

Again, only if the script finds any Critical or non-critical warning (that is not expected) a mail notification will be sent.

Report sample:

MessageBox-Viewer-BHM-Notification-report-powershell

Note: This type of script must be viewed as a complement to the tools mentioned above or used in the absence of them.

THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

The script can be found and download on Microsoft TechNet Gallery:
How to schedule MBV or BHM and customize notification alerts with PowerShell (18.0 KB)
Microsoft TechNet Gallery



How to integrate BizTalk Health Monitor with BizTalk360 v8.0 (workaround)

$
0
0

Quite a long time that Message Box Viewer in fully integrated with BizTalk360, which is awesome, because MBV is, or was, the perfect tool to analyze and identifying potential issues in the BizTalk environment.

MBV had over 400 rules that were able to verify different configurations/settings on your BizTalk Server environment, gathering the results in order to provide information about the general health of the environment to the administrations teams, like:

  • Whether backup jobs, or any BizTalk Job, are configured and running properly
  • Whether default throttling settings are changed or custom adapters are added to your environment
  • Whether the BizTalk databases are at their optimum levels in terms of size
  • Performance issues
  • And so on…

BizTalk 360 took advantage of the power of MBV and integrated it, in past versions of the product, n its architecture to the present day. By integrating MBV, BizTalk360 was capable to offer the following additional values to the users:

  • The ability to perform scheduled execution of MBV
  • Show reports categorized in a nicer way
  • Have a single platform to monitor and analyze BizTalk Server environments

BizTalk360 V8.0 has the same capabilities, however, Message Box Viewer (aka MBV) is currently deprecated, and it was replaced by BizTalk Health Monitor (aka BHM) and it is no longer available for download. Of course if you are using BizTalk Server 2013 or higher you may know that MBV was included in BizTalk Server 2013 and you will find it in your BizTalk installation directory:

  • Normally at “C:\Program Files (x86)\Microsoft BizTalk Server 2013\SDK\Utilities\Support Tools\MsgBoxViewer”
  • Or “…\Microsoft BizTalk Server 2013 R2\SDK\Utilities\Support Tools\MsgBoxViewer” folder

I know that BizTalk360 team is already plan and working to fix it and integrate BizTalk Health Monitor (aka BHM) with BizTalk360 tool replacing the currently MBV.

However, BHM is based on the same engine as MBV, what happen was that the MBV project team, after releasing MBV as a standalone tool for several years, decided to integrate it more closely with the BizTalk Administration Console providing this way a quick and complete dashboard of a BizTalk group that will help BizTalk administrators to monitor the health of their BizTalk platform more effectively.

Previous MBV had an execution file call “MBVConsole.exe” (Console MBV Client tool) that allowed users to automatically schedule (via PowerShell or windows scheduler Task) and generate reports, same tool that BizTalk360 uses.

BHM no longer has this console tool (“MBVConsole.exe”). The tool was renamed to “BHMCollect.exe” but it is “exactly the same” as “MBVConsole.exe” in MBV… so I decided to give it a shot and see if I was able to use the last version of the tool inside BizTalk360.

I when to “Config and Schedule Message Box Viewer Integration” page inside BizTalk360:

  • Click the “Settings” icon at the top of the page and then selecting “Message Box Viewer” option from the left menu bar.

On “Config and Schedule Message Box Viewer Integration” panel, instead of configure the path to the MBV directory in the “Message Box Viewer Download Directory” property, I set the path to the Health Monitor BizTalk, in my case:

  • C:\Program Files (x86)\BizTalk Support Tools\BHMv3.1

MessageBox-Viewer-BizTalk360-integration-configurations

Of course this just is not enough, because as I told before, BizTalk360 is trying to use “MBVConsole.exe”. So, as a workaround, if you want to use the BHM integrated with BizTalk360 you need to:

  • Go to the BHM installation directory;
  • Make a copy of “BHMCollect.exe” and rename it to “MBVConsole.exe”
    • Important: do not rename the original file! You still need it as it is!
    • You will then have to files: “BHMCollect.exe” and “MBVConsole.exe” witch is exactly the same file!

BHM-integrated-BizTalk360-installation-folder

Now if you try to run it manually inside BizTalk360, you will see that it was able to execute and provide the reports in the same nice and beautiful way than using MBV.

BizTalk-Health-Monitor-BizTalk360-integration

Again, this solution is a workaround that you can use for now, because, BizTalk360 team is already plan and working to fix it and integrate BizTalk Health Monitor (aka BHM), replacing the currently MBV, in next versions of the product.

This is not really a critical problem because BHM is practically equal to MBV, but BHM may have some new improvements/hotfixes that you can use that MBV doesn’t have it.


BAM Deploy Error: Could not load file or assembly ‘Microsoft.SqlServer.ASTasks, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91’ or one of its dependencies. The system cannot find the file specified.

$
0
0

Today while doing a BAM POC to one of my clients, I found a number of problems/errors, some of them unexpected and uncommon, while trying to deploy my BAM definition file.

In order to contextualize the problem, for this POC we are using only one BizTalk Server machine with BAM Portal, one dedicated SQL Server and Analysis Server and Integration Server in another dedicated server. So, more or less a simple Multi-Computer Environment.

In this post I will address the most unusual of them:

Deploying Activity… Done.
Deploying View… ERROR: The BAM deployment failed.
Could not load file or assembly ‘Microsoft.SqlServer.ASTasks, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91’ or one of its dependencies. The system cannot find the file specified.

CAUSE

Well, the cause the cause is quite obvious by its description. Microsoft.SqlServer.ASTasks assembly is missing or some of its dependencies, although, the environment has been installed, configured and functioning correctly, i.e., everything was working properly with exception of BAM deployment.

My first suspicion (which ultimately turned out to be right), and because, as I told before, SQL Server is remote was that not all the SQL Server Client Tools components were installed in the BizTalk Server machine.

This suspicion was confirmed when I open the SQL Server 2014 Management Studio console. Because the machine only had the “Management Tools – Basic” feature installed.

SQL-Server-Management-Tools-Basic-feature

The “differences” between basic and complete are:

  • Management Tools – Basic: includes support for the Database Engine and SQL Server Express, SQL Server command-line utility (SQLCMD) and SQL Server PowerShell provider
  • Management Tools – Complete:  as the name implies, you get it all. It adds support Reporting Services, Analysis Services and Integration Services technologies.

Because support for Analysis Services is required in BizTalk Server machines while deploying the view definition, this error occurs.

SOLUTION

To solve this problem, you must install also, on BizTalk Server machine, the “Management Tools – Complete” shared feature. To do that you need:

  • Clicking in the “Compatibility View” button that appears in the Address bar to display the site in Compatibility View.
  • Run SQL Server 2014 setup program.
  • On the SQL Server Installation Center, click Installation.
  • Click New Installation or Add Features to an Existing Installation.
  • Review the information on the Setup Support Rules screen, and then click OK.
  • On the Product Key screen, enter your product key and click Next.
  • On the License Terms screen, select I accept the license terms, and then click Next.
  • On the Setup Support Files screen, click Install.
  • On the Feature Selection screen, select the following features, and then click Next.
    • Shared Features
      • Management Tools – Basic
      • Management Tools – Complete

Once “Management Tools – Complete” is installed, you will be able to deploy your BAM definition file.


DEEP DIVE INTEGRATION WORKSHOP at Tuga IT 2016 (19-21 May) Lisbon, Portugal

$
0
0

Wow! In Europe Integration will be on fire in May, not only we will have TUGA IT but also INTEGRATE 2016 (but I leave this last event for another post).

Tuga IT 2016 it’s a FREE event (Saturday, 21), that will count with the collaboration of different Portuguese technical communities and Microsoft MVP’s (myself included), targeting not only Integration (BizTalk Server, App Services (Logic Apps and API Apps), EventHubs, Service Bus, IoT, …), but also Microsoft Data Platform, SharePoint, Office365, Azure and much more, that will be held on from 19 to 21 of May at Microsoft Portugal in Lisbon.

We also have the first two days (19th and 20th of May) full of amazing workshop, however, that you can register for a small cost (this happens mainly to support cost of the organization of the event such as this).

I will announce soon the Integration sessions that will be at the event but, for now, I’m thrilled to announce that one of these workshop’s will be about Enterprise Integration lectured by, not one, but 3 Azure MVPs: Steef-Jan Wiggers, Nino Crudele and myself!

DEEP-DIVE-INTEGRATION-WORKSHOP-TUGA-IT-2016

Don’t miss this opportunity and register in the workshop here:

The workshop will be on Friday, 20th of May.

DEEP DIVE INTEGRATION WORKSHOP

Description: “Work hard, play hard”, how can we make integration easier? This workshop is all about Enterprise Integration composed by 3 MVP (Steef-Jan Wiggers (Netherlands), Nino Crudele (Italy) and Sandro Pereira (Portugal)) that will share their knowledge and experience gain over the years.

This 1-day workshop, special for Developers, that will include an overview of the Microsoft Integration Roadmap, along with several presentations and Hands-on labs covering how to design, build, and operate a robust, scalable solution on premise and on cloud:

  • BizTalk Server Best Practices and Tips
  • BizTalk DevOps
  • Extensibility of BizTalk Server with .NET
  • Hybrid solutions
  • Azure App Services, EventHubs, Azure Stream Analytics, PowerBI
  • Building Azure WebJobs
  • Creating WebAPI
  • And a lot more.

Speaker: Steef-Jan Wiggers

Steef-Jan Wiggers is a principal consultant for a consultancy firm in the Netherlands. He has almost 15 years’ experience as a technical lead developer, application architect and consultant, specializing in custom applications, enterprise application integration (BizTalk), Web services and Windows Azure. Steef-Jan is very active in the BizTalk community as a blogger, Wiki author/editor, forums, writer and public speaker in the Netherlands and Europe. For these efforts, Microsoft has recognized him a Microsoft MVP for the past 5 years.

Links:

 

Speaker: Nino Crudele

Nino has been a Microsoft BizTalk Server, Application Integration and now Azure MVP for 9 years, he always focused delivering significant business integration project that provide exceptional outcomes for the client.

Nino has a deep knowledge and experience delivering world class integration solutions using all Microsoft Azure stacks, Microsoft BizTalk Server and he has delivered world class Integration solutions using and integrating many different technologies as AS2, EDI, Rosettanet, HL7, RFID, SWIFT.

He is a technology passionate, blogger, author, international speaker and active community member in the Application Integration area.

Links:

 

Speaker: 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.

Links:

 

This is one workshop that you can’t afford to miss… We are waiting for you in Lisbon. What are you waiting for? Go ahead and book it! Smile

Register now on https://app.weventual.com/detalheEvento.action?iDEvento=2874 – Seats are limited!


Announcing TUGA IT 2016 Integration track 1st session: “Integration Dojo, The WAY OF THE PEACEFUL INTEGRATOR” with Nino Crudele

$
0
0

We are thrilled to announce the first integration track session for Tuga IT 2016 on Saturday (free conference day) – “Integration Dojo, The WAY OF THE PEACEFUL INTEGRATOR” with Nino Crudele!

TUGA-IT-Speaker-Nino-Crudele

The official scheduler is not yet available, nevertheless, this session will be performed in Saturday, 21 (on the free day). All the session will be available soon at Tuga IT 2016 that will be held on from 19 to 21 of May at Microsoft Portugal in Lisbon.

This is one-day free event that you can’t afford to miss, the seats are limited so go ahead and reserve yours here: https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363

Note: in the first 25 hours of #tugait registrations for Saturday, 20% of the tickets are gone. No schedule or speakers are published so far.

Integration Dojo, The WAY OF THE PEACEFUL INTEGRATOR

Description: “Integration, as Life, has three rules: Paradox, Humor, and Change.

  • Paradox: Integration is a mystery; don’t waste your time trying to figure it out.
  • Humor: Keep a sense of humor, especially about yourself. It is a strength beyond all measure
  • Change: Know that nothing ever stays the same.”

During this practice session and with real examples, Nino will figure out how to face integration of technologies in very smart way and without waste our money and time.

Speaker: Nino Crudele

Nino has been a Microsoft BizTalk Server, Application Integration and now Azure MVP for 9 years, he always focused delivering significant business integration project that provide exceptional outcomes for the client.

Nino has a deep knowledge and experience delivering world class integration solutions using all Microsoft Azure stacks, Microsoft BizTalk Server and he has delivered world class Integration solutions using and integrating many different technologies as AS2, EDI, Rosettanet, HL7, RFID, SWIFT.

He is a technology passionate, blogger, author, international speaker and active community member in the Application Integration area.

Links:

 

Register for Saturday event now on https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363 – Seats are limited! See you in Lisbon.


Announcing TUGA IT 2016 Integration track 2th session: “Modern integration, what are my options today!” with Steef-Jan Wiggers

$
0
0

We are thrilled to announce the second integration track session for Tuga IT 2016 on Saturday (free conference day) – “Modern integration, what are my options today!” with Steef-Jan Wiggers!

TUGA-IT-Speaker-Steef-Jan-Wiggers

The official scheduler is not yet available, nevertheless, this session will be performed in Saturday, 21 (on the free day). All the session will be available soon at Tuga IT 2016 that will be held on from 19 to 21 of May at Microsoft Portugal in Lisbon.

This is one-day free event that you can’t afford to miss, the seats are limited so go ahead and reserve yours here: https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363

Note: in the first 25 hours of #tugait registrations for Saturday, 20% of the tickets are gone. No schedule or speakers are published so far.

Modern integration, what are my options today!

Description: Integration has progress over the last decade from on premise, main frame to Software as a Service. Means of connecting systems has progressed to connecting anything with everything. In this session you will learn how integration can be done today with a myriad of options varying from BizTalk Server to Logic Apps. Several use cases will be demonstrated to the audience.

Speaker: Steef-Jan Wiggers

Steef-Jan Wiggers is a principal consultant for a consultancy firm in the Netherlands. He has almost 15 years’ experience as a technical lead developer, application architect and consultant, specializing in custom applications, enterprise application integration (BizTalk), Web services and Windows Azure. Steef-Jan is very active in the BizTalk community as a blogger, Wiki author/editor, forums, writer and public speaker in the Netherlands and Europe. For these efforts, Microsoft has recognized him a Microsoft MVP for the past 5 years.

Links:

 

Register for Saturday event now on https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363 – Seats are limited! See you in Lisbon.


Announcing TUGA IT 2016 Integration track 3th session: “Hybrid Integration: SAP and Azure, better together” with Glenn Colpaert

$
0
0

We are thrilled to announce the third integration track session for Tuga IT 2016 on Saturday (free conference day) – “Hybrid Integration: SAP and Azure, better together” with Glenn Colpaert!

TUGA-IT-Speaker-Glenn-Colpaert

The official scheduler is not yet available, nevertheless, this session will be performed in Saturday, 21 (on the free day). All the session will be available soon at Tuga IT 2016 that will be held on from 19 to 21 of May at Microsoft Portugal in Lisbon.

This is one-day free event that you can’t afford to miss, the seats are limited so go ahead and reserve yours here: https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363

Hybrid Integration: SAP and Azure, better together

Description: In this session Glenn will give an overview on some of the different options to connect on premise resources with the Azure Platform.

We will start by having a look at how ‘classical’ integration is done before there was a cloud by using an example with BizTalk & SAP ERP system.

With the Azure Platform, a whole new set of tools and services was introduced and enables you to connect on premise with the cloud.

You can expect an overview on how to move away from the ‘classic’ integration and leverage all the SAP functionalities to the cloud via Service Bus Relay, Azure App Services and other services available on the Azure Platform.

Speaker: Glenn Colpaert

Glenn Colpaert is an Integration Consultant and Microsoft Integration MVP at Codit.

He has been integrating businesses with BizTalk & Microsoft technologies for more than 7 years. During these years he was involved in many EAI and B2B projects – both on-premise and hybrid (cloud).

He has gained a lot of hand-on experience during his projects and likes to share it with colleagues and the community.

Glenn is also part of the Microsoft Azure Insider program as well as the BizTalk Advisors group.

He became a board member of BTUG.be (http://www.btug.be/), the Belgian BizTalk User Group and is an active blogger on the Codit Blog.

Links:

 

Register for Saturday event now on https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363 – Seats are limited! See you in Lisbon.


Announcing TUGA IT 2016 Integration track 4th session: “BizTalk Server Deep Dive Tips & Tricks for Developers and Admins” with Sandro Pereira

$
0
0

I’m thrilled to announce that I’m speaking at Tuga IT 2016 on Saturday (free conference day) – “BizTalk Server Deep Dive Tips & Tricks for Developers and Admins” this is the fourth integration track session that is announced.

TUGA-IT-Speaker-Sandro-Pereira

The official scheduler is not yet available, nevertheless, this session will be performed in Saturday, 21 (on the free day). All the session will be available soon at Tuga IT 2016 that will be held on from 19 to 21 of May at Microsoft Portugal in Lisbon.

This is one-day free event that you can’t afford to miss, the seats are limited so go ahead and reserve yours here: https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363

BizTalk Server Deep Dive Tips & Tricks for Developers and Admins

Description: It’s critical to use good tools and techniques to produce working solutions as quickly as possible and at the same time, given the increase the requirements and number of applications organizations develop today. But at the same time, it’s also critical to maintain the health of the entire platform.

In this session, which I’ll try to be a very interactive session (so be prepare to participate), I’ll address and share some useful BizTalk Server Tips and Tricks (and Workarounds) both for developers and administrators. Covering some topics like RosettaNet, SAP, database maintenance, debatching, out-of-the-box pipelines vs custom pipelines and many more.

Just to keep the same format of the previous post here is my short bio:

Speaker: 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.

Links:

 

Register for Saturday event now on https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363 – Seats are limited! See you in Lisbon.



Announcing TUGA IT 2016 Integration track 5th session: “Azure IoT Suite. A look behind the curtain” with Sam Vanhoutte

$
0
0

We are thrilled to announce the fifth integration track session for Tuga IT 2016 on Saturday (free conference day) – “Azure IoT Suite. A look behind the curtain” with Sam Vanhoutte!

TUGA-IT-Speaker-Sam-Vanhoutte

The official scheduler is not yet available, nevertheless, this session will be performed in Saturday, 21 (on the free day). All the session will be available soon at Tuga IT 2016 that will be held on from 19 to 21 of May at Microsoft Portugal in Lisbon.

This is one-day free event that you can’t afford to miss, the seats are limited so go ahead and reserve yours here: https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363

Azure IoT Suite. A look behind the curtain

Description: Azure IoT Suite was announced last year and it seems there are people who tend to believe that it will make real IoT solutions easy to set up and quick to deploy. In this session, you will get an overview of the features and capabilities of Azure ioT Suite. Some interesting demos will show how to register devices, send telemetry information and commands to and from devices. But after the magic, a touch with reality will be held. The various components will be discussed. Extensibility and customization will be shown.

After this session, attendees should get a good understanding of the possibilities of Azure IoT suite. Attendees should also get a better understanding of the possibilities to apply Azure IoT Suite in real world scenarios.

Expect demos and tons of honest feedback.

Speaker: Sam Vanhoutte

Sam Vanhoutte is CTO and Product Manager with Codit. Based in Belgium, Sam is a Microsoft Azure MVP and frequently speaks at conferences.  Next to that, he is also BizTalk & Azure p-seller at Microsoft and has extensive experience in building integrated enterprise, ESB and SOA solutions.  Because of the specialized focus on integration on Microsoft technology, Sam  is part of Microsoft’s Connected Systems and Azure Advisory boards and is a Microsoft Azure Insider as well as a Belgian MEET member.    Sam co-founded the BizTalk User Group in Belgium (http://www.btug.be) and is active crew member of the Azure User group (http://www.azug.be).

While managing and architecting the online integration platform "Integration Cloud", Sam has been focusing on Cloud integration and IoT solutions with the Microsoft Azure platform the last years.

Links:

 

Register for Saturday event now on https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363 – Seats are limited! See you in Lisbon.


Announcing the last Integration track session at TUGA IT 2016: “2 Speed IT powered by Microsoft Azure and Minecraft” with Michael Stephenson

$
0
0

We are thrilled to announce the last (6th) integration track session for Tuga IT 2016 on Saturday (free conference day) – “2 Speed IT powered by Microsoft Azure and Minecraft” with Michael Stephenson!

TUGA-IT-Speaker-Michael-Stephenson

The official scheduler is not yet available, nevertheless, this session will be performed in Saturday, 21 (on the free day). All the session will be available soon at Tuga IT 2016 that will be held on from 19 to 21 of May at Microsoft Portugal in Lisbon.

This is one-day free event that you can’t afford to miss, the seats are limited so go ahead and reserve yours here: https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363

2 Speed IT powered by Microsoft Azure and Minecraft

Description: One of the recent shifts in IT has been around the concept of 2 speed IT. This can be a key approach to allow IT organizations to offer their customers the agility they require in situations where they need it. In this session Mike will talk about some real world examples where Azure has empowered organizations to deliver sprint style solutions that can offer marathon runner reliability, also Mike will show how a model reference architecture in Azure and Minecraft can be used by architects to visualize solutions that you want your teams to build.

Speaker: Michael Stephenson

Michael is a highly experienced freelance consultant with many years of architecting and delivering integration projects which leverage the Microsoft technology stack. He has deep, practical knowledge of delivering complex solutions with BizTalk, Microsoft .NET, Microsoft Azure and associated technologies. Michael has also been a technical lead on 25+ projects which have leveraged Microsoft’s cloud platform.

Michael is heavily involved in the community activities around Microsoft technologies through the Microsoft MVP and Advisor/Insider programmes and also speaks at user groups on a regular basis and is a keen blogger with articles such as how to build a real world integration platform on Azure. Michael is an author for Pluralsight having produced a very popular courses on .net and RabbitMQ.

Michael is also the creator of the BizTalk Maturity Assessment an initiative to help companies to measure the maturity of how they work with BizTalk and compare how they do BizTalk against recognized good practices. For more info refer to http://biztalkmaturity.com.

Links:

 

Register for Saturday event now on https://www.eventbrite.com/e/tuga-it-2016-saturday-registration-22632816363 – Seats are limited! See you in Lisbon.


BizTalk DevOps: How to configure Default Dynamic Send Port Handlers with PowerShell

$
0
0

As happens almost every year on this day (my birthday), I always try to write a post for the BizTalk community… something like a gift/present to the community… today will be automate the task of configuring default Dynamic Send ports handlers using PowerShell.

Since BizTalk Server 2013 we have available a new feature: Configurable Dynamic Send Port Handler. Which means that, when we are creating a Dynamic Send Port, an adapter Send Handler can be configurable for every installed adapter, by default it uses the default send handler associated in each adapter. This Includes both One-Way and Solicit-Response Dynamic Ports.

Note that in previous BizTalk versions, a dynamic send port uses the adapter’s default host, and we cannot change this behavior.

However, this new features also brings us some setbacks, special for BizTalk Administrators, for example:

  • When we are installing a new environment, if we install the EDI features, this will add a dynamic port call “ResendPort” (don’t need to describe the propose of this port) and the default send handler for each adapter will be the “BizTalkServerApplication”;
    • If we create different or dedicated host and host instances for each functionality, for example a host instance for receive, send, process (orchestrations), tracking and so on; of course then we need to associate them as a specific handler of each adapter (receive or send handler) and if we want to delete the “BizTalkServerApplication” as a send handler for each adapter… we can’t, we first need to:
      • Manually reconfigure the default Dynamic Send port handlers for each dynamic port first, configuring them with the new default send handler;
      • and then manually delete the “BizTalkServerApplication” as a send handler for each adapter;
  • The same happens when we install a new adapter. By default, it assumes the default host in the group as the default send handler of the adapter and in consequence the default send handler associated with this adapter in the existing dynamic send ports. Which means that once again we need to manually reconfigure the send handler in all the existing dynamic send ports for this new adapter;
  • And so on;

All of these tasks are time consuming, and to be fair, they are a little boring to do after we know how to do it manually;

So how can we automate tasks? and reuse them whenever necessary and at the same time saving significant time for other tasks?

Using PowerShell is a good option. Windows PowerShell is a Windows command-line shell designed especially for system administrators and can be used by BizTalk administrators to help them in automating repetitive tasks or tasks that are time consuming to perform manually.

This is a simple script that allows you to configure the default send handlers associated with all the existing Dynamic Send ports in your environment:

[string] $sendHost32bits = "BizTalkServerSend32Host"
[string] $sendHost64bits = "BizTalkServerSendHost"

$catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$catalog.ConnectionString = "SERVER=$bizTalkDbServer;DATABASE=$bizTalkDbName;Integrated Security=SSPI"

foreach($sendPort in $catalog.SendPorts)
{
    if($sendPort.IsDynamic -eq' True')
    {
        # A Dynamic send port was found so now we need to configure the send handler as desired
        # 64 bits adapters
        # Changing the default send handlers of the dynamic port
        $sendPort.SetSendHandler("FILE", $sendHost64bits)
        $sendPort.SetSendHandler("HTTP", $sendHost64bits)
        $sendPort.SetSendHandler("MQSeries", $sendHost64bits)
        $sendPort.SetSendHandler("MSMQ", $sendHost64bits)
        $sendPort.SetSendHandler("SB-Messaging", $sendHost64bits)
        $sendPort.SetSendHandler("SFTP", $sendHost64bits)
        $sendPort.SetSendHandler("SOAP", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-BasicHttp", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-BasicHttpRelay", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-Custom", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-NetMsmq", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-NetNamedPipe", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-NetTcp", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-NetTcpRelay", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-SQL", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-WebHttp", $sendHost64bits)
        $sendPort.SetSendHandler("WCF-WSHttp", $sendHost64bits)
        $sendPort.SetSendHandler("Windows SharePoint Services", $sendHost64bits)

        # 32 bits adapters
        # SMTP Supports 64 bits but I want to run in 32 because of the MIME/SMIME Encoder
        $sendPort.SetSendHandler("FTP", $sendHost32bits)
        $sendPort.SetSendHandler("SMTP", $sendHost32bits)
        $sendPort.SetSendHandler("SQL", $sendHost32bits)
    }
}

$catalog.SaveChanges()

Prerequisites for this script: The host, host instances and send handlers needs to be already configured in your environment before you run the script;

THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

The full script can be found and download on Microsoft TechNet Gallery:
PowerShell to configure Default Dynamic Send Port Handlers for each Adapter (3.0 KB)
Microsoft TechNet Gallery


BizTalk DevOps: How to configure Receive Handlers from existing Receive locations with PowerShell

$
0
0

Following the topic from my previous post, when we are configuring/optimizing a new environment, if some features are installed like EDI features or RosettaNet Accelerator, if we create different or dedicated host and host instances for each functionality, for example a host instance for receive, send, process (orchestrations), tracking and so on; of course then we need to associate them as a specific handler of each adapter (receive or send handler) and if we want to delete the “BizTalkServerApplication” as a receive handler from each adapter… we can’t!

This happens because, at least, both EDI and RosettaNet will create during the installation some Receive Ports:

  • BatchControlMessageRecvPort with a receive location BatchControlMessageRecvLoc using SQL Adapter
  • ResendReceivePort with a receive location ResendReceiveLocation using SQL Adapter
  • LOB_To_PrivateInitiator with a receive location LOB_To_PrivateInitiator using SQL Adapter
  • LOB_To_PrivateResponder with a receive location LOB_To_PrivateResponder using SQL Adapter

And all these ports, by default during the installation, are configured with the only existing Receive handler available at the time: “BizTalkServerApplication”.

To accomplish the task of deleting “BizTalkServerApplication” as a receive handler of each adapter, we need to do basically the same steps described in my last post:

  • Manually reconfigure the Receive handler for each the existing receive location first, configuring them with the new Receive Handler;
  • and then manually delete the “BizTalkServerApplication” as a Receive handler for each adapter;

This task can be more normal to happen on the first time we configure/optimize the environment – day one of the BizTalk Server – but can be more critical if you reach to an existing environment, already containing several BizTalk Applications running, that is not configured according to best practices in terms of host and host instances.

Once again, all of these tasks are time consuming, and to be fair… again…, they are a little boring to do after we know how to do it manually;

So how can we automate tasks? and reuse them whenever necessary and at the same time saving significant time for other tasks?

Using PowerShell is a good option J. Windows PowerShell is a Windows command-line shell designed especially for system administrators and can be used by BizTalk administrators to help them in automating repetitive tasks or tasks that are time consuming to perform manually.

This is a simple script that allows you to configure the receive handlers associated with all the existing Receive Ports in your environment that are using the SQL Adapter, but this can be easily changed to cover all the Receive Locations independently of the configured adapter:

$catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$catalog.ConnectionString = "SERVER=$bizTalkDbServer;DATABASE=$bizTalkDbName;Integrated Security=SSPI"

foreach($receivePort in $catalog.ReceivePorts)
{
    # For each receive location in your environment
    foreach($recLocation in $receivePort.ReceiveLocations)
    {
        # In this case I want only Receive location that are using SQL Adapter
        if($recLocation.ReceiveHandler.TransportType.Name -eq 'SQL')
        {
            # Let's look for receive handlers associated with SQL Adapter
            foreach ($handler in $catalog.ReceiveHandlers)
            {
                # if is a SQL Adapter Receive Handler
                if ($handler.TransportType.Name -eq "SQL")
                {
                    # And is not BizTalkServerApplication, then configure that as the handler of the receive location
                    # Note: that in this case we will configure as a Receive Handler of the Receive location, the first
                    #       receive handler that we find that is not the "BizTalkServerApplication"
                    #       because the goal is to delete this handler
                    if($handler.Name -ne 'BizTalkServerApplication')
                    {
                        $recLocation.ReceiveHandler = $handler
                        break
                    }
                }
            }
        }
    }
}
$catalog.SaveChanges()

Prerequisites for this script: The host, host instances and Receive handlers needs to be already configured in your environment before you run the script;

THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

The full script can be found and download on Microsoft TechNet Gallery:
PowerShell to Configure Receive Handlers from existing Receive locations (3.0 KB)
Microsoft TechNet Gallery


BizTalk DevOps: Configure the Default Send Handler as the Send Handler for each existing static Send Ports with PowerShell

$
0
0

In the sequence of my last two post (here and here) and following the same topic, in order to finalize it, let’s talk about the last option and see how we can accomplish the same goal but this type configuring the Send Handler for existing static Send Ports in your environment.

Well, the two previous post are, in my opinion, more critical than this one for se simple reason that the default BizTalk installation will had ports in your environment that needs to be configure if you want to configure BizTalk Host in a High Availability way, i.e., dedicate logical hosts to run specific areas of functionality such as receiving messages, sending messages, processing orchestrations or tracking data.

However, and although less critical, static send ports can also be a problem in some scenarios, for example:

  • If you install ESB Toolkit before configuring your hosts for each functionality, because during the ESB Toolkit installation it will also be created a static send port call “ALL.Exceptions” that connects with SQL “EsbExceptionDb” database. And this port will be configured with the default send handler (at that time) configured in your environment, that is by default the “BizTalkServerApplication”
  • but also if you reach to an existing environment, already containing several BizTalk Applications running, that is not configured according to best practices in terms of host and host instances (dedicate logical hosts for each functionality).

Once again, we need to do basically do the same steps described in my last two posts to accomplish the task of deleting “BizTalkServerApplication”, this time as a send handler of each adapter:

  • Manually reconfigure the Send handler for each the existing Static Send Port first, configuring them with the new or correct Send Handler;
  • and then manually delete the “BizTalkServerApplication” as a Send handler for each adapter;

You may have heard this before, but it never hurts, all of these tasks are time consuming, and a little boring to do after a while or if we need to do it several times;

So how can we automate tasks? and reuse them whenever necessary and at the same time saving significant time for other tasks?

Using PowerShell is a good option J. Windows PowerShell is a Windows command-line shell designed especially for system administrators and can be used by BizTalk administrators to help them in automating repetitive tasks or tasks that are time consuming to perform manually.

This is a simple script that allows you to configure the Send handler associated with all the existing Static Send Ports in your environment independently of the adapter that is configured:

$catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$catalog.ConnectionString = "SERVER=$bizTalkDbServer;DATABASE=$bizTalkDbName;Integrated Security=SSPI"

foreach($SendPort in $catalog.SendPorts)
{
    # For each receive location in your environment
    if($sendPort.IsDynamic -eq $False)
    {
        # Let's look for send handlers associated with Adapter configured in the send port
        foreach ($handler in $catalog.SendHandlers)
        {
            # if the Send Handler is associated with the Adapter configured in the send port
            if ($handler.TransportType.Name -eq $sendPort.PrimaryTransport.TransportType.Name)
            {
                # We will configured the port with the default send handler associated in each adapter in you system
                # independently if it is "BizTalkServerApplication" or not.
                # Note: it's is recomended that you first configure the default send handlers for each adapter
                #       and also not to use the "BizTalkServerApplication" (my personal recomendation)
                if($handler.IsDefault)
                {
                    $sendPort.PrimaryTransport.SendHandler = $handler
                    break
                }
            }
        }
    }
}
$catalog.SaveChanges()

Prerequisites for this script: The host, host instances and Receive handlers needs to be already configured in your environment before you run the script;

THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

The full script can be found and download on Microsoft TechNet Gallery:
PowerShell to Configure the Default Send Handler for each static Send Port (3.0 KB)
Microsoft TechNet Gallery


BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 Updated to v1.9.0.0

$
0
0

Exciting news… Version 1.9.0.0 of BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 and 2013 is now available!

Here’s the change-log for this release:

  • Ten new functoids:
    • Advance Logical AND Functoid
    • Advance Equal Functoid
    • Advance Greater Than Functoid
    • Advance Greater Than or Equal To Functoid
    • Advance Less Than Functoid
    • Advance Less Than or Equal To Functoid
    • Advance Not Equal Functoid
    • Advance Logical NOT Functoid
    • Advance Logical OR Functoid
    • If-Then-Else Functoid
  • Updates on the deployment scripts
What’s new in this version?

Although BizTalk Server provides many functoids to support a range of diverse operations when working with conditional mapping, we are limited to the number of existing operations or otherwise have to use custom XSLT.

This new library – Logical Functoids – includes a suit of functoids to perform a variety of logical operations, often controlling whether a particular element or attribute is created in an output instance message. Most of the Logical Functoids are a replica of the existent Logical Functoids that came out-of-the-box with BizTalk Server with the advantage that these will allow you to connect with others Custom String Functoids. They are fully compatible with existing functoids and don’t produce any more additional code.

biztalk-mapper-extensions-utilitypack-2013-r2-v1-9

See also the reason I decide to create this library here: Why is so hard to make a simple If-Then-Else Functoid? … well, not anymore!

Advance Logical AND Functoid

Use the Advance Logical AND functoid to return the logical AND of input parameters. It determines whether all of the specified input parameters are true.

Parameters

This functoid requires a minimum of two input parameters and a maximum of one hundred:

  • Parameter 1: A value that can be evaluated as either True or False.
  • Parameters 2 – 100: Values that can be evaluated as either True or False.

Returns the logical AND of parameters. True if all of the specified input parameters evaluate to True; False otherwise.

01-Advance-Logical-AND-Functoid

Advance Equal Functoid

Use the Advance Equal functoid to return the value “true” if the first input parameter is equal to the second input parameter. It tests whether the two input parameters are equal.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested for equality with the parameter 2.
  • Parameter 2: A value to be tested for equality with the parameter 1.

Returns “True” if the values of the two input parameters are equal; “False” otherwise.

02-Advance-Equal-Functoid

Advance Greater Than Functoid

Use the Advance Greater Than functoid to return the value “true” if the first input parameter is greater than the second input parameter. It tests whether the first input parameter is greater than the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is greater than parameter 2.
  • Parameter 2: A value to be tested to determine whether it is greater than parameter 1.

Returns “True” if the value of the first input parameter is greater than the value of the second input parameter; “False” otherwise.

03-Advance-Greater-Than-Functoid

Advance Greater Than or Equal To Functoid

Use the Advance Greater Than or Equal To functoid to return the value “true” if the first input parameter is greater than or equal to the second input parameter. It tests whether the first input parameter is greater than or equal to the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is greater than or equal to parameter 2.
  • Parameter 2: A value to be tested to determine whether it is greater than or equal to parameter 1.

Returns “True” if the value of the first input parameter is greater than or equal to the value of the second input parameter; “False” otherwise.

04-Advance-Greater-Than-or-Equal-To-Functoid

Advance Less Than Functoid

Use the Advance Less Than functoid to return the value “true” if the first input parameter is less than the second input parameter. It tests whether the first input parameter is less than the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is less than parameter 2.
  • Parameter 2: A value to be tested to determine whether it is less than parameter 1.

Returns “True” if the value of the first input parameter is less than the value of the second input parameter; “False” otherwise.

05-Advance-Less-Than-Functoid

Advance Less Than or Equal To Functoid

Use the Advance Less Than or Equal To functoid to return the value “true” if the first input parameter is less than or equal to the second input parameter. It tests whether the first input parameter is less than or equal to the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is less than or equal to parameter 2.
  • Parameter 2: A value to be tested to determine whether it is less than or equal to parameter 1.

Returns “True” if the value of the first input parameter is less than or equal to the value of the second input parameter; “False” otherwise.

06-Advance-Less-Than-or-Equal-To-Functoid

Advance Not Equal Functoid

Use the Advance Not Equal functoid to return the value “true” if the first input parameter is not equal to the second input parameter. It tests whether the two input parameters are not equal.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested for inequality with parameter 2.
  • Parameter 2: A value to be tested for inequality with parameter 1.

Returns “True” if the values of the two input parameters are not equal; “False” otherwise.

07-Advance-Not-Equal-Functoid

Advance Logical NOT Functoid

Use the Advance Logical NOT functoid to return the logical inversion of the input parameter. Use to logically negate the value of the Boolean input parameter.

Parameters

This functoid requires one input parameter only:

  • Parameter 1: A value that can be evaluated as either True or False.

Returns “True” if the specified input parameter evaluates to False; “False” otherwise.

08-Advance-Logical-NOT-Functoid

Advance Logical OR Functoid

Use the Advance Logical OR functoid to return the logical OR of input parameters. The input parameters have to be Boolean or numeric. It determines whether any of the specified input parameters are true.

Parameters

This functoid requires a minimum of two input parameters and a maximum of one hundred:

  • Parameter 1: A value that can be evaluated as either True or False.
  • Parameters 2 – 100: Values that can be evaluated as either True or False.

Returns “True” if any of the specified input parameters evaluate to True; “False” otherwise.

09-Advance-Logical-OR-Functoid

If-Then-Else Functoid

Use the If-Then-Else Functoid to return a value from one of two input parameters based on a condition. If the condition (first input) is True, then the value of the second input parameter is returned, otherwise the Third input is returned.

Parameters

This functoid requires three input parameters:

  • Boolean representing the result of a previous condition
  • The value to be returned if the condition is True.
  • The value to be returned if the condition is False.

If the condition is True, then the value of the second input parameter is returned, otherwise the Third input is returned.

10-If-Then-Else-Functoid

You can found and download Source Code, Application Binaries and Documentation in CodePlex BizTalk Mapper Extensions UtilityPack home page:

BizTalk Mapper Extensions UtilityPack
CodePlex

 

or from MSDN Code Gallery:

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 (685.6 KB)
Microsoft | MSDN Code Gallery


Speaking at Integrate 2016 | May 11th-13th 2016 | London, England | A new set of BizTalk Server Tips and Tricks

$
0
0

Bigger and better this is what to expect in this fourth conference that will take place in London. I think we can say with great certainty that this will be the biggest integration conference in the world that will happen this year! (of course related to Microsoft technologies, I don’t want to compare with other integration technologies)

Integration-2016-banner

This will be a three-day event purely focused to the Microsoft Integration stack, so we invite you all to join us in London, England. The event will take place at ExCeL London Exhibition Center and once again is being organized by BizTalk360 in conjunction with Microsoft. Please visit this link for more detail about the event and for registration information.

We will have:

  • This is not anymore a BizTalk related event this is now an Integration event covering a broad set of technologies that will appeal to integration focused professionals:
    • BizTalk Server and its expected new release BizTalk Server 2016
    • Azure App Service – API Apps and Logic Apps – PowerApps and Microsoft flows
    • Azure Service Bus (Event Hubs and Messaging)
    • And other topics like Internet of Things (IoT), Azure API Management, Azure Stream Analytics and Power BI or even Open Source technologies
  • 27 speakers (16 Integration MVP and 11 Microsoft program managers) and 27 sessions
    • The first half of the sessions and speakers are represented by Microsoft product group and the second half from Microsoft Integration MVP’s
  • There will be a paid Live Stream option for those who are not able to attend locally to this event see more about this option here.

This will also be an amazing opportunity to Network, Connect, and Reconnect with Colleagues. Meet some of the people you have been following on Twitter and blogs and network with them and others who are interested in the same things you are. To hang out with the smartest people you know – and I’m not talking about the speakers or Microsoft! I’m talking about you guys! – last reports mention that more than 370 attendees from over 150 companies across 25+ countries are going to attend the event, so imagine the experience that all of us have combined!

So my advice is: Don’t be afraid or shy, don’t wait for people come to you, instead, take your chances, engage the people you want to meet by easily saying "Hi my name is… ". This experience can be a great morale booster for you, lifelong friendships and connections have evolved from such conferences – I’m speaking for personal experience!

Integration-2016-engage-networking

And me to facilitate this approach or initiative to engage people – I will take near to 50 BizTalk cool gifts to distribute among the attendees that probably will ask questions in my session or who engage me during the event to have a simple conversation – doesn’t need to be about BizTalk or technologies it can be a simple introduction or normal conversation Smile.

Integration-2016-gifts

I’m also thrilled to be once again (fourth time) a speaker in this amazing event that I help to construct among with the other BizTalkCrew members (Nino Crudele, Steej-Jan Wiggers, Tord G. Nordahl and Saravana Kumar).

Integration-2016-im-speaking

I liked my session last year and the feedback that I received and based on the time that I have to present (30 min session) I decided that my topic would be one again about tips and tricks for developers and admins: “A new set of BizTalk Server Tips and Tricks”

Session Abstract

It’s critical to use good tools and techniques to maintain, support and produce new working solutions as quickly as possible. In this session, Sandro will introduce you to a new set of useful BizTalk Server Tips and Tricks, acquired by years of experience in the field.

The session will cover the expectations for all the roles: architects, managers, developers, and administrators. Topics include BizTalk migration strategy, content-based routing techniques, Mapping, BizTalk administration tips, extending BizTalk out-of-the-box capabilities and many more.

Integration-2016-sandro-session

I hope that, like me, you find it an interesting topic! See you there!

And remember, this annual conference has become a must-attend event for those interested in integration, so check more details about this event here.



Microsoft Integration Stencils Pack V2.0 for Visio 2016/2013 is now available

$
0
0

Finally, I found some extra minutes to be able to write and after spending all my available free time over the last few weeks, mainly in researching but also in creating several ones… I’m happy to say that a major version, 360 new shapes – that is the double of the previous version, of Microsoft Integration Stencils Pack for Visio 2016/2013 is now available for you to download.

With these new additions, this package now contains an astounding total of 721 shapes (symbols/icons) that will help you visually represent Integration architectures (On-premise, Cloud or Hybrid scenarios) and solutions diagrams in Visio 2016/2013. It will provide symbols/icons to visually represent features, systems, processes and architectures that use BizTalk Server, Microsoft Azure and related technologies.

  • BizTalk Server
  • Microsoft Azure
    • BizTalk Services
    • Azure App Service (API Apps, Web Apps, Mobile Apps, PowerApps and Logic Apps)
    • Microsoft Flow
    • Event Hubs
    • Service Bus
    • API Management, IoT and Docker
    • Machine Learning, Stream Analytics, Data Factory, Data Pipelines
    • and so on
  • PowerBI
  • PowerShell
  • And many more…

With so many new shapes, I decide to divide the package in 4 files to be easier to maintain and find the right shapes:

  • Microsoft Integration Stencils v2.0 (416 shapes)
  • MIS Apps and Systems Logo Stencils (60 shapes)
  • MIS IoT Devices Stencils (123 shapes)
  • MIS Support Stencils (122 shapes)
BizTalk Server

Requested by several community member I added two special shapes:

  • The infamous T-Rex
  • and “The Chicken Way”

MIS-Stencils-Pack-BizTalk-Server

BizTalk Services

MIS-Stencils-Pack-BizTalk-Services

Azure App Service, Microsoft Flow and API Management

MIS-Stencils-Pack-App-Services

Azure

MIS-Stencils-Pack-Azure

Infrastructure

MIS-Stencils-Pack-Infraestructure

PowerBI, PowerShell and Service Fabric

MIS-Stencils-Pack-PowerBI

IoT

MIS-Stencils-Pack-IoT

and many more:

MIS-Stencils-Pack-More

That you can use and resize without losing quality.

Again, I didn’t create all of this shapes, maybe half of them, the other half was the work of gathering all the available resources and combine them together, for example, if you’re looking for more or official Azure Visio stencils, then you can find them here: Microsoft Azure, Cloud and Enterprise Symbol / Icon Set – Visio stencil, PowerPoint, PNG.

There are still many points that could be improved as well as adding new stencils but I hope you like the final result.

You can download Microsoft Integration Stencils Pack for Visio 2016/2013 from:

Microsoft Integration Stencils Pack for Visio 2016/2013 (6,4 MB)
Microsoft | TechNet Gallery


Microsoft Integration Stencils Pack v2.1 for Visio 2016/2013 is now available

$
0
0

Because yesterday Portugal was European Champion I decide today to give a gift to the community by making an earlier release of my Microsoft Integration Stencils Pack.

After the major release in June 16, I started to realize that with so many stencils it was becoming a little hard to find, or rather, I was spending too much time to find some representations that I wanted to use in my diagrams. Don’t get me wrong, I will continue to add new stencils and I already did in this release, however, the major improvement that I’m trying to make is to divide the Stencils in different files for a better organization.

With these new additions, this package now contains an astounding total of ~831 (~100 additions) (symbols/icons) that will help you visually represent Integration architectures (On-premise, Cloud or Hybrid scenarios) and solutions diagrams in Visio 2016/2013. It will provide symbols/icons to visually represent features, systems, processes and architectures that use BizTalk Server, Microsoft Azure and related technologies.

  • BizTalk Server
  • Microsoft Azure
    • BizTalk Services
    • Azure App Service (API Apps, Web Apps, Mobile Apps, PowerApps and Logic Apps)
    • Microsoft Flow
    • Event Hubs
    • Service Bus
    • API Management, IoT and Docker
    • Machine Learning, Stream Analytics, Data Factory, Data Pipelines
    • and so on
  • PowerBI
  • PowerShell
  • And many more…

Divided in 8 files to be easier to maintain and find the right shapes:

  • Microsoft Integration Stencils v2.0 (420 shapes)
  • MIS Apps and Systems Logo Stencils (69 shapes)
  • MIS IoT Devices Stencils (123 shapes)
  • MIS Support Stencils (101 shapes)
  • MIS Servers and Hardware v2.1 (39 shapes)
  • MIS Originals v2.1 (22 shapes)
  • MIS Users (27 shapes)
  • MIS Devices v2.1 (30 shapes)

Some of the new additions:

MIS-Stencils-v2.1-last-additions

You can download Microsoft Integration Stencils Pack for Visio 2016/2013 from:

Microsoft Integration Stencils Pack for Visio 2016/2013 (7,1 MB)
Microsoft | TechNet Gallery


Get your BizTalk Server 2016 Stickers!

$
0
0

On 12th May, during my session in the Integrate 2016 event about “A new set of BizTalk Server Tips and Tricks” (you can watch the full session online here) I announce that I had BizTalk Server 2016 stickers to offer (it was a way to buy the audience hehehe).

sticker-buying-votes

I always felt a little “jealousy”, maybe not the best word to describe, probably: “sad”, “eager to have or find”, some kind of merchandise related to the technology “I love”: BizTalk Server:

  • a bag, a shirt, jacket or a simple sticker

Most of the times just to annoy/upset my fellow coworkers or MVPs Smile. Although they exist, I have a BizTalk Server 2002 jacket, they are very rare to find, believe me!

And in an epoch or popular trend that what you will find more is stickers to put in your laptop from Azure, Gulp, Visual Studio and more recently Microsoft Flow, PowerApps, Hololens, API and many more stickers… you will not find any BizTalk Server stickers!

So, in the absence of official Microsoft sticker I decide to put my hands in the mud and create them.

I did not expect, but the result for me was a big success and the attendees and speakers seem to have enjoy them:

sticker-giveawaysticker-thanks-01sticker-thanks-02

I had several requested after my session but unfortunately I only took close to 100 stickers for an event with more than 300 attendees…

sticker-request

And some of them arrived to Australia after the event!

sticker-in-australia

But now I finally got a free time to publish them and you are now able to download  and print them:

There are the “dear”/”sweet” T-Rex version:~

stickers-sandro-pereira-01

And the infamous badass T-Rex version:

stickers-sandro-pereira-02

They are in the perfect size/resolution, you just need to download the zip file and send it to a graphic shop!

Hope you enjoy!

You can download BizTalk Server 2016 Stickers from:

BizTalk Server 2016 Stickers (7,3 Kb)
Microsoft | TechNet Gallery


How to fix or configure the Deployment Properties of a Visual Studio BizTalk Project with PowerShell version 2

$
0
0

It is nothing new that before you can deploy a solution from Visual Studio into a BizTalk application, you must first set project properties, especially the Server and the Configuration Database. Otherwise two things may happen:

  • Deployment will fail when you try do to deploy it through Microsoft Visual Studio or will you are redeploying a previously deployed BizTalk project.
  • The assemblies and all their artifacts will be deployed to and unwanted BizTalk Application (normally BizTalk Application 1)

Previous I wrote a post regarding how to fix the Deployment Properties of a Visual Studio BizTalk Project with PowerShell, you can know more about it here. However, during my talks about tips and tricks I realize that the previous script was a little limited, it only worked if the deployment properties already exist in the file. This means that, if we were working on a new project or we obtaining a copy of the project from the source control, the script didn’t correctly setup or fix the deployment settings.

I promised that I would fix it and now I’m keeping my word. And I have to say that, this is probably one of scripts that I use the most and the reason why is…

So, why this script is important?

Well, if a solution in Visual Studio contains multiple projects, you need to manually configure the deployment properties for each project.

And you must keep in mind that these setting are under the Project user option file(s) (“*.btproj.user”) that are typically not under source control. The reason is that the Visual Studio deployment feature main focus is for development scenarios where one user settings might differ from another. And it will be up to you, or your client, to decide if you want these files to be checked in and available to all of the developers on your team. (you can read it more about this here)

So, this seems a slight and easy task but now imagine that you have almost 200 projects inside a unique Visual Studio Solution! It will be an insane and consuming task to do and most likely to happen is you to fall asleep in front of the pc.

With this PowerShell you will be able to parameterize all projects inside a Visual Studio Solution running a single line of code and avoid spending numerous hours doing this task manually.

PowerShell script overview
    $allPropertyGroup = $xml.Project.PropertyGroup
    foreach($node in $allPropertyGroup)
    {
        if($node.Server -ne $null)
        {
            #If the Deployment Setting already exists, then we just need to update them
            $addNewNodeFlag = $false
            $node.Server= $ServerName;
            $node.ConfigurationDatabase= $DatabaseName;
            $node.ApplicationName= $ApplicationName;
            $node.Redeploy= $RedeployFlag;
            $node.Register= $RegisterFlag;
            $node.RestartHostInstances= $RestartHostInstancesFlag;
        }
    }

    if($addNewNodeFlag -eq $true)
    {
        #Add a PropertyGroup node if the Deployment Setting doesn't exist
        $newXmlPropertyGroup = $xml.CreateElement("PropertyGroup", "http://schemas.microsoft.com/developer/msbuild/2003")
        $newXmlPropertyGroup.SetAttribute(“Condition”,”'`$(Configuration)|`$(Platform)' == 'Debug|AnyCPU'”);

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("Server", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($ServerName));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("ConfigurationDatabase", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($DatabaseName));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("ApplicationName", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($ApplicationName));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("Redeploy", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($RedeployFlag));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("Register", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($RegisterFlag));

        $newXmlElement = $newXmlPropertyGroup.AppendChild($xml.CreateElement("RestartHostInstances", "http://schemas.microsoft.com/developer/msbuild/2003"));
        $newXmlTextNode = $newXmlElement.AppendChild($xml.CreateTextNode($RestartHostInstancesFlag));

        $xml.Project.InsertAfter($newXmlPropertyGroup, $xml.Project.PropertyGroup[1])
    }

THIS SQL SCRIPT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

You can download the PowerShell Script used here from:

BizTalk Server: Fixing BizTalk Project Deployment Properties with PowerShell (1 KB)
Microsoft | TechNet Gallery


How to fix or configure the Signing Properties of a Visual Studio BizTalk Project with PowerShell version 2

$
0
0

In the previous post I provide a fix to the PowerShell script to that is able to configure the Deployment Properties of a BizTalk project, keeping my word, at least half of it, because I also found the same problems in the PowerShell script to fix or configure the Signing Properties of a BizTalk Project, i.e., it only worked if the signing properties already existed in the file(s) (.btproj). This means that:

  • if we obtain a copy of the project from the source control that have already have these properties defined, it will work otherwise the script was unable to properly set these properties.
  • if we were working on a new project then definitely the script didn’t set up the signing properties.

Again, I promised that I would fix it and now I’m keeping the rest of my word. Along with the previous, this is probably one of scripts that I use the most and the reason why is…

So, why this script is important?

Again, and this is nothing new, before deploying a BizTalk project we must first strongly sigh the assemblies involved in the project to give them a unique identification for allowing them to be installed into the GAC.

GAC (Global Assembly Cache) is a machine code cache that stores assemblies that can be shared by multiple applications on the computer. This assemblies needs to be strongly signed so that they can have a unique identification in the GAC.

A strong-named assembly provides several security benefits:

  • A strong name guarantees the uniqueness of the assembly by assigning a digital signature and a unique key pair.
  • A strong name protects the lineage of the assembly by ensuring that no one else can generate a subsequent version of the assembly.
  • A strong name provides a strong integrity check to guarantee that the contents of the assembly have not changed since the last build.

In the process of deploying a BizTalk solution, Visual Studio first builds the assemblies. The deployment process requires that each assembly is strongly signed. You can strongly sign your assemblies by associating each project in the solution with a strong name assembly key file. That is an easy and rapid task (non-time consuming task). However, if a solution in Visual Studio contains multiple projects, you must separately configure properties for each project.

This seems a slight and easy task but now imagine that you have almost 200 projects inside a unique Visual Studio Solution! It will be an insane operation and the most likely to happen is you to fall asleep in front of the pc… once again.

With this PowerShell you will be able to parameterize all projects inside a Visual Studio Solution running a single line of code and avoid spending numerous hours doing this task manually.

PowerShell script overview
    $allPropertyGroup = $xml.Project.PropertyGroup
    foreach($node in $allPropertyGroup)
    {
        if($node.AssemblyOriginatorKeyFile -ne $null)
        {
            $addNewKeyNodeFlag = $false;
            $node.AssemblyOriginatorKeyFile= $keyName;
        }

        if($node.SignAssembly -ne $null)
        {
            $addNewSignNodeFlag = $false;
            $node.SignAssembly= $true;
        }
    }

    if($addNewKeyNodeFlag -eq $true)
    {
        $childItemGroup = $xml.CreateElement("PropertyGroup",$xdNS)
        $childNone = $xml.CreateElement("AssemblyOriginatorKeyFile",$xdNS)
        $childNone.AppendChild($xml.CreateTextNode($keyName));
        $childItemGroup.AppendChild($childNone)
        $xml.Project.InsertBefore($childItemGroup, $xml.Project.ItemGroup[0])
    }

    if($addNewSignNodeFlag -eq $true)
    {
        $childItemGroup = $xml.CreateElement("PropertyGroup",$xdNS)
        $childNone = $xml.CreateElement("SignAssembly",$xdNS)
        $childNone.AppendChild($xml.CreateTextNode($true));
        $childItemGroup.AppendChild($childNone)
        $xml.Project.InsertBefore($childItemGroup, $xml.Project.ItemGroup[0])
    }

    $allItemGroup = $xml.Project.ItemGroup.None;
    foreach($node in $allItemGroup)
    {
        if($node.Include -eq $keyName)
        {
            $addKeyToSolutionFlag = $false;
        }
    }

    if($addKeyToSolutionFlag -eq $true)
    {
        $childItemGroup = $xml.CreateElement("ItemGroup",$xdNS)
        $childNone = $xml.CreateElement("None",$xdNS)
        $childNone.SetAttribute("Include", $keyName)
        $childItemGroup.AppendChild($childNone)
        $xml.Project.InsertBefore($childItemGroup, $xml.Project.Import[0])
    }
THIS SQL SCRIPT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

You can download the PowerShell Script used here from:

BizTalk Server: Fixing BizTalk Project Signing Properties with PowerShell (2 KB)
Microsoft | TechNet Gallery


Viewing all 287 articles
Browse latest View live