Introducing Azure DevOps

On September 10, 2018, Microsoft announced Azure DevOps, which is the next phase of software delivery.  Azure DevOps is the next evolution of Visual Studio Team Services (VSTS). Quick side note, VSTS users will be upgraded automatically to the new Azure DevOps structure. It will help organizations delivery faster and with high quality across a wide breath of the development life-cycle and systems.

Let’s see the official announcement from Donovan Brown the DevOps Manager at Microsoft.

Azure DevOps will include the following:

  • Azure Boards – a powerful way to track deliverable through boards, backlog, dashboards, and reporting.
  • Azure Repos – an unlimited cloud hosted repositories for source control and collaboration.
  • Azure Artifacts – Various development package feeds from public and private sources like npm and NuGet.
  • Azure Pipelines – CI\CD that can deliver to any language, platform, or cloud.
  • Azure Test Plans – Testing, Testing, Testing – all in one solution.

Each Azure DevOps service is open and extensible and works great for any type of application regardless of the framework, platform, or cloud.  Learn more about cost from Azure DevOps Pricing.

Here is Edward Thomson, the Program Manager for Azure DevOps discussing Azure Pipelines, which is on of the key pillars in Azure DevOps.

There are some key changes to this transition of VSTS To Azure DevOps that you will see:

  • URLs will change from <name> to<name>.
  • Services will have an updated user experience.
  • On-premise TFS will receives updates based on new features and will renamed to Azure DevOps Server.

You might want to visit the save-the-date and watch live streams on Azure DevOps events page. There you’ll also find additional on-demand videos and other resources to help get you started using Azure DevOps.

A Journey to Azure WebJob Deployment

Recently I inherited some poorly written WebJobs that I needed to create an automated deploy for a client to their various environments (DEV, QAE, and PRD).  To start the WebJobs were missing the publish package required to publish them to Azure, which is added either by the package manager (seen bleow) or the Publishing via Visual Studio (using 2017) Publish.

You can add the publishing package from NuGet by running the following command in Package Manager console:

Once that was completed, we need to head over the Visual Studio Team Services (VSTS) to create a build and release for these WebJobs.  The tests were disabled as there were not any in the project and planned to add them in the future.

You only need to do a few modifications to canned build template; however, I did add some build arguments as follows:

One of these arguments changes the deployment path to “Webjob Deploy” and in the Publish Build Artifacts task I change the Path to Publish to the following:

Once I ran the build my artifacts looked like:

Once this is complete we can head over to my build the release for the WebJob code.  We start by linking the artifacts and create an environment, I general start with one to get it working and tested then clone it and change the variables for that environment.

Part of the release was that I needed to create the Azure Resource Group and deploying all the components then linking my deployment artifacts to my these resources (App Service and App Service Plan).  I plan to add a blog post on DSC (Desired State Configuration) scripts and ARM (Azure Resource Manager) templates, so more to come.

Hope this journey helps!

Azure Logic Apps

Important information I gathered from Logic Apps on the documentation found at and will be adding a Logic App walk-through.

What are Logic Apps?

  • Part of iPaaS (integration Platform as a Service), which allow them to scale automatically on demand
  • Help simplify scalable integrations and workflow in the cloud, like BizTalk server does for on premise solutions.
  • Use visual workflows and connectors to create integrations
  • Can be used with custom APIs, code, and actions
  • Provides Managed Connectors for fast and consistent integration.

Connectors supported –

Logic App Uses

  • Provide a variety of triggers and actions with management tools to help centralize your API development.
  • Workflows – graphical way to model your business processes as a series of steps or a workflow.
  • Managed Connectors – Managed connectors are created specifically to aid you when you are connecting to and working with your data.
  • Triggers – Some Managed Connectors can also act as a trigger. A trigger starts a new instance of a workflow based on a specific event, like the arrival of an e-mail or a change in your Azure Storage account.
  • Actions – Each step after the trigger in a workflow is called an action. Each action typically maps to an operation on your managed connector or custom API apps.
  • Enterprise Integration Pack – For more advanced integration scenarios, Logic Apps includes capabilities from BizTalk. BizTalk is Microsoft’s industry leading integration platform. The Enterprise Integration Pack connectors allow you to easily include validation, transformation, and more in to your Logic App workflows.


  • Single Http request and/or Connector call limits
  • Request Timeout is 1 minute
  • Message size is limit is 50mb, with request trigger support for up to 25MB
  • Expression evaluation is limited to 131,072 character meaning @cancat(), @base64(), string cannot be longer
  • Retry policy is max delay is 1 hour with a min of 20 minutes with a max of 4 retry attempts
  • Run duration and retention is limited to a run duration of 90 day with a storage retention of 90 days with min recurrence intervals of 15 sec and max recurrence interval of 500 days.
  • Looping and debatching limits for ForEach items, SplitOn item, Until iterations to 10,000 and ForEach Parallelism to 20.
  • Throughput limits for a single app instance are 100 triggers per second.
  • Definition limits Actions in ForEach to 1 with Action per workflow to 60 and action nesting depth to 5.  Triggers per workflow are limited to 10 with a max character per expression to 8192.  Action/Trigger names are limited to 80 characters with a description length to 256. Parameters are limited to 50 and outputs are limited to 10.

