Close

Using Deployment and Runtime values in Logic Apps

When using Workflow Definition Language functions in Logic Apps, you might need a combination of deployment and runtime values. This raises the questions whether to use square brackets or ampersand. Can be confusing, especially when you need both deployment and runtime values. Here’s the deal:

  • When you use functions with square brackets, you can access parameters and variables supplied at deployment time.
  • When you use functions with an ampersand, you can access runtime values such as the output of an action.
  • When you need both deployment and runtime values, you must use functions with an ampersand and store parameters and/or variables in run-time variables created in Logic Apps.
"Set_BaseAddress": {
	"inputs": {
		"name": "baseAddress",
		"value": "[parameters('BaseAddress')]"
	},
	"runAfter": {
		"Get_Medewerker": [
			"Succeeded"
		]
	},
	"type": "SetVariable"
}, 

"Update_Medewerker": {
"inputs": {
	"body": {
		...
	},
	"headers": {
		...	
	},
	"method": "PUT",
	"uri": "@concat(variables('baseAddress'), 'persons/id/', body('Get_Medewerker_from_TopDesk')[0]['id'])"
},
"type": "Http"
}

What doesn’t work are the examples below:

"uri": "@concat(parameters('baseAddress'), 'persons/id/', body('Get_Medewerker_from_TopDesk')[0]['id'])"
or
"uri": "[concat(parameters('baseAddress'), 'persons/id/', body('Get_Medewerker_from_TopDesk')[0]['id'])]"

Note that in both examples we use a deployment value (parameter) and a runtime value (body), which is not possible.