One of the decisions you will have to take, is whether or not you want to use an Azure Integration Account to store your schemas and maps. The pricing model – under discussion in this post – is as follows:
- Free tier: [€0/month] for development purposes
- No supported SLA
- Maximum one per region
- Maximum of 25 schemas
- Maximum of 25 maps
- Basic tier: [€253/month] for XML support
- Maximum of 500 maps
- Maximum of 500 schemas
- Standard tier: [€843/month] for XML and EDI support
- Maximum of 1000 maps
- Maximum of 1000 schemas
The main advantages are:
- All schemas and maps are stored in one central place.
- In Logic Apps, we can use standard connectors for schema validation, parsing and transformation. Select Settings / Integration Account to link the integration account to the Logic App.
The main disadvantages are:
- The number of maps and schemas is limited (depending on the pricing tier chosen).
- Azure Integration Account is an expensive service, especially for the standard tier which you will inevitably need for serious enterprise scenarios.
A practical approach could be to create one integration account for non-production and one integration account for production. In your non-production integration account, you could append -[d/t/a] to the schemas and maps to distinguish among the non-production environments. Obviously this further limits the maximum number of schemas, but still.
The alternative to using an Azure Integration Account is to simply store your schemas and maps in Azure Blob Storage. You will have to write custom functions for schema validation and schema transformation. For transformation, you could pass the source message via the body and the map via a function parameter. You could write reusable functions for xml validation, xml transform,
json parsing and json transform. Not difficult, but still it requires quite some development effort. Then again, if you pay 843 euro per month for the standard tier, you could consider the option. Especially as an ISV, where you could write a library of reusable integration functions.
General link Logic App limitations: