Introducing BTFGui

Introducing BTFGui

Today I published one of my little projects on GitHub. It’s called BTFGui and in essence it is just a simple GUI around the BizTalkFactory Management Automation (SDK) to do some basic BizTalk Administration.

Currently it has the following features:

  • Stop/Restart HostInstances
  • Stop/Restart Applications
  • Remote Applications
  • Export Application Bindings
  • Terminate Suspended Instances

687474703a2f2f692e696d6775722e636f6d2f7852657a4953652e706e67

You can find It here on GitHub.

The main reason why I put this little thing together is simple: the BizTalk Administration Console can be very slow and time wasting if you just want to restart a hostinstance or export a binding. Therefore I created BTFGui and I can tell you that it saves me a lot of time when developing on my local BizTalk Server instance.

Introducing BTFGui

Introducing BTFGui

Today I published one of my little projects on GitHub. It’s called BTFGui and in essence it is just a simple GUI around the BizTalkFactory Management Automation (SDK) to do some basic BizTalk Administration.

Currently it has the following features:

  • Stop/Restart HostInstances
  • Stop/Restart Applications
  • Remote Applications
  • Export Application Bindings
  • Terminate Suspended Instances

687474703a2f2f692e696d6775722e636f6d2f7852657a4953652e706e67

You can find It here on GitHub.

The main reason why I put this little thing together is simple: the BizTalk Administration Console can be very slow and time wasting if you just want to restart a hostinstance or export a binding. Therefore I created BTFGui and I can tell you that it saves me a lot of time when developing on my local BizTalk Server instance.

Where are my functoids in the grip page? The giant Adamastor I reached and went over the end of the world

Where are my functoids in the grip page? The giant Adamastor I reached and went over the end of the world

I’m not much of a historian and I don’t read too many history books but from what I can remember from my school days (please be open mind and do not think I’m completely crazythe story will have a context and meaning at the end) The Story A few hundred years ago many cultures around […]
Blog Post by: Sandro Pereira

BizTalk Server 2013 R2 Installation: Error 1921

BizTalk Server 2013 R2 Installation: Error 1921

The Problem:

When installing BizTalk 2013 R2 on a fresh development machine, I encountered the following error:
“Error 1921.Service Windows Management Instrumentation (WinMgmt) could not be stopped. Verify that you have sufficient privileges to stop system services.”

BizTalk Server 2013 R2 Installation Error 1921_1

As my “Trend Micro Office ScanAgent” (the OfficeScan NT Listener in the screenshot) was dependant of the “Windows Management Instrumentation service”, I was not able to stop it manually:

2015-01-28 11_44_05-BizTalk Server 2013 R2 Installation Error 1921_2

The Solution:

However: I was able to change the startup type of the WMI service:

BizTalk Server 2013 R2 Installation Error 1921_3

So change to startup type of the WMI service to “Disabled”, do a Windows restart and you should be able to re-run the BizTalk installer without the previous error… You will however experience a new error…

BizTalk Server 2013 R2 Installation Error 1921_4

This makes sense as we completely disabled the WMI service. So, change the startuptype back to “Automatic” and start the WMI service yourself (this should be possible now):

BizTalk Server 2013 R2 Installation Error 1921_5

Upcoming Presentation – February 2nd, 2015

Recently Integration MVPs Michael Stephenson and Saravana Kumar have launched a series of community-focused integration events.  What is unique about these events is that they have been designed to cater to an International audience.  Live Webinars have been held every Monday evening (UK time) for the past couple weeks and for several more in the near future.  They have created a website, appropriately called http://www.integrationusergroup.com/ where you can find all the details for these events.

When Michael asked if I was willing to present the talk I gave at the Integrate 2014 event I was happy to oblige.  On Monday, February 2nd I will be discussing “What to look for in an Integration Platform”.  I have included the overview for the session below and want to take this opportunity to thank Michael, Saravana and the BizTalk360 team for hosting these events and providing a great service to the Integration community.

Overview

The landscape for integration platforms continues to evolve. Cloud, Hybrid, Mobility, SaaS connectivity, API Management and MicroServices are introducing new architectural patterns and requirements. These new capabilities are also introducing new entrants in the integration platform industry. For customers who are looking to upgrade, or adopt a new integration platform, this can be an overwhelming and confusing situation. In this talk, Kent will take a requirements driven approach when selecting an integration platform.

http://www.integrationusergroup.com/?event=what-to-look-for-in-an-integration-platform&event_date=2015-02-02

BizTalk and beyond

We all know that the focus at Microsoft is Mobility first and cloud first at the moment. AS some of you have found out I’m no longer in the MVP program since I joined Microsoft January 1st.

