Firstly, I would like to appreciate the Microsoft Logic Apps team for delivering a fantastic public preview version. When I first heard of a new Logic Apps version, I thought it’s going to be pretty similar to what we have now (similar to iPhone releases, as there is literally no difference between models except for one more camera and a new processor). Boy, I was totally wrong.
For those who haven’t had a chance to look, please visit this link for a detailed documentation of setting up Logic Apps Public Preview on your local machine.
Which Logic Apps type I can develop locally?
When you create a new Logic Apps workflow in Visual Studio Code, a default template file is created for you. This is pretty much similar to the current Logic app file content, except that the new one doesn’t have the ARM template definition wrapper around the Logic Apps template definition. More on this later.
When you create a Request trigger Logic App, Visual Studio Code creates the Logic Apps with the following –
However, if you create a Azure EventGrid trigger, it will create the following
Now, it’s quite logical to think that you cannot debug this Logic App, as the Azure event grid cannot push a message into your local machine. If you try debugging the Logic app anyway, you get the below error
In this case, I would suggest MS should add Static Result feature to triggers which are webhook type. The Static Result functionality is already present in Logic Apps cloud version. Also at the moment, MS team confirmed that webhook type triggers are not yet supported. So, even if you try to deploy your Logic App to Azure, it will not work as expected. You can follow up on this here. So, for the time being, we are restricted to develop only Request type Logic Apps.
Parameterize my Logic App
One of the important aspects of using Visual Studio to develop Logic Apps is to prepare it to be deployed for various environments such as TEST, UAT and PROD. Currently Logic Apps were created as ARM templates, so we were able to create parameters file for each environment and use it in our CI/CD.
As I mentioned previously, with the new advent of Logic Apps within functions runtime, we no longer have to worry about ARM templates.
With that, goes our current ability to parameterize the Logic App. But, there is an undocumented way of doing this. You can use @appsetting function within your Logic App template, that can be used for this purpose. I will create a follow-up post on how to do this.
Long running capability
By coupling Azure durable functions with Logic Apps HttpWebHook action, you can implement long running capability within your Logic App. The product team has given support to utilize the HttpWebHook. Now, to debug your Logic App locally, you need your durable function solution also to be in debug mode.
But, here is the catch. Both the Azure Functions runtime and Azure Logic Apps on Function runtime use the same port number. I wasn’t sure how to change the port number for my Logic Apps on functions runtime. So, I changed the port on my Azure functions runtime. You can use this link if you are not sure.
Now, when I go ahead and configure my HttpWebHook action, I get the below issue
This is a designer issue. The action throws an error if you use localhost or ip address. So, as a workaround, I updated the hosts file on my computer and created a C-NAME which points to localhost/127.0.01
I still got a runtime error. Product team advised me to add the following to the settings file
You can see the post to stay updated on this issue
Other common connectors that are not available yet
- Azure Functions – You can work around this by using the HTTP connector.
- Azure Logic Apps – We have an action available to call workflows within the same project. However, if we want to call other Logic Apps within the subscription, then we have to use HTTP connector.
Microsoft have done a tremendous job and I feel they have set their foot on the right path by having the Logic Apps run on Function Runtime. The new designer on Visual Studio code looks resplendent. I believe, we will soon have more connectors added in the next version.