# How to set up business rules to trigger other business rules

## When is it useful for a business rule to trigger other business rules?

There are several reasons you might want a business rule to trigger other business rules, also referred to as subrules.

Reasons why you might want to make a sub rule:

* You want to reuse parts of a rule so the same logic is used in multiple places.
* You want to take actions on an entity that is related to the triggering entity.
* You want actions to be taken asynchronously.

## Setting up the sub rule

Start by creating your sub rule and choosing an action trigger.

<div><figure><img src="https://3609403033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZJAMIKVcqchSDbt4A7DE%2Fuploads%2FVpEjaI7GpLkIlTcBUA8h%2Fimage.png?alt=media&#x26;token=67c99e91-c309-4ffa-9e4b-abc725f17437" alt="" width="563"><figcaption><p>Business rules setup page</p></figcaption></figure> <figure><img src="https://3609403033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZJAMIKVcqchSDbt4A7DE%2Fuploads%2FO1qOdSB0BYIQplyQhjJ8%2Fimage.png?alt=media&#x26;token=ceb35439-219d-4768-8ea7-72903f2333e8" alt="" width="375"><figcaption><p>Select trigger</p></figcaption></figure></div>

When choosing a [trigger](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/triggers/trigger-details) you will need to choose the type of entity the rule needs to act on.\
\
After you have picked the [trigger](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/triggers/trigger-details), setup the rest of the rule as normal. (Remember to click "Create Business rule" to save the rule).

## Setting up the business rule that triggers your sub rule

Open the business rule you want to [trigger](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/triggers/trigger-details) the sub rule.

Add an [action](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/actions/action-details) and choose "Trigger sub rule". Choose the same entity that you chose on your sub rule for "Entities to execute for" and select the sub rule for "Rule to execute".

{% hint style="warning" %}
**Note** If you choose a different entity to what triggered the original rule, it will run the rule for all related entities which might make the sub rule run more than once.
{% endhint %}

If you wish to execute the rule asynchronously toggle the "Execute async" check.

{% hint style="success" %}
**Note** If your sub rule applies to more than one entity it is highly recommended that you run it asynchronously to optimize the execution time.
{% endhint %}

<div><figure><img src="https://3609403033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZJAMIKVcqchSDbt4A7DE%2Fuploads%2FOMXkhEubhaAxkzmZj3fo%2Fimage.png?alt=media&#x26;token=fffdd938-6d96-4a82-b1e9-0fc7b47b0a13" alt="" width="375"><figcaption><p>Select action</p></figcaption></figure> <figure><img src="https://3609403033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZJAMIKVcqchSDbt4A7DE%2Fuploads%2FwdERwxm4x30ZhPvECFn0%2Fimage.png?alt=media&#x26;token=c8f1e44d-83d3-4425-8fa7-7eaeab99ec62" alt="" width="375"><figcaption><p>Configure action</p></figcaption></figure></div>

## Pitfalls when using sub rules

When using sub rules there are some pitfalls you should be aware of:

* Your sub rule can [trigger](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/triggers/trigger-details) other rules either directly or by taking an [action](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/actions/action-details) that [triggers](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/triggers/trigger-details) a rule. This can cause a loop where rules [trigger](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/triggers/trigger-details) themselves. To avoid this Struct PIM only allows a rule to [trigger](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/triggers/trigger-details) 10 times per original [action](https://docs.struct.com/pim3/reference/product-model-setup/business-rules/business-rule-details/actions/action-details).&#x20;
* Changing a sub rule will change behavior wherever it is used, so be cautious of all the places a rule is used before changing it.
