TLDR

We are working on a project that requires us to regularly transform data from one shape to another for our integrations. We decided liquid templates in the Transform connector in Logic Apps/integration accounts seemed like a reasonable solution. We quickly found out the developer experience is terrible.

Be careful, Liquid template syntax in Azure Logic Apps Transform connector varies between the tooling in VS Code. While your transform may work in VS Code, you will often find it doesn't work as expected in Azure.

What did we run into?

The extensions available in VS Code are built on a ruby flavor of liquid templates while the Transform connector is using DotLiquid version 2.0.254 (as of March 11, 2019). There are differences in syntax and capabilities.

  • https://github.com/dotliquid/dotliquid/wiki/DotLiquid-for-Designers

  • You'll find that there are more features available in the ruby flavor that don't exist in DotLiquid

  • Where did I get that 2.0.254 version? Straight from a response from the Microsoft support team. The problem is that is does not correlate to any release on DotLiquid's Github repo.
  • https://github.com/dotliquid/dotliquid/releases
  • Update: I reached out to the top contributor of DotLiquid and he informed me they havent used github releases in quite a while. That version correlates to the nuget version.

What did our development/deployment process look like?

  • Download VSCode and install Shopify Liquid Preview Alt Text
  • Create a repo
  • Branch
  • Create a transform.liquid and transform.liquid.json and start writing transforms! A great developer experience so far.
  • CTL+SHIFT+P to preview your transform against your sample data in your .liquid.json
  • Commit the template and and create a PR
  • Once your PR makes it to master, upload to development azure environment, run your logic app and start feeling the pain
  • If you run into problems, dig into DotLiquid source code and find the feature doesn't exist or the syntax is different
  • https://github.com/dotliquid/dotliquid
  • Create another "azure" version of your template and try to keep the two in sync
  • Cry on the inside

Questions for you

  • Is anyone else feeling the pain of the transform connector in Logic Apps? If so, what kind of tools have you discovered to improve developer productivity?

Proposal for Microsoft

  • Create a DotLiquid Preview extension that aligns to the version of DotLiquid used in the transform connector
  • Deploy a new Map type to integration accounts (i.e. Liquid-Ruby) and change the configuration property Liquid.UseRubyDateFormat = true;
  • Open source the Transform connector so we can make modifications and extend the capabilities

Side Notes

This is my first blog post ever. I'm interested to hear your feedback on how I can improve. Any and all feedback is welcome.