- 11 Nov 2025
- 1 Minute to read
- Print
- DarkLight
- PDF
APIM used as a proxy to Turbo360
- Updated on 11 Nov 2025
- 1 Minute to read
- Print
- DarkLight
- PDF
Some customers prefer to connect their existing Azure API Management solution to Turbo360 and then use that as a proxy between any services using BAM. This is absolutely supported and is a great pattern to use.
In this scenario you can use the Turbo360 Open API spec or setup your own API to proxy Turbo360. You would then implement a policy in APIM which would inject the right information such as the API key for BAM into the request.
Policies in API Management
Consider a business scenario with different Azure services like APIM, Logic App, and Function App. Here APIM acts as a proxy for the complete integration in Azure and it is essential to track the APIM as well. Here comes the Policies in APIM.
Policies are a powerful capability of the APIM that allows the publisher to change the behavior of the API through configuration.
Policies are applied inside the gateway which sits between the API consumer and the managed API.
The gateway receives all requests and usually forwards them unaltered to the underlying API. However, a policy can apply changes to both the inbound request and outbound response.
Click here to know more about Policies in APIM.
Instrumenting Policies to track APIM requests
Since the Business Activity Monitoring (BAM) supports the tracking using API Endpoint, users can leverage Send-Request Policy to send request to an API Endpoint,
Click here to know more about tracking Business Transactions using HTTP endpoint.
Below is the APIM Policy syntax to track a Stage using Business Activity Monitoring (BAM) Endpoint:
<send-request mode="new" response-variable-name="reponse" timeout="60" ignoreerror="true">
<set-url> BAM Host Endpoint </set-url>
<set-method>POST</set-method>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-header name="BAM-BusinessProcess" exists-action="append">
<value> Business Process Name </value>
</set-header>
<set-header name="BAM-Transaction" exists-action="append">
<value> Transaction Name </value>
</set-header>
<set-header name="BAM-Stage" exists-action="append">
<value> Stage Name </value>
</set-header>
<set-header name="BAM-StageStatus" exists-action="append">
<value> Success/Failure/InProgress </value>
</set-header>
<set-header name="BAM-ArchiveMessage" exists-action="append">
<value> true/false </value>
</set-header>
<set-header name="BAM-IsTransactionComplete" exists-action="append"> <value> true/false </value>
</set-header>
<set-body>@{
return new JObject( new JProperty("MessageBody",context.Variables["YOUR_Data"]),
new JProperty("MessageHeader", new JObject( new JProperty("Content-Type", "application/json") ).ToString()) ).ToString();
}</set-body> // Refer the BAM using HTTP Endpoint document to know more about request body syntax
</send-request>