Overview
Dynamic reprocessing extends the standard reprocessing flow by letting you inject tracked property values directly into the reprocessed message at runtime. Instead of hardcoding header values or message properties, you use a placeholder syntax to reference a tracked property by name — Business Activity Monitoring (BAM) resolves the actual value when the reprocess action runs.
Business value
Dynamic reprocessing eliminates the need to manually locate and re-enter tracked values when reprocessing a failed transaction instance. When an order fails partway through and needs to be reprocessed with its original CustomerId, BAM injects that value automatically. This reduces reprocessing errors and speeds up incident recovery.
How it works
Dynamic reprocessing uses a placeholder syntax in the reprocess configuration fields. When configuring a stage's reprocess settings, enter a tracked property name wrapped in curly braces in place of a static value:
{PropertyName}
For example: {CustomerId}
When the transaction instance is reprocessed, BAM reads the tracked value for CustomerId from the instance and substitutes it into the reprocess payload. The following reprocess setting fields support this placeholder syntax:
- HTTP endpoint — URL and headers
- Service Bus Queue and Service Bus Topic — system properties and custom message properties
- Event Grid — Subject, Event Type, and Data version
In addition to tracked properties, the following default system properties can also be used as placeholders:
{TransactionInstanceId}{StageInstanceId}{StageStatus}{StageName}{BusinessProcessName}{TransactionName}
Default property placeholders are supported for HTTP endpoints, Azure Service Bus queues, and Azure Service Bus topics.
Steps
Use the following steps to configure dynamic reprocessing for a transaction stage. Navigate to Business Activity Monitoring > Business Processes > select the relevant business process > Transactions to get started.
Configure a tracked property as a reprocess header value
Injecting a tracked property value into a reprocess header lets you pass instance-specific context to the reprocess target without hardcoding values.
- Select the transaction you want to configure.
- Open the stage that contains the reprocess configuration.
- In the reprocess settings, locate the header or property field you want to populate dynamically.
- Enter the tracked property name in placeholder syntax — for example,
{CustomerId}— as the field value. - Save the stage configuration.
When this transaction instance is reprocessed, BAM substitutes the tracked value for CustomerId into the specified header or property field. After reprocessing, the injected value is visible in the message headers archived in the child transaction instance's stage.
Configure default properties as reprocess values
Using default system properties as placeholders lets you correlate reprocessed messages back to their origin without tracking custom properties.
- In the reprocess settings for a stage, enter any of the supported default property placeholders (for example,
{TransactionInstanceId}or{StageName}) in the relevant field. - Confirm the endpoint type supports default properties — HTTP endpoints, Service Bus queues, and Service Bus topics are supported.
- Save the stage configuration.
Regenerate the message ID on reprocessing
When multiple transaction instances are reprocessed to the same Service Bus Queue or Topic, duplicate message IDs can cause instances to be discarded if duplicate detection is enabled. Regenerating the message ID prevents this.
- Locate the transaction instance to reprocess in the BAM tracking view.
- Click Edit on the reprocess details for that instance.
- Set the endpoint to Service Bus Queue or Service Bus Topic and enter the endpoint details.
- In the Message ID field, select the regenerate option.
- Click Reprocess to send the message with a new, unique message ID.
To reprocess multiple transaction instances simultaneously, select them and click Reprocess. Each instance is reprocessed to the default reprocess stage configured on the transaction. To change the default reprocess stage, edit the transaction and update the stage configuration.
Limitations
- Dynamic property placeholders are only supported for HTTP endpoints, Service Bus queues, Service Bus topics, and Event Grid. Other endpoint types do not support this syntax.
- Default property placeholders (
{TransactionInstanceId},{StageName}, etc.) are supported only for HTTP endpoints, Service Bus queues, and Service Bus topics — not for Event Grid. - If the referenced tracked property has no value for a given transaction instance, BAM sends an empty string in its place. There is no error raised for missing property values.
- Message ID regeneration is only available for Service Bus Queue and Service Bus Topic endpoints.
Troubleshooting
-
The tracked property value is not substituted — the literal placeholder text appears in the reprocessed message.
Cause: The placeholder syntax is incorrect, or the property name does not match the tracked property exactly.
Fix: Confirm the placeholder uses curly braces and matches the tracked property name exactly, including case (e.g.{CustomerId}, not{customerid}). -
The reprocessed message to a Service Bus endpoint is silently dropped.
Cause: Duplicate detection is enabled on the queue or topic, and the reprocessed instance shares a message ID with an existing message.
Fix: Enable message ID regeneration in the reprocess details before reprocessing. -
A default property placeholder such as {StageName} resolves to an empty value.
Cause: The endpoint type does not support default properties, or the configuration was saved before the feature was enabled.
Fix: Verify the endpoint is an HTTP endpoint, Service Bus queue, or Service Bus topic. Re-save the stage configuration after updating the placeholder. -
Bulk reprocessing sends all instances to the wrong stage.
Cause: The default reprocess stage on the transaction is not configured correctly.
Fix: Edit the transaction and update the default reprocess stage to the intended target stage. -
Event Grid reprocessing does not accept the {CustomerId} placeholder in the Subject field.
Cause: The tracked property name is case-sensitive or contains a formatting error.
Fix: Check the exact property name in the tracking data and update the placeholder to match precisely.