When you deploy a new BizTalk Server solution to a different environment, and if for some reason, you don’t use or cannot use CI/CD (Continuous integration and continuous delivery):
Your environment is too small to justify using CI/CD;
The client doesn’t provide access to Visual Studio Team Services (VSTS);
Don’t like to use BTDF (Deployment Framework for BizTalk);
Not using custom tools like BizTalk Bindings Exporter tool;
Then one of the most common tasks you need to do is to change all the URI from all the ports, Receive Ports and Send Ports, from the binding files.
Of course, you can do it in many different ways, for example:
Before import to the new environment, open notepad or any other editor, and manually replace all the Inbound Transport URL and Outbound Transport URL;
Import AS IS and on the Administration Console, manually change these parameters;
Or script this process;
This is not always a quick and easy job. Luckily for us, these tasks can be automated, leading them to become simpler, faster, and avoid fewer errors.
This script that I will be showing you can be very useful, for example, in scenarios that during the lifecycle of existing applications, one system got updated or migrated to a different version or server (or both), and we need to update the URI or part of it on a range of the Receive Locations according to the new configuration/specification.
PowerShell script overview
With this PowerShell sample, we will be able to set or update the URI (address) or part of the URI on a list of BizTalk Server Receive Locations deployed in your BizTalk Server environment.
foreach($receivePort in $catalog.ReceivePorts)
{
# For each receive location in your environment
foreach($recLocation in $receivePort.ReceiveLocations)
{
# In this case ...
if($rcvLocations.Contains($recLocation.Name))
{
[string] $address = $recLocation.Address
$address = $address.Replace("DEV-SERVER-NAME","PRO_SERVER-NAME")
# Sample of additional custom changes
if($address.Contains("PREFIX"))
{
$address = $address.Replace("DATABASE","DATABASE-WITH-PREFIX-A")
}
else
{
$address = $address.Replace("DATABASE","DATABASE-WITH-PREFIX-B")
}
$recLocation.Address = $address
}
}
}
This script was tested in BizTalk Server 2016.
Download
THIS POWERSHELL SCRIPT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.
Do you feel difficult to keep up to date on all the frequent updates and announcements in the Microsoft Integration platform and Azure iPaaS?
Integration weekly update can be your solution. It’s a weekly update on the topics related to Integration – enterprise integration, robust & scalable messaging capabilities and Citizen Integration capabilities empowered by Microsoft platform to deliver value to the business.
With security be every day more important, this also brings additional problems (good problems) to BizTalk Server Administrators during the deployment of new BizTalk Server Applications or even during the lifecycle of existing applications:
What a few years ago was anonymous, because they were internal services, they are now authenticated.
Nowadays, many organizations implement a combination of Minimum Password Age policy also enforcing a Password History policy that requires to reset the password, even for services accounts, from time to time and avoid reusing the same password.
These tasks lead to BizTalk Server Administrators to manually set the user credentials in a range of ports (send and receive). This is not always a quick and easy job.
Luckily for us, these tasks can be automated, leading them to become simpler, faster, and avoid fewer errors.
PowerShell script overview
With this PowerShell sample, we will be able to set or update the Authentication Credential on a list of BizTalk Server Receive Locations deployed in your BizTalk Server environment.
foreach($receivePort in $catalog.ReceivePorts)
{
# For each receive location in your environment
foreach($recLocation in $receivePort.ReceiveLocations)
{
# In this case ...
if($rcvLocations.Contains($recLocation.Name))
{
$bindingConfiguration = $recLocation.TransportTypeData
if($bindingConfiguration.CustomProps.Password.vt -eq "1")
{
$bindingConfiguration.CustomProps.Password.InnerText = "my_password"
$bindingConfiguration.CustomProps.Password.vt = "8"
}
else
{
$passwordElement = $bindingConfiguration.CreateElement("Password")
$passwordElement.SetAttribute("vt", "8")
$passwordElement.InnerText = "my_password"
$bindingConfiguration.CustomProps.InsertAfter($passwordElement, $bindingConfiguration.CustomProps.SuspendMessageOnFailure)
}
if($bindingConfiguration.CustomProps.UserName.vt -eq "8")
{
$bindingConfiguration.CustomProps.UserName.InnerText = "my_username"
}
$transportConfigData = $bindingConfiguration.InnerXml
$recLocation.TransportTypeData = $transportConfigData
}
}
}
This script was tested in BizTalk Server 2016.
Download
THIS POWERSHELL SCRIPT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.
It was only 3 days ago that I released a major version. Still, with all of this new stuff and announcements on Ignite 2020, I just decide to make a minor update to my stencil package, especially because all the logos of Power Platform components have changed.
What’s new in this version?
These are the list of changes and additions present in this major release:
New shapes: There are new shapes on the following Visio Stencils files (.vssx):
MIS Power Platform Stencils: the picture above is presenting the new logo icons of Power BI, Power Apps, Power Automate, and Power Virtual Agents.
MIS Azure Stencils and MIS Azure Additional or Support Stencils: there were a few new icons add to the stencils, most of them related to Azure Arc and Storage Account and some icon updates.
MIS Office, Office 365, and Dynamics 365: New shapes added to this stencil with more Office 365 products.
Automation: minor fixes on the automation scripts
SVG files: new SVG files added.
Microsoft Integration, Azure, Power Platform, Office 365 and much more Stencils Pack
Microsoft Integration, Azure, Power Platform, Office 365 and much more Stencils Pack it’s a Visio package that contains fully resizable Visio shapes (symbols/icons) that will help you to visually represent On-premise, Cloud or Hybrid Integration and Enterprise architectures scenarios (BizTalk Server, API Management, Logic Apps, Service Bus, Event Hub…), solutions diagrams and features or systems that use Microsoft Azure and related cloud and on-premises technologies in Visio 2016/2013:
BizTalk Server
Microsoft Azure
Integration
Integration Service Environments (ISE)
Logic Apps and Azure App Service in general (API Apps, Web Apps, and Mobile Apps)
Azure API Management
Messaging: Event Hubs, Event Grid, Service Bus, …
Azure IoT and Docker
AI, Machine Learning, Stream Analytics, Data Factory, Data Pipelines
SQL Server, DocumentDB, CosmosDB, MySQL, …
and so on
Microsoft Power Platform
Microsoft Flow
PowerApps
Power BI
Office365, SharePoint,…
DevOps and PowerShell
Security and Governance
And much more…
… and now non-related Microsoft technologies like:
SAP Stencils
The Microsoft Integration Stencils Pack is composed of 27 files:
Microsoft Integration Stencils
MIS Additional or Support Stencils
MIS AI and Machine Learning Stencils
MIS Apps and Systems Logo Stencils
MIS Azure Additional or Support Stencils
MIS Azure Black and Gray
MIS Azure Old Versions
MIS Azure Stencils
MIS Black and Cyan
MIS Buildings Stencils
MIS Databases and Analytics Stencils
MIS Deprecated Stencils
MIS Developer Stencils
MIS Devices Stencils
MIS Files and Message Types Stencils
MIS Generic Stencils
MIS Infrastructure and Networking Stencils
MIS Integration Fun
MIS Integration Patterns Stencils
MIS IoT Stencils
MIS Office, Office 365 and Dynamics 365
MIS Power BI Stencils
MIS Power Platform Stencils
MIS SAP Stencils
MIS Security and Governance
MIS Servers (Hexagonal) Stencils
MIS Users and Roles Stencils
Organisational Stencils
That you can use and resize without losing quality, in particular, the new shapes.
Do you feel difficult to keep up to date on all the frequent updates and announcements in the Microsoft Integration platform and Azure iPaaS?
Integration weekly update can be your solution. It’s a weekly update on the topics related to Integration – enterprise integration, robust & scalable messaging capabilities and Citizen Integration capabilities empowered by Microsoft platform to deliver value to the business.
Well, the thing is, you cannot say to me, “…these stencils look fantastic, but are currently unusable or worthless because…” my brain enters in a crazy mode, and I can only free myself when all the work is finished successfully and that these resources are handy :).
Jokes apart, I use these resources for a long time, I create these for myself, but I knew that they were not perfects. The major problem was that fixing that amount of icons was a time-consuming task. However, with the number of people using these stencils increasing and reporting those problems, I decided to resolve them once and for all.
Today I can announce that I close all the open issues reported on the git repository of this package.
What’s new in this version?
These are the list of changes and additions present in this major release:
Restructure of Visio Stencils files (.vssx) names: the package is now composed of 26 Visio Stencils files.
Some of them were renamed: PowerApps and Flow is now Power Platform; Files is now Files and Message Types Stencils, …
Some were merged: Power BI was merged in the new Power Platform Visio Stencil file; Azure Others was merged in the Azure Additional or Support Stencils, Office365 is now Office, Office 365 and Dynamics 365…
New Visio Stencils files: MIS Black and Cyan and MIS Azure Black and Gray;
New Organisational Stencils file add by Jacob Mansfield;
New shapes: New shapes were added on the majority of the Visio Stencils files (.vssx). Probably the one that was most affected was Azure Stencils and Office, Office 365 and Dynamics 365;
Text annotationsand connector points: The issues regarding text annotations (legend appear in the center of the icon instead of bellow) and connector points (lack of proper connect points) are now solved in all the Visio Stencils files (.vssx). This was a massive work!
Order of the icons: all the icons appear in alphabetic order inside the Visio Stencil file, with the exception in some cases of the first ones that in some case contains the main shape of the context, like in Microsoft Integration Stencils, the first icon is BizTalk Server Logo.
Automation: add 3 PowerShell script to this package for you to:
Standardize all SVG filenames available in all subfolders by:
Not using spaces. Some software will not recognize file names with spaces, and file names with spaces must be enclosed in quotes when using the command line. Having spaces in URL’s are also not a good experience and should be avoided. For all these reasons I decided to remove all spaces and replace it will ‘-‘ (dash);
Names are in Camel case, where the first letter of each section of text is capitalized (of course respecting the line above), e.g., File-Name.svg
Having extension in lowercase, e.g., *.svg
List all the detected duplicate files.
Automatically install (configure) all the Visio files (*.vssx), so that next time you open Visio, they will be there available;
And also the possibility to download the most recent version from GitHub and install it locally;
Standardize shape sizes: standardize the shapes sizes in all to be more or less all of the same sizes Visio Stencils files.
Fixed some minor stencils layouts;
SVG files: new SVG files added.
These changes were a massive job that stole all my free time apart from my work and family time, from the past three weeks! So I hope you appreciate it!
Microsoft Integration, Azure, Power Platform, Office 365 and much more Stencils Pack
Microsoft Integration, Azure, Power Platform, Office 365 and much more Stencils Pack it’s a Visio package that contains fully resizable Visio shapes (symbols/icons) that will help you to visually represent On-premise, Cloud or Hybrid Integration and Enterprise architectures scenarios (BizTalk Server, API Management, Logic Apps, Service Bus, Event Hub…), solutions diagrams and features or systems that use Microsoft Azure and related cloud and on-premises technologies in Visio 2016/2013:
BizTalk Server
Microsoft Azure
Integration
Integration Service Environments (ISE)
Logic Apps and Azure App Service in general (API Apps, Web Apps, and Mobile Apps)
Azure API Management
Messaging: Event Hubs, Event Grid, Service Bus, …
Azure IoT and Docker
AI, Machine Learning, Stream Analytics, Data Factory, Data Pipelines
SQL Server, DocumentDB, CosmosDB, MySQL, …
and so on
Microsoft Power Platform
Microsoft Flow
PowerApps
Power BI
Office365, SharePoint,…
DevOps and PowerShell
Security and Governance
And much more…
… and now non-related Microsoft technologies like:
SAP Stencils
The Microsoft Integration Stencils Pack is composed of 27 files:
Microsoft Integration Stencils
MIS Additional or Support Stencils
MIS AI and Machine Learning Stencils
MIS Apps and Systems Logo Stencils
MIS Azure Additional or Support Stencils
MIS Azure Black and Gray
MIS Azure Old Versions
MIS Azure Stencils
MIS Black and Cyan
MIS Buildings Stencils
MIS Databases and Analytics Stencils
MIS Deprecated Stencils
MIS Developer Stencils
MIS Devices Stencils
MIS Files and Message Types Stencils
MIS Generic Stencils
MIS Infrastructure and Networking Stencils
MIS Integration Fun
MIS Integration Patterns Stencils
MIS IoT Stencils
MIS Office, Office 365 and Dynamics 365
MIS Power BI Stencils
MIS Power Platform Stencils
MIS SAP Stencils
MIS Security and Governance
MIS Servers (Hexagonal) Stencils
MIS Users and Roles Stencils
Organisational Stencils
That you can use and resize without losing quality, in particular, the new shapes.
Do you feel difficult to keep up to date on all the frequent updates and announcements in the Microsoft Integration platform and Azure iPaaS?
Integration weekly update can be your solution. It’s a weekly update on the topics related to Integration – enterprise integration, robust & scalable messaging capabilities and Citizen Integration capabilities empowered by Microsoft platform to deliver value to the business.
And now, I am trying to add more functionalities like:
Automatically install (configure) all the Visio files (*.vssx), so that next time you open Visio, they will be there available;
And also the possibility to download the most recent version from GitHub and install it locally;
Well, the first task is quite simple, you just need to locate all the *.vssx files and copy to the folder “C:Usersyou_userDocumentsMy Shapes” (that is the default folder for the Visio custom shapes)
The second part is a little trick. I found many resources while searching on the internet, but none was what I intended to do. Some were quite nice, but we could easily reach the API Rate limit that is 60 requests per hour for unauthenticated requests or 5000 requests per hour if you use Basic Authentication or OAuth. Or it simply didn’t unzip properly.
I want to archive a simple way to download a full GitHub repository and unzip it locally. Simple as going in the browser and select Code > Download ZIP, that’s it!
Since I was doing all this work, I also decide to make it available a generic PowerShell function that will allow you to download any GitHub Repository.
######################################################################
# #
# Download and Unzip GitHub Repository #
# Author: Sandro Pereira #
# #
######################################################################
function DownloadGitHubRepository
{
param(
[Parameter(Mandatory=$True)]
[string] $Name,
[Parameter(Mandatory=$True)]
[string] $Author,
[Parameter(Mandatory=$False)]
[string] $Branch = "master",
[Parameter(Mandatory=$False)]
[string] $Location = "c:temp"
)
# Force to create a zip file
$ZipFile = "$location$Name.zip"
New-Item $ZipFile -ItemType File -Force
#$RepositoryZipUrl = "https://github.com/sandroasp/Microsoft-Integration-and-Azure-Stencils-Pack-for-Visio/archive/master.zip"
$RepositoryZipUrl = "https://api.github.com/repos/$Author/$Name/zipball/$Branch"
# download the zip
Write-Host 'Starting downloading the GitHub Repository'
Invoke-RestMethod -Uri $RepositoryZipUrl -OutFile $ZipFile
Write-Host 'Download finished'
#Extract Zip File
Write-Host 'Starting unzipping the GitHub Repository locally'
Expand-Archive -Path $ZipFile -DestinationPath $location -Force
Write-Host 'Unzip finished'
# remove the zip file
Remove-Item -Path $ZipFile -Force
}
Download
THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.