Microsoft still focus on BizTalk Server and BizTalk in the cloud, however as time flies and costumer explains there needs and current struggles Microsoft listens. MABS as we know if just spun off a child. This child is now a Microservice (to be specific many micro services). This solution will work both in the cloud and on premise. The biggest win is that this will be available as GA sometime around June, and is currently in preview.

The big different between MABS and Micros services is the way it works, Micro services is a part of IIS and can run both on site and in the cloud. Micro services will also be shipped as a part of BizTalk that’s expected to be released 6 months after the next windows server version.

Many people have asked me why Microsoft states that there will be a CU for BizTalk ever three months but that this is not happening, the reason for this is because the lack of bugs (yeah, there are to few hotfixes to cumulative them into a CU). a couple of days ago CU 7 for BizTalk Server 2010 was released 5 months overdue all because of the lack of fixes, Microsoft says that as long as there is less then 15 fixes Microsoft don’t create a CU (don’t worry though, if you have one of the bugs Microsoft will supply you with a private build that is fully supported).

Some people might be afraid that I’m moving away from the BizTalk space now that I joined Microsoft (worry not) my key focus as a Technology Solution Professional (TSP) is the data platform stack which includes BizTalk, BI, SQL and Azure. and I am lucky to still do a lot of BizTalk.

BizTalk Server 2013 R2: Installation and Configuration – Install additional Developer tools (Part 19)

BizTalk Server 2013 R2: Installation and Configuration – Install additional Developer tools (Part 19)

This part of the article will focus on the installation of additional useful tools to help you develop your BizTalk Server projects. The goal here is not to address all the tools available instead I will address only the most important ones that may have direct impact on the efficiency of your developments, because there […]
Blog Post by: Sandro Pereira

BizTalk Server 2013 R2: Installation and Configuration – Optimize the BizTalk Server 2013 R2 environment (Part 18)

BizTalk Server 2013 R2: Installation and Configuration – Optimize the BizTalk Server 2013 R2 environment (Part 18)

This next posts will focus on optimizing some BizTalk Server 2013 R2 configurations. The following recommendations can be used to increase BizTalk Server performance or just to make the platform more resilient to failures. The optimizations listed in this topic are applied after BizTalk Server has been installed and configured. Configure host and Host instances […]
Blog Post by: Sandro Pereira

BizTalk Server 2013 R2: Installation and Configuration – Optimize the BizTalk Server 2013 R2 environment (Part 17)

BizTalk Server 2013 R2: Installation and Configuration – Optimize the BizTalk Server 2013 R2 environment (Part 17)

This next posts will focus on optimizing some BizTalk Server 2013 R2 configurations. The following recommendations can be used to increase BizTalk Server performance or just to make the platform more resilient to failures. The optimizations listed in this topic are applied after BizTalk Server has been installed and configured. Install SSO Configuration Application MMC […]
Blog Post by: Sandro Pereira

BizTalk Server 2013 R2 Integration with Cloud API Last.fm

BizTalk Server 2013 R2 Integration with Cloud API Last.fm

In previous post I described a way to consume a public Rest API using the BizTalk WCF-WebHttp adapter in combination with JSON-decoder, which is a new component with the BizTalk Server 2013 R2 edition. Now I like to mix things up a bit and consume a different API that is public. That is you can use this API from Last.fm. This is an online music discovery service that gives you personalised recommendations based on the music you listen to. To use the API of this service you need to registering yourself first. Because when you call of one of the methods of the API you need to stick in an api_key as one of the parameters of your request. This is not uncommon as various cloud API’s have this kind of mechanism.

Scenario

I have the following scenario, where I have built a client application (still one of those old fashioned guys that use window forms). The client application have the following functionality:

  • Get information of an artist.
  • Get the top albums from the artist.

Information and top albums can be obtained through calling the Last.fm API artist methods. The client will via BizTalk call these API methods. Similar as in my previous post calling the Airport Service to retrieve its status. Below you find an overview of the scenario.

image

The communication with the internal endpoint in this scenario will be SOAP/XML. The endpoint is hosted in a two way receive port (request/response). It exposes schemas for two operations: GetArtistInfo and GetTopAlbums. The request message will subsequently be mapped to a REST call to the service indicating that the expected response format is Json or default xml. BizTalk will decode the response into XML, so that it is published as an XML message in the MessageBox in case the response message is Json (GetArtistInfo) otherwise it will be just received by the adapter (GetTopAlbums). The receive port will subscribe on that message so it will be routed back as response to the client that on his turn renders it in the UI (Form). This scenario shows that BizTalk acts as a broker and protocol mediator (SOAP/XML –> REST/JSON –> SOAP/XML or SOAP/XML –> REST/XML –> SOAP/XML) between internal client and the external Last.fm API.

The solution of the described scenario consists of the following parts that will be discussed in the subsequent paragraphs:

  • Exposing schema’s for internal service exposing an operation to client application that will consume the service.
  • Creating a custom receive pipeline to enable decoding of Json message to xml (see previous post).
  • Configuration of a Send Port with the Web-Http adapter (or binding if you like), send and receive.
  • Demonstrating the solution.

Exposing schema’s as service

To support both calls from the client to the Last.fm API the request schema’s are as follows:

clip_image003
Both request schemas look the same expect for the root name. These could be consolidated to one schema, nevertheless I choose to keep each method call isolated. Both schema contain promoted properties. The elements need to be promoted to variable mapping later when configuring the send port with WCF-WebHttp adapter to support dynamic URL mapping.

The response for the GetArtistInfo will be Json and therefore I will use the postman application in Google Chrome:

clip_image005

Here you can see that for calling the API you need a method parameter, artist name, api_key and format. However, the format is optional. By default XML will be returned when no format has been specified. The Json response can be used as instance for creating an XSD using the JSON Schema Wizard in Visual Studio BizTalk templates. The schema looks like:

lastfm response schema 1

Similar approach will be used to get an instance of the response to the GetTopAlbums call. This schema will be based on XML. Having the schemas enabled me to create an internal service that exposes two methods.

Once I have the internal service up and running the next part is to create a custom pipeline for receiving the Json response from the GetArtistInfo API method call. The Json decoder will be specified to serialize that response into XML. For the GetTopAlbums no specific custom pipeline is necessary. The schemas and custom pipeline will be deployed to BizTalk runtime.

Creating and configuring the Send Port with the Web-Http adapter

To be able to communicate with the Last.fm API and call both methods I will need to have two send ports configured with the WCF-WebHttp adapter. The Last.fm API doesn’t require authentication other than supplying the api_key as a parameter in call tp any of the API methods. In the general tab of the WCF-WebHttp Transport properties the address of the service can be specified (URI). Besides the address I need to specify here the HTTP Method (GET) and perform a URL mapping.

clip_image008

The URL mapping will be interesting as I need to add a few parameters to my REST call.

http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Metallica&api_key=<your last fm api_key>&format=json
My HTTP Method and URL Mapping will look like:
<BtsHttpUrlMapping><Operation Method=”GET” Url=”/?method={method}&amp;artist={artist}&amp;api_key={api_key}&amp;format=json”/></BtsHttpUrlMapping>

Interesting thing in this URL mapping is that & is and &amp;. If you try to just use the & you will run into an error like depicted below:

clip_image010

Next I click Edit… to do the variable mapping i.e. map the parameters to promoted properties of my incoming request message.

clip_image011

Variable is mapped to the property namespace that defines the API_KEY, ARTIST and METHOD.
The general tab is important for specifying the address, method and URL mapping. The other tabs are:

  • The Binding tab provides you the ability to configure the time-out and encoding-related properties.
  • The Security tab provide you the ability to define the security capabilities of the WCF-WebHttp send port.
  • The Behaviour tab provides you the ability to configure the endpoint behavior for the send port.
  • The Proxy tab provides you the ability to configure the proxy setting for the WCF-WebHttp send port.
  • The Messages tab provides you the ability to specify how the message is sent to the REST interface.

Note: In this scenario we only use GET operation of the Last.fm API service. Based on the verb you have to specify in the Suppress Body for Verbs the GET, because a payload is not required for this operation. Since BizTalk sends out messages with a payload this needs to suppress!
For further details on configuration settings for these tabs see MSDN article How to Configure a WCF-WebHttp Send Port.

Test the solution

Now building the client to call the Last.fm API methods indirectly via BizTalk was quite some work. I wanted to render the information nicely in a Windows Form. When I enter an artist name and click GetInfo then a request will be send to BizTalk routed to the send port that communicates with Lastfm API and request info of the band Metallica.

clip_image013

The response of the message is nicely rendered in the above form. When I click TopAlbums another request is sent to a different send port that send to a different Last.fm API method.

clip_image015

If we look at the traffic between BizTalk Server and Last.fm using Netmon I can examine what goes over the wire.

clip_image017

This blog has demonstrate how fairly easy it is to consume a Json message with BizTalk Server 2013 R2 after invoking a Rest API. And how I was able to leverage an API from Last.fm. The cool thing is that BizTalk Server 2013 R2 is capable to communicate with tons of REST API’s out there in the cloud with the WCF-WebHttp adapter. And with JSON support things get less complex. I haven’t tried communicating with an API that requires Basic- or OAuth authentication. I probably will have to do some custom coding using behavious like explained in the blog post from Quicklearn.

Cheers,

Steef-Jan