Troubleshooting Tips

Three different trigger statuses:

  • Skipped. It polled the endpoint to check for data and received a response that no data was available.
  • Succeeded. The trigger received a response that data was available. This could be from a manual trigger, a recurrence trigger, or a polling trigger. This likely will be accompanied with a status of Fired.
  • Failed. An error was generated.

A run displays one of the following statuses:

  • Succeeded. All actions succeeded, or, if there was a failure, it was handled by an action that occurred later in the workflow. That is, it was handled by an action that was set to run after a failed action.
  • Failed. At least one action had a failure that was not handled by an action later in the workflow.
  • Cancelled. The workflow was running but received a cancel request.
  • Running. The workflow is currently running.

BizTalk (Showing BizTalk Assembly Viewer in My Computer)

To add Assembly Viewer to the Windows registry

  1. From the Start menu, click Run.
  2. In the Run dialog box, type cmd.
  3. From the command line, navigate to <BizTalk Server Installation Folder>Developer Tools where BTSAsmExt.dll resides.
  4. At the command line, type:

    regsvr32 BTSAsmExt.dll

  5. To begin using Assembly View, log off and then log back onto the computer.

To remove Assembly Viewer from the Windows registry

  1. From the Start menu, click Run.
  2. In the Run dialog box, type cmd.
  3. From the command line, navigate to <BizTalk Server Installation Folder>Developer Tools where BTSAsmExt.dll resides.
  4. At the command line, type:

    regsvr32/u BTSAsmExt.dll

  5. To complete the removal, log off and then log back onto the computer.

BizTalk 2010 (and earlier versions) namespace gotcha

I have not been able to find a post or get a true explanation on “reserved words” in BizTalk; however there are a few you should stay away from.  I have personally tested these.

You should refrain from using “BTS” or “EDI” anywhere in your namespace to avoid namespace property look-up issues.

I will be posting more about this as I work through the public version of BizTalk 2010 on Oct. 1, 2010.

BizTalk 2009

Why BizTalk?

BizTalk 2009 is a message broker SOA tool.  It is used to connect disparate systems and provided an entry point for connecting to your customers.  BizTalk does come at a cost; however with the “built-in” functionality it can cut development costs.

Some Features:

  • Retry Capabilities
  • Transaction Traceability
  • BAM (Business Activity Monitoring
  • Reliable (durable) messages
  • LOB (Line of Business) Adapters to fit most integration points (Siebel, Oracle, HiPPA)

What’s New in BizTalk 2009 (Captured from

BizTalk Server 2009 introduces enhancements and new features in four main areas:

  • Support for the latest platforms from Microsoft including server, database and development environment.
  • Enhanced developer productivity and new application life cycle management experience for development teams.
  • New capabilities for implementing agile SOA integration solutions across heterogeneous technologies and Line of Business systems.
  • Enhanced B2B and RFID capabilities to allow the implementation of flexible end-to-end supply chain management and asset tracking solutions.
Top New Features

BizTalk Server 2009 introduces enhancements and new features in four main areas:

Updated Platform Support

  • Support for Visual Studio 2008 SP1
  • Support for .NET Framework 3.5 SP1
  • Support for Windows Server 2008
  • Virtualization support with Hyper-V
  • Support for SQL Server 2008

Developer & Team Productivity

  • New Application Lifecycle Management (ALM) experience – with Support for TFS – integrated source control, bug tracking, unit testing, MSBuild automation
  • Enhanced Developer Productivity with Visual Studio project system updates & Map Debugging

SOA and Web Services

  • ESB Toolkit 2.0
  • New UDDI v3 Web Services Registry
  • New and enhanced LOB adapters (Oracle eBusiness Suite, SQL Server)
  • Enhanced host systems integration (WebSphere MQ, CICS, IMS)
  • Enhanced BAM support

Business to Business Integration

  • New Mobile RFID Platform
  • New RFID device management and industry standards support
  • Enhanced Support for EDI and AS2 Protocols and Drummond certification
  • Updated SWIFT Support and SWIFTReady Financial EAI Gold certification

Enough on the sales pitch, my next post will dive into the factoids and creating your first BizTalk application.

One Way to Solve Collection Validation in Silverlight 3

In one of my current projects I used Datagrid’s with RowDetail forms for editing the ItemSource collection.  This created  a unique issue with exception throwing from the entities so the form will provide immediate response to the user.  This became very difficult to accomplish with the fact that the entities were provided by WCF (the Domain Service – we are not using RIA).   Now the issue is that the WCF ONLY provides the implementation of the entity and not the entity itself, so in short terms no exception is thrown to the UI; however we would receive the general service fault exception from the service.

To overcome this I used the shared entity model and included them in both the Silverlight frontend and WCF backend.  Now this is great solution; however if the user does not enter the form field well no instant feedback.

So for this opportunity, I created a .Validate method on the object and had it produce an error collection as well as return a true/false.

This option now allowed me to validate the object in ItemSource collection, so now the application can bulk save and evaluate the collection of data rather than one field at a time.

I will post an example of this process in the near future as well as how to do it.