Skip to content

addProperty in combination with SetVariable in a loop doesn't work as expected #1424

@htuscher

Description

@htuscher

Describe the Bug

We initialize an empty object variable {} as map.

We loop with Foreach through an array:

[
  {"orderNumber": "a1", "value": 20},
  {"orderNumber": "a2", "value": 45},
  {"orderNumber": "a3", "value": 78},
  {"orderNumber": "a4", "value": 12},
  {"orderNumber": "a5", "value": 93},
  {"orderNumber": "a6", "value": 56},
  {"orderNumber": "a7", "value": 34},
  {"orderNumber": "a8", "value": 67},
  {"orderNumber": "a9", "value": 89},
  {"orderNumber": "a10", "value": 23},
  {"orderNumber": "a11", "value": 41},
  {"orderNumber": "a12", "value": 75},
  {"orderNumber": "a13", "value": 58},
  {"orderNumber": "a14", "value": 92},
  {"orderNumber": "a15", "value": 16},
  {"orderNumber": "a16", "value": 84},
  {"orderNumber": "a17", "value": 29},
  {"orderNumber": "a18", "value": 63},
  {"orderNumber": "a19", "value": 47},
  {"orderNumber": "a20", "value": 71},
  {"orderNumber": "a21", "value": 38},
  {"orderNumber": "a22", "value": 95},
  {"orderNumber": "a23", "value": 52},
  {"orderNumber": "a24", "value": 14},
  {"orderNumber": "a25", "value": 88},
  {"orderNumber": "a26", "value": 26},
  {"orderNumber": "a27", "value": 61},
  {"orderNumber": "a28", "value": 79},
  {"orderNumber": "a29", "value": 33},
  {"orderNumber": "a30", "value": 46},
  {"orderNumber": "a31", "value": 82},
  {"orderNumber": "a32", "value": 19},
  {"orderNumber": "a33", "value": 65},
  {"orderNumber": "a34", "value": 91},
  {"orderNumber": "a35", "value": 37},
  {"orderNumber": "a36", "value": 54},
  {"orderNumber": "a37", "value": 73},
  {"orderNumber": "a38", "value": 28},
  {"orderNumber": "a39", "value": 86},
  {"orderNumber": "a40", "value": 42},
  {"orderNumber": "a41", "value": 69},
  {"orderNumber": "a42", "value": 15},
  {"orderNumber": "a43", "value": 97},
  {"orderNumber": "a44", "value": 51},
  {"orderNumber": "a45", "value": 24},
  {"orderNumber": "a46", "value": 77},
  {"orderNumber": "a47", "value": 35},
  {"orderNumber": "a48", "value": 60},
  {"orderNumber": "a49", "value": 83},
  {"orderNumber": "a50", "value": 48},
  {"orderNumber": "a51", "value": 22},
  {"orderNumber": "a52", "value": 94},
  {"orderNumber": "a53", "value": 57},
  {"orderNumber": "a54", "value": 31},
  {"orderNumber": "a55", "value": 76},
  {"orderNumber": "a56", "value": 43},
  {"orderNumber": "a57", "value": 68},
  {"orderNumber": "a58", "value": 85},
  {"orderNumber": "a59", "value": 17},
  {"orderNumber": "a60", "value": 90},
  {"orderNumber": "a61", "value": 39},
  {"orderNumber": "a62", "value": 64},
  {"orderNumber": "a63", "value": 25},
  {"orderNumber": "a64", "value": 81},
  {"orderNumber": "a65", "value": 53},
  {"orderNumber": "a66", "value": 72},
  {"orderNumber": "a67", "value": 36},
  {"orderNumber": "a68", "value": 96},
  {"orderNumber": "a69", "value": 18},
  {"orderNumber": "a70", "value": 62},
  {"orderNumber": "a71", "value": 44},
  {"orderNumber": "a72", "value": 87},
  {"orderNumber": "a73", "value": 30},
  {"orderNumber": "a74", "value": 59},
  {"orderNumber": "a75", "value": 74},
  {"orderNumber": "a76", "value": 21},
  {"orderNumber": "a77", "value": 66},
  {"orderNumber": "a78", "value": 49},
  {"orderNumber": "a79", "value": 80},
  {"orderNumber": "a80", "value": 32},
  {"orderNumber": "a81", "value": 70},
  {"orderNumber": "a82", "value": 55},
  {"orderNumber": "a83", "value": 13},
  {"orderNumber": "a84", "value": 89},
  {"orderNumber": "a85", "value": 40},
  {"orderNumber": "a86", "value": 78},
  {"orderNumber": "a87", "value": 27},
  {"orderNumber": "a88", "value": 93},
  {"orderNumber": "a89", "value": 50},
  {"orderNumber": "a90", "value": 11},
  {"orderNumber": "a91", "value": 85},
  {"orderNumber": "a92", "value": 34},
  {"orderNumber": "a93", "value": 67},
  {"orderNumber": "a94", "value": 98},
  {"orderNumber": "a95", "value": 45},
  {"orderNumber": "a96", "value": 73},
  {"orderNumber": "a97", "value": 26},
  {"orderNumber": "a98", "value": 88},
  {"orderNumber": "a99", "value": 52},
  {"orderNumber": "a100", "value": 64}
]

In the foreach I'm doing a compose with addProperty(variables('map'),item()['orderNumber'],item()['value']) and then a setvariable on map with the output of my compose action.

I would expect the result to be a map with 100 key-value pairs, but it only contains:

{
  "a19": 47,
  "a29": 33,
  "a39": 86,
  "a49": 83,
  "a59": 17,
  "a32": 19,
  "a31": 82,
  "a89": 50,
  "a51": 22,
  "a99": 52,
  "a71": 44,
  "a52": 94,
  "a63": 25,
  "a64": 81,
  "a72": 87,
  "a93": 67,
  "a94": 98,
  "a87": 27,
  "a92": 34,
  "a86": 78
}

Plan Type

Consumption

Steps to Reproduce the Bug or Issue

  1. Execute the attached workflow and look at the final output of compose which only outputs the map variable
  2. It should contain 100 entries

Workflow JSON

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "contentVersion": "1.0.0.0",
        "triggers": {
            "Recurrence": {
                "type": "Recurrence",
                "recurrence": {
                    "interval": 3,
                    "frequency": "Month"
                }
            }
        },
        "actions": {
            "Initialize_source_data": {
                "type": "InitializeVariable",
                "inputs": {
                    "variables": [
                        {
                            "name": "source_data",
                            "type": "array",
                            "value": [
                                {
                                    "orderNumber": "a1",
                                    "value": 20
                                },
                                {
                                    "orderNumber": "a2",
                                    "value": 45
                                },
                                {
                                    "orderNumber": "a3",
                                    "value": 78
                                },
                                {
                                    "orderNumber": "a4",
                                    "value": 12
                                },
                                {
                                    "orderNumber": "a5",
                                    "value": 93
                                },
                                {
                                    "orderNumber": "a6",
                                    "value": 56
                                },
                                {
                                    "orderNumber": "a7",
                                    "value": 34
                                },
                                {
                                    "orderNumber": "a8",
                                    "value": 67
                                },
                                {
                                    "orderNumber": "a9",
                                    "value": 89
                                },
                                {
                                    "orderNumber": "a10",
                                    "value": 23
                                },
                                {
                                    "orderNumber": "a11",
                                    "value": 41
                                },
                                {
                                    "orderNumber": "a12",
                                    "value": 75
                                },
                                {
                                    "orderNumber": "a13",
                                    "value": 58
                                },
                                {
                                    "orderNumber": "a14",
                                    "value": 92
                                },
                                {
                                    "orderNumber": "a15",
                                    "value": 16
                                },
                                {
                                    "orderNumber": "a16",
                                    "value": 84
                                },
                                {
                                    "orderNumber": "a17",
                                    "value": 29
                                },
                                {
                                    "orderNumber": "a18",
                                    "value": 63
                                },
                                {
                                    "orderNumber": "a19",
                                    "value": 47
                                },
                                {
                                    "orderNumber": "a20",
                                    "value": 71
                                },
                                {
                                    "orderNumber": "a21",
                                    "value": 38
                                },
                                {
                                    "orderNumber": "a22",
                                    "value": 95
                                },
                                {
                                    "orderNumber": "a23",
                                    "value": 52
                                },
                                {
                                    "orderNumber": "a24",
                                    "value": 14
                                },
                                {
                                    "orderNumber": "a25",
                                    "value": 88
                                },
                                {
                                    "orderNumber": "a26",
                                    "value": 26
                                },
                                {
                                    "orderNumber": "a27",
                                    "value": 61
                                },
                                {
                                    "orderNumber": "a28",
                                    "value": 79
                                },
                                {
                                    "orderNumber": "a29",
                                    "value": 33
                                },
                                {
                                    "orderNumber": "a30",
                                    "value": 46
                                },
                                {
                                    "orderNumber": "a31",
                                    "value": 82
                                },
                                {
                                    "orderNumber": "a32",
                                    "value": 19
                                },
                                {
                                    "orderNumber": "a33",
                                    "value": 65
                                },
                                {
                                    "orderNumber": "a34",
                                    "value": 91
                                },
                                {
                                    "orderNumber": "a35",
                                    "value": 37
                                },
                                {
                                    "orderNumber": "a36",
                                    "value": 54
                                },
                                {
                                    "orderNumber": "a37",
                                    "value": 73
                                },
                                {
                                    "orderNumber": "a38",
                                    "value": 28
                                },
                                {
                                    "orderNumber": "a39",
                                    "value": 86
                                },
                                {
                                    "orderNumber": "a40",
                                    "value": 42
                                },
                                {
                                    "orderNumber": "a41",
                                    "value": 69
                                },
                                {
                                    "orderNumber": "a42",
                                    "value": 15
                                },
                                {
                                    "orderNumber": "a43",
                                    "value": 97
                                },
                                {
                                    "orderNumber": "a44",
                                    "value": 51
                                },
                                {
                                    "orderNumber": "a45",
                                    "value": 24
                                },
                                {
                                    "orderNumber": "a46",
                                    "value": 77
                                },
                                {
                                    "orderNumber": "a47",
                                    "value": 35
                                },
                                {
                                    "orderNumber": "a48",
                                    "value": 60
                                },
                                {
                                    "orderNumber": "a49",
                                    "value": 83
                                },
                                {
                                    "orderNumber": "a50",
                                    "value": 48
                                },
                                {
                                    "orderNumber": "a51",
                                    "value": 22
                                },
                                {
                                    "orderNumber": "a52",
                                    "value": 94
                                },
                                {
                                    "orderNumber": "a53",
                                    "value": 57
                                },
                                {
                                    "orderNumber": "a54",
                                    "value": 31
                                },
                                {
                                    "orderNumber": "a55",
                                    "value": 76
                                },
                                {
                                    "orderNumber": "a56",
                                    "value": 43
                                },
                                {
                                    "orderNumber": "a57",
                                    "value": 68
                                },
                                {
                                    "orderNumber": "a58",
                                    "value": 85
                                },
                                {
                                    "orderNumber": "a59",
                                    "value": 17
                                },
                                {
                                    "orderNumber": "a60",
                                    "value": 90
                                },
                                {
                                    "orderNumber": "a61",
                                    "value": 39
                                },
                                {
                                    "orderNumber": "a62",
                                    "value": 64
                                },
                                {
                                    "orderNumber": "a63",
                                    "value": 25
                                },
                                {
                                    "orderNumber": "a64",
                                    "value": 81
                                },
                                {
                                    "orderNumber": "a65",
                                    "value": 53
                                },
                                {
                                    "orderNumber": "a66",
                                    "value": 72
                                },
                                {
                                    "orderNumber": "a67",
                                    "value": 36
                                },
                                {
                                    "orderNumber": "a68",
                                    "value": 96
                                },
                                {
                                    "orderNumber": "a69",
                                    "value": 18
                                },
                                {
                                    "orderNumber": "a70",
                                    "value": 62
                                },
                                {
                                    "orderNumber": "a71",
                                    "value": 44
                                },
                                {
                                    "orderNumber": "a72",
                                    "value": 87
                                },
                                {
                                    "orderNumber": "a73",
                                    "value": 30
                                },
                                {
                                    "orderNumber": "a74",
                                    "value": 59
                                },
                                {
                                    "orderNumber": "a75",
                                    "value": 74
                                },
                                {
                                    "orderNumber": "a76",
                                    "value": 21
                                },
                                {
                                    "orderNumber": "a77",
                                    "value": 66
                                },
                                {
                                    "orderNumber": "a78",
                                    "value": 49
                                },
                                {
                                    "orderNumber": "a79",
                                    "value": 80
                                },
                                {
                                    "orderNumber": "a80",
                                    "value": 32
                                },
                                {
                                    "orderNumber": "a81",
                                    "value": 70
                                },
                                {
                                    "orderNumber": "a82",
                                    "value": 55
                                },
                                {
                                    "orderNumber": "a83",
                                    "value": 13
                                },
                                {
                                    "orderNumber": "a84",
                                    "value": 89
                                },
                                {
                                    "orderNumber": "a85",
                                    "value": 40
                                },
                                {
                                    "orderNumber": "a86",
                                    "value": 78
                                },
                                {
                                    "orderNumber": "a87",
                                    "value": 27
                                },
                                {
                                    "orderNumber": "a88",
                                    "value": 93
                                },
                                {
                                    "orderNumber": "a89",
                                    "value": 50
                                },
                                {
                                    "orderNumber": "a90",
                                    "value": 11
                                },
                                {
                                    "orderNumber": "a91",
                                    "value": 85
                                },
                                {
                                    "orderNumber": "a92",
                                    "value": 34
                                },
                                {
                                    "orderNumber": "a93",
                                    "value": 67
                                },
                                {
                                    "orderNumber": "a94",
                                    "value": 98
                                },
                                {
                                    "orderNumber": "a95",
                                    "value": 45
                                },
                                {
                                    "orderNumber": "a96",
                                    "value": 73
                                },
                                {
                                    "orderNumber": "a97",
                                    "value": 26
                                },
                                {
                                    "orderNumber": "a98",
                                    "value": 88
                                },
                                {
                                    "orderNumber": "a99",
                                    "value": 52
                                },
                                {
                                    "orderNumber": "a100",
                                    "value": 64
                                }
                            ]
                        }
                    ]
                },
                "runAfter": {}
            },
            "Initialize_map": {
                "type": "InitializeVariable",
                "inputs": {
                    "variables": [
                        {
                            "name": "map",
                            "type": "object",
                            "value": {}
                        }
                    ]
                },
                "runAfter": {
                    "Initialize_source_data": [
                        "Succeeded"
                    ]
                }
            },
            "For_each": {
                "type": "Foreach",
                "foreach": "@variables('source_data')",
                "actions": {
                    "Compose": {
                        "type": "Compose",
                        "inputs": "@addProperty(variables('map'),item()['orderNumber'],item()['value'])"
                    },
                    "Set_variable": {
                        "type": "SetVariable",
                        "inputs": {
                            "name": "map",
                            "value": "@outputs('Compose')"
                        },
                        "runAfter": {
                            "Compose": [
                                "Succeeded"
                            ]
                        }
                    }
                },
                "runAfter": {
                    "Initialize_map": [
                        "Succeeded"
                    ]
                }
            },
            "Compose_1": {
                "type": "Compose",
                "inputs": "@variables('map')",
                "runAfter": {
                    "For_each": [
                        "Succeeded"
                    ]
                }
            }
        },
        "outputs": {},
        "parameters": {
            "$connections": {
                "type": "Object",
                "defaultValue": {}
            }
        }
    },
    "parameters": {
        "$connections": {
            "type": "Object",
            "value": {}
        }
    }
}

Screenshots or Videos

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions