When working with Azure Logic Apps Standard, it’s common to manage API connections centrally using ARM/Bicep and then reference them from workflows using connections.json.
Recently, while configuring the Office 365 Outlook (V2) connector with Managed Identity authentication, I ran into an interesting designer issue that is not obvious at first glance.
The connector worked perfectly at runtime — but the Logic App designer failed to automatically bind the existing connection, resulting in a broken trigger definition until manually fixed.
This blog walks through:
The Office 365 connector is deployed as a Microsoft.Web/connections resource.
{
"type": "MICROSOFT.WEB/CONNECTIONS",
"apiVersion": "2016-06-01",
"name": "[parameters('office365ConnectionName')]",
"location": "[parameters('resourceLocation')]",
"kind": "V2",
"properties": {
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('resourceLocation'), '/managedApis/office365')]"
},
"displayName": "Shared Office 365 V2",
"parameterValues": {}
}
}
✔️ After deployment, the connection is authorized interactively
✔️ An Access Policy is added so the Logic App’s Managed Identity can use it
In Logic Apps Standard, workflows do not directly embed secrets.
Instead, they reference connections via logical names defined in connections.json.
{
"managedApiConnections": {
"office365": {
"api": {
"id": "@appsetting('Office365_ApiId')"
},
"connection": {
"id": "@appsetting('Office365_ConnectionId')"
},
"connectionRuntimeUrl": "@appsetting('Office365_ConnectionRuntimeUrl')",
"authentication": {
"type": "ManagedServiceIdentity"
}
}
}
}
🔑 Important:
office365 here is the connection reference name — this becomes critical later.
When creating the trigger “When a new email arrives in a shared mailbox (V2)”, the Logic App designer should automatically pick up the existing Office 365 connection.
Instead, the workflow JSON looked like this:
"host": {
"connection": {
"referenceName": null
}
}
This happens even though:
connections.json is correctThe fix is simple once you know what’s missing.
Update the workflow JSON and explicitly set the connection reference name:
"host": {
"connection": {
"referenceName": "office365"
}
}
Once saved:
✅ Designer immediately recognizes the connection
✅ Trigger configuration UI loads correctly
✅ Workflow runs without issues
This appears to be a limitation with the Logic Apps Standard designer, observed in both the VS Code Logic Apps Standard extension and the Azure Portal designer.
Even though the Office 365 connection is correctly configured, authorized, and works at runtime, the designer does not always auto-bind the existing API connection. As a result, the workflow is generated with a null referenceName, which must be manually corrected for the designer to recognize the connection.
Once the referenceName is explicitly set, the designer immediately resolves the connection and the workflow functions as expected.
Legal Stuff
