Describe the Bug
Describe the bug
When comparing SDK-generated workflow JSON against an existing
JSON-authored production workflow (deployed via EV2/Geneva), there
are several structural differences that would require
post-processing before the SDK output can be deployed through the
same pipeline.
This is filed as a low-priority awareness item — these may be
intentional design choices for the new SDK runtime, but they
create friction for teams migrating existing workflows to codeful
authoring.
Structural differences observed
- RunAfter uses integer enum values instead of strings
SDK output:
"RunAfter": { "PreviousAction": [4] }
Expected (JSON-authored):
"runAfter": { "PreviousAction": ["Succeeded"] }
4 appears to be the integer value of a FlowStatus enum. The
Logic Apps runtime may accept both forms, but JSON-authored
workflows consistently use string values.
- PascalCase vs camelCase property names
SDK output: "Actions", "Triggers", "Type", "Inputs"
JSON-authored: "actions", "triggers", "type", "inputs"
- Schema URL variant
SDK: https://schema.management.azure.com/schemas/2016-06-01/workflowdefinition.json#
JSON-authored: https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#
- Missing contentVersion and outputs
JSON-authored includes:
"contentVersion": "1.0.0.0",
"outputs": {}
SDK omits both fields entirely.
- Missing $connections parameters block
JSON-authored includes:
"parameters": {
"$connections": {
"type": "Object",
"defaultValue": {}
}
}
SDK omits entirely. Typed connectors use
Host.Connection.ReferenceName instead.
- Wrapper structure
JSON-authored wraps in:
{
"properties": {
"state": "Enabled",
"metadata": { "templateId": "..." },
"definition": { ... },
"runtimeConfiguration": { ... }
}
}
SDK emits a flat structure:
{ "Kind": "Stateful", "Definition": { ... } }
Plan Type
Standard
Steps to Reproduce the Bug or Issue
- Take a JSON-authored production workflow
- Generate an SDK-generated workflow JSON (deployed via EV2/Geneva)
- Compare
Workflow JSON
Screenshots or Videos
No response
Additional context
Questions for the team
- Are these differences intentional for the new codeful runtime
(i.e., the SDK-generated format is the new canonical form)?
- If so, does the codeful deployment pipeline handle the
differences transparently?
- If not, is there a recommended post-processing step or will
the SDK be updated to emit the traditional format?
Impact
Teams that deploy via existing EV2/Geneva pipelines expecting the
traditional JSON structure will need a transformation layer.
Understanding whether this is by-design helps us plan accordingly.
Environment
- Microsoft.Azure.Workflows.Sdk: 1.0.0-preview.1
- .NET: net8.0
- OS: Windows 11
- Compared against: Production workflow deployed via Geneva
Automation EV2 pipeline
Describe the Bug
Describe the bug
When comparing SDK-generated workflow JSON against an existing
JSON-authored production workflow (deployed via EV2/Geneva), there
are several structural differences that would require
post-processing before the SDK output can be deployed through the
same pipeline.
This is filed as a low-priority awareness item — these may be
intentional design choices for the new SDK runtime, but they
create friction for teams migrating existing workflows to codeful
authoring.
Structural differences observed
SDK output:
Expected (JSON-authored):
4appears to be the integer value of aFlowStatusenum. TheLogic Apps runtime may accept both forms, but JSON-authored
workflows consistently use string values.
SDK output:
"Actions","Triggers","Type","Inputs"JSON-authored:
"actions","triggers","type","inputs"SDK:
https://schema.management.azure.com/schemas/2016-06-01/workflowdefinition.json#JSON-authored:
https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#JSON-authored includes:
SDK omits both fields entirely.
JSON-authored includes:
SDK omits entirely. Typed connectors use
Host.Connection.ReferenceNameinstead.JSON-authored wraps in:
{ "properties": { "state": "Enabled", "metadata": { "templateId": "..." }, "definition": { ... }, "runtimeConfiguration": { ... } } }SDK emits a flat structure:
{ "Kind": "Stateful", "Definition": { ... } }Plan Type
Standard
Steps to Reproduce the Bug or Issue
Workflow JSON
Screenshots or Videos
No response
Additional context
Questions for the team
(i.e., the SDK-generated format is the new canonical form)?
differences transparently?
the SDK be updated to emit the traditional format?
Impact
Teams that deploy via existing EV2/Geneva pipelines expecting the
traditional JSON structure will need a transformation layer.
Understanding whether this is by-design helps us plan accordingly.
Environment
Automation EV2 pipeline