Skip to content
LambogeniusDocs

Compose using Liquid for Azure Logic Apps

Introduction

What Compose using Liquid does, and how it differs from the Logic Apps Liquid action.

Service provider/serviceProviders/lamboLiquidComposeOperation ComposeLiquid, shown in the designer as Compose using Liquid.

Liquid templates as a built-in action

Compose using Liquid renders a Liquid template inside a Logic Apps Standard workflow. It is a built-in (service provider) connector, installed as a NuGet package, so it runs in the Logic App itself: no integration account and no extra Azure resources.

ModeinputFormatoutputFormatresult
JSON to JSONjsonjsonThe parsed, strictly checked JSON value: later actions read its fields
JSON to textjsontextThe exact text: CSV, fixed-width records, HTML, XML, SOAP
XML to JSONxmljsonThe parsed JSON value
XML to textxmltextThe exact text

What it adds to Liquid

ExtensionWhat it does
{% csharp %} and CallCSharpOne block of C# helper methods at the top of the template, compiled with Roslyn and called as a filter
CallFunctionPosts a value to an HTTP Azure Function that the operator approved, and returns its answer
ToJsonWrites any value as one JSON token: strings escaped, numbers exact, null as null
XmlValue and XmlValuesThe first or every value an XPath selects in XML content, with namespace prefixes from the action

Compared with the Logic Apps Liquid action

Compose using LiquidLogic Apps Transform JSON/XML using Liquid
TemplatesDeployed (Artifacts/LiquidTemplates) or inline in the workflow, with partialsMaps in the project or an integration account
XML inputRead with XPath and explicit namespace prefixesConverted to JSON first, then navigated as JSON
JSON outputExactly one valid JSON value, or the action failsParsed as JSON
Unknown filters and render errorsFail the action with UnknownFilter or a stable error codePassed through, or written into the output as text
Custom logicC# helpers and Azure Function lookupsStandard filters only
IsolationA supervised worker process, stopped at the deadlineIn the Logic Apps host
Not portable

Templates that use csharp, CallCSharp, CallFunction, ToJson, XmlValue or XmlValues don't run in Microsoft's Liquid action or other Liquid engines. XML templates written for Microsoft's action, which navigate converted JSON, need rewriting with XmlValue.

How it runs

  • Supervised workers. Renders run in a small pool of worker processes. When the action's deadline passes, the worker is stopped and replaced: a helper that never returns cannot hang the Logic App.
  • Compiled once. Each worker caches compiled C# helpers by template hash, so later runs take milliseconds.
  • Safe by default. C# is off until both the app and the action allow it; Function endpoints come only from an operator-owned registry; DTDs are refused; error messages never contain payload data.
Trusted code

C# helpers are application code, reviewed like any other code you deploy. The worker processes enforce deadlines and contain crashes; they are not a security sandbox.