TechGuru
TechGuru

Reputation: 439

The name cannot contain any of the following symbols: '[, ], .'.'. for Compose in Azure Logic App

I have below JSON which I need to update inside a logic app

{
  "name": "SampleDoc",
  "type": "123",
  "properties": {
    "GP.Test": "M1",
    "MG.Test": "C1"
  }
}

enter image description here

I have used following setProperty syntax: -

@setProperty(variables('ResponseBody'),'properties', setProperty(variables('ResponseBody')['properties'], 'test','abc'),
setProperty(variables('ResponseBody')['properties'], 'GP.Test','M2'))

My desired JSON output should be

{
  "name": "SampleDoc",
  "type": "123",
  "properties": {
    "GP.Test": "M2",
    "MG.Test": "C1"
  }
}

But when I am running this, I am getting this error: -

InvalidTemplate. Unable to process template language expressions in action 'Compose' inputs at line '1' and column '2617': 'The provided property name 'GP.Test' has these invalid characters '.'. The name cannot contain any of the following symbols: '[, ], .'.'.

Could anyone suggest if we can handle '.' inside compose or any other way for achieving this?

Upvotes: 0

Views: 1296

Answers (1)

Mandar Dharmadhikari
Mandar Dharmadhikari

Reputation: 1119

Yes that is correct behavior that is occurring in the logic apps. The reason is that you have used the set property function to set the value of the GP.Test property. When working with the expressions in logic apps, the '.' operator is reserved operator and will be used to access sub properties etc of the expressions, functions etc. Hence you get the error. The solution to this is actually simple, you use the compose action directly without using the set property. Sample screenshot below. enter image description here

Or if you want complex transformations, then using the liquid transformations through the integration account is the way to go

Upvotes: 2

Related Questions