How to move from Azure Logic Apps to FlowRunner
Copy a logic app's workflow JSON from code view, an ARM template, or a Standard app's content, have FlowRunner Prompt to Flow rebuild it, then reconnect and test.
A logic app’s workflow is one JSON document in Microsoft’s Workflow Definition Language: its triggers, its actions with their run-after order, and its conditions, loops, scopes, and retry policies. FlowRunner Prompt to Flow reads that JSON in the AI tool you already use and builds the same workflow as a FlowRunner flow, from the same blocks the flow editor uses.
You convert one workflow at a time. What’s left for you is what the JSON doesn’t carry: connected accounts, secrets, new webhook addresses, and testing before you switch.
1. Export your workflows from Logic Apps
How you get the JSON depends on the logic app’s plan.
Consumption
- Code view. Open the logic app in the designer and switch to Code view. The JSON there is the workflow definition. Copy it. This is the quickest route for one workflow.
- ARM template. Microsoft documents the open-source LogicAppTemplate PowerShell module for this.
Get-LogicAppTemplate, given an access token, the logic app name, the resource group, and the subscription, writes the template with| Out-File template.json, andGet-ParameterTemplatewrites a parameters file. The template holds the same definition you see in code view, plusMicrosoft.Web/connectionsresources and a$connectionsparameter.
Standard
- In the Azure portal, open the Standard logic app, go to Overview > Download app content, and click Download. You get
<logic-app-name>.zipwith your workflows, connections, host configuration, and app settings. Each workflow is aworkflow.jsonin its own folder. If you work in VS Code, the Azure Logic Apps menu’s Create new logic app workspace from package… opens the same zip as a project.
Some things aren’t in the definition:
- Secrets. They should be secured parameters or Key Vault references, so the values aren’t in the file. On Standard,
connections.jsonholds metadata, endpoints, and keys for managed connections and Azure functions, andlocal.settings.jsoncan hold secrets. Remove keys and secrets before you paste anything into an AI tool. - Authorized connections. OAuth connections have to be authorized again wherever the workflow lands.
- Run history. Open the workflow’s run history now and copy two or three real trigger inputs with the outputs they produced. You’ll test with them in step 5.
2. Connect FlowRunner Prompt to Flow to your AI tool
FlowRunner Prompt to Flow is an MCP server you add to the AI tool you already use. You connect it once and sign in with your FlowRunner account. The server URL is the same for every tool: https://app.flowrunner.ai/mcp.
- Claude (web and desktop): open Settings > Connectors, click + Add, then Add custom connector. Enter
FlowRunnerand the server URL, click Add, then Connect, and approve the FlowRunner sign-in. On a Team or Enterprise plan, an Owner adds it once under Organization settings > Connectors. - Claude Code: run these two commands in your project folder, and approve the sign-in page that opens:
claude mcp add --transport http flowrunner https://app.flowrunner.ai/mcp
claude mcp login flowrunner
- ChatGPT (on the web): open ChatGPT Plugins, click Add, then Add custom MCP server. Enter
FlowRunner, put the server URL under Connection, choose OAuth, and approve the sign-in. In a chat, type@and pick FlowRunner. - Codex: add the server to
~/.codex/config.toml, then runcodex mcp login flowrunner:
[mcp_servers.flowrunner]
url = "https://app.flowrunner.ai/mcp"
- Cursor: add the server to
~/.cursor/mcp.json, then open Customize > MCPs and follow the sign-in prompt:
{
"mcpServers": {
"flowrunner": { "url": "https://app.flowrunner.ai/mcp" }
}
}
If you don't have a FlowRunner account yet, the Free plan needs no card, and every new account starts with 14 days of Professional. The setup guide in the docs has each tool step by step.
3. Convert one workflow at a time
Start a new chat, paste this request, then paste one workflow’s JSON after it:
Rebuild this Azure Logic Apps workflow as a FlowRunner flow. It’s the workflow definition JSON in Workflow Definition Language, from [code view / the definition inside an ARM template / a Standard logic app’s workflow.json]: the triggers, the actions with their runAfter order, conditions, loops, scopes, and retry policies. Connections point to Azure connection resources, and secrets are parameters or Key Vault references, so their values aren’t in the file. Keep the same behavior. Use a FlowRunner integration where one exists for the connector, and an HTTP Request block for anything else. Before you build, tell me anything you can’t map one to one, and ask me about anything the file doesn’t say.
For a Standard workflow, also paste connections.json and parameters.json with the keys removed, so the AI knows which services each connection points to.
If the workflow has an approval or an agent loop, add a second paragraph:
This workflow has [a Send approval email step / an agent loop]. Build the approval as a step that reaches [who] on [email / Slack / WhatsApp / phone] with the details they need and waits for their answer. Run the agent on my own [provider] key with the same instructions and tools.
Answer its questions, and it builds the flow in your workspace. Inline JavaScript comes across as Custom Cloud Code. Azure Functions stay in Azure, and the flow calls them with an HTTP Request block. One workflow per chat keeps the questions specific.
4. Finish what the export can’t carry
Each conversion ends with a short list from the AI. Expect some of these:
- Connect your accounts. Each app is connected once in OAuth Connections and shared across your flows. Managed-identity connections become a regular connection with its own credentials.
- Fill in secrets. The AI asks for each value or tells you which block it goes in.
- Note the new address. A workflow that started from a Request trigger now starts from an External Callback with its own URL. Whatever called the logic app needs the new URL when you switch over in step 5.
- Check workflows that answer their caller. If the logic app used a Response action, the caller now uses the blocking Call Flow API, which waits for the flow’s Return Result for up to 300 seconds. That call carries your workspace key, so make it from a server, not from a browser.
- Set the schedule. A Recurrence trigger becomes the flow’s schedule. Confirm the frequency and time zone.
- Decide who gets asked. For approvals, confirm the person and the channel. If the approval should be a Form, or an AI agent should call a review flow as its tool, the AI tells you, and you add those in the flow editor.
- Add your model key, if the workflow had an agent loop. Add it once in the workspace and every flow can use it.
- Start the flow, if the AI left it stopped.
5. Test, then switch over
Run the flow with the trigger inputs you saved in step 1, and compare each block’s output with what the logic app produced. Each block’s inputs and outputs for every run are in the flow’s run history. When they match, point the callers or the trigger at FlowRunner, watch a few days of runs, and disable the logic app. Microsoft doesn’t meter a disabled logic app, so you can keep it for reference.
How Logic Apps maps to FlowRunner
| Logic Apps | FlowRunner | What changes |
|---|---|---|
| Recurrence trigger | Flow schedule | Each scheduled run is one execution |
| Request trigger | External Callback, or the Call Flow API | A new URL for callers |
| Response action | Return Result with the blocking Call Flow API | Waits up to 300 seconds; longer work uses the non-blocking call |
| Polling connector trigger | The integration’s trigger block | Checks that find nothing don’t count; only runs do |
| Managed connector actions | Integration action blocks | 2,100+ integrations, same price on every plan |
| Condition, Switch | Condition, Value Router | Branches show on the canvas |
| For each, Until | List Iterator, Repeat | Iterations are part of the one run |
| Parallel branches | Parallel branches and Synchronize | Same pattern |
| Scope with run after | Handle Error | One Handle Error can guard several blocks |
| Retry policy | HTTP Request Retry Policy, or Repeat with Handle Error and Wait | Retries don’t add executions |
| Inline code | Custom Cloud Code (JavaScript) | No npm packages; code that needs them becomes a custom extension |
| Send approval email | A step that asks by email, Slack, WhatsApp, phone, or a Form, then waits at an External Callback | The approver doesn’t need a work or school account |
| Agent loop | AI Agent block on your own key | Any supported provider; the agent can call flows as tools |
| Workflow parameters | Values set in the blocks that use them, or in connections | The AI asks for each one |
Quick wins on day one
- One execution per run. Trigger polls that find nothing, loop iterations, and retries don’t add to the count. Growth is $45 for 12,000 runs, $0.00375 a run.
- Agents on your own key, with Anthropic, OpenAI, Google, or another supported provider, and no markup.
- Approvals in more channels. Email, Slack, WhatsApp, phone, or a Form, on every plan.
- A canvas the whole team can open, with unlimited users and workflows on every plan and no Azure subscription to manage.
- Start on Free. 100 executions a month, no card, and 14 days of Professional on signup.
Want a hand with a bigger migration? Contact us.
Frequently asked questions
How do I export a logic app's workflow?
On a Consumption logic app, open the designer and switch to code view: that JSON is the workflow definition. For a full ARM template, Microsoft documents the LogicAppTemplate PowerShell module, whose Get-LogicAppTemplate command writes a template.json. On a Standard logic app, open Overview > Download app content to get a zip with one workflow.json per workflow, plus connections, host configuration, and app settings.
What does the export leave out?
Credentials. Secrets belong in secured parameters or Key Vault references, so their values aren't in the definition, and OAuth connections have to be authorized again wherever the workflow lands. On Standard, connections.json can hold keys for managed connections and local.settings.json can hold secrets, so remove those before you paste anything into an AI tool. The workflow's run history isn't part of the definition either; copy a few real trigger inputs before you start.
Can FlowRunner import a logic app's JSON?
FlowRunner has no importer for Logic Apps files. FlowRunner Prompt to Flow, connected to the AI tool you already use, reads the workflow definition you paste in and builds the same workflow as a FlowRunner flow from the same blocks the flow editor uses. You review what it couldn't map, answer its questions, and test.
What happens to Azure Functions or services my logic app calls?
They stay in Azure. The FlowRunner flow calls them with an HTTP Request block, with its own retry policy, or through FlowRunner's Azure integrations such as Azure Service Bus and Azure Blob Storage.
Do I have to move every logic app at once?
No. Move one workflow at a time. A FlowRunner flow can call a logic app's Request trigger with an HTTP Request block, so a step that has to stay in Azure, such as EDI processing in an integration account, can keep running there while the rest of the process runs in FlowRunner.
Do I need a paid plan to try the move?
No. The Free plan includes every integration, AI agents on your own keys, and human-in-the-loop, with 100 executions a month and no card. Every new account also starts with 14 days of Professional.
Ready to try it?
Start on the Free plan. No card required, and every new account gets 14 days of Professional.