When to Perform Checkpoints

When detecting duplicate messages, it is important to place the Checkpoint activity before any activities that you do not want to execute more than once. For example, consider the following process definition.

In this process definition, an order is received, inventory is checked, and then either an email is sent to the inventory manager if the inventory is not sufficient, or the order is processed. In this example, you can either place the Checkpoint before the QueryInventory activity (because it is a database query and no actual change occurs) or after the activity but before either the Send Mail or ProcessOrder activities. It is a better choice to put the Checkpoint activity between the process starter and the QueryInventory activities.

The following illustrates the example process definition with the Checkpoint activity properly placed.