The Microsoft Integration team (BizTalk/Logic Apps) recently hit an important milestone. They have launched the Logic Apps Preview Refresh. You can find the original press release here.
The purpose of this post is to highlight some of the recent investments and then take an existing v1 Logic App and rebuild it in v2.
New Designer
Probably the biggest feature released was the new designer experience. As opposed to the Left –> Right workflow we saw in v1 of Logic Apps, we now find ourselves moving top-down. I think for most BizTalk people, moving top-down is more natural.
Search/Intellisense
In addition to top-down, we also have a search/intellisense type experience when looking for new shapes(connectors). It is a neat way to approach the problem as a canvas that contains pages and pages of connectors isn’t the best user experience.
Intelligent Output
Another benefit is we are not as dependent on the Logic Apps Workflow Language. It is still there but Microsoft has abstracted much of that away from us. So if we want to use a value from a previous step in our workflow we can just select it. A great addition!
This is very much welcomed over the v1 equivalent: A new table has been created @{body(‘wearsy.servicenow.apiapp’).TableName}
Decisions…Decisions
Another investment has been in the way you add an action or a condition. No longer is a condition ‘hidden’ at the card/connector level. Very explicit, easy to read and natural.
Moving the furniture
With v1 of Logic Apps, once you had a card on the canvas you were committed. Rearranging the cards was only possible using the json in the code behind. It at times was painful, so this is a great add. You can now move cards back and forth as long as you are not breaking dependencies.
Native Webhook support
Logic Apps now supports Webhooks which allows developers to build ‘callback’ interfaces over HTTP. Many services support Webhooks as a way to extend their offering including Visual Studio Online, GitHub, Stripe and Paypal to name a few. An example the Logic Apps team likes to use is that you can call a Logic App from Visual Studio when code is committed to your master branch as a way to kick off other downstream processes.
Managed APIs
In v1 of Logic Apps, there was always a provisioning exercise when you wanted to use a new connector/API App. This added some delays in your dev experience and also forced you to create multiple instances in the event you had some different connection strings. Now, Microsoft has provisioned a set of Managed API connections. This means that there is zero delay when using out of the box API connections.
This does have an impact on existing v1 API Apps that you have created and that is one of the main reasons for this post. Since a custom v1 API App is not in this Managed API list it will not be immediately discoverable within Logic Apps. (This is bound to change as we are still in preview and Microsoft is working on this) But, since v1 API Apps were decorated with Swagger meta-data, we can take advantage of the Http + Swagger connector in order to consume our existing Swagger “contract”.
Note: There are a few actions that you need to perform in order for your v1 API App to be discoverable. In order to avoid duplications, I will refer you to Jeff Hollan’s (Microsoft) post and Daniel Probert’s post.
As a starting point, here is my v1 Logic App. I documented the use case here so I won’t get into a lot of details about what it does. In summary, on a regular basis I want this Logic App to initiate, create a table in Service Now using my custom Service Now connector and send me a text message when it is complete.
With my configuration set as described in those previous blog posts I am going to create a new logic app.
- The first step that I want to perform is to add the Recurrence card to my Logic App. I will then set a frequency. In this case it is set to a minute but I will revert it back to 1 week after I am done testing. Interesting that Microsoft has added a timezone field and a starttime field.
- Next, I will add my Http + Swagger connector. When you think about it, this is actually a very powerful feature. Swagger (recently renamed OpenAPI) is the leading API markup language used by IBM, Amazon, Apigee and many others. What this means is that any API that has Swagger metadata can now be “plugged” into Logic Apps. This has already provided many benefits. An example is that the Microsoft Cortana Analytics team has been including Swagger metadata in their APIs so now Logic Apps can plug them in and developers do not have to worry about connectivity or write their own wrappers. This is a big win!
- With my Swagger URL in my clipboard I can paste it in to the Endpoint URL text box and click the Next button.
- We will now discover all of the different operations that are available for me to use in my Logic App.
- For the purpose of this post, I will use the Table_PostByValue operation. There are 4 attributes that need to be set. Since I want my table to be dynamic, I will use the Logic App Workflow Language functions. I did run into a bit of a bug with this one. If you need to use the @utcnow() function, set it in the code behind. The Product Team is aware and will be addressing this issue.
- After configuring my ServiceNow Api App, I want to now send a text message using the v2 Twilio API App. I can easily add it by starting to type the word “Twilio”.
- I previously had a Twilio account so I needed to log into their website to obtain my credentials.
- Next, I need to provide my Twilio phone number and the phone number where I would like to receive a text. I also want to provide some text in the message and include the name of the table that was just created. By using Swagger, Logic Apps knows that the Service Now API App will return the name of the Table that was created and as a result I can simply click on that item and have it added to my message body.
- After all my configuration is complete, this is what my Logic App looks like. Pretty clean!!!
- The end result when testing is that I have a new table created and receive a text message. Note that Service Now instance is the pacific region which accounts for the 1 hour timestamp delta.
Conclusion
While still in preview, we can see that the Microsoft team is working hard and is focused on providing continuous value to customers. While there are some features I would like to see included, this was a good release and a step in the right direction.