Triggers
Triggers are system-defined or custom automation points that execute specific logic in response to application events. They control workflows, data validations, and UI behavior, and can attach to objects, fields, or pages.
In the Partial Locking Framework, Triggers follow the same locking framework principles as other Partial Locking components, ensuring that upgrade integrity is maintained while allowing controlled customization.
Locking Behavior
The lock state of a trigger is determined during application installation or upgrade based on its source definition. A trigger may be in one of four states:
-
Unlocked (Custom) – Created in the destination tenant.
-
Unlocked – Originates from the source tenant but has no lock restrictions.
-
Partially Locked – Editable only in specific, controlled areas.
-
Locked – Fully protected from modification.
If a trigger is associated with multiple installed applications, the latest update from any source determines its effective lock status.
Tenant Admin Permissions
Tenant Admin permissions on triggers are scoped based on their lock state. The table below lists the supported actions.
Object-Level Object Actions
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|---|---|---|---|---|
|
Action/Property |
Unlocked (Custom) Object |
Unlocked Object |
Partially Locked Object |
Locked Object |
|
New Trigger |
|
|
|
|
|
Reorder |
|
|
Partially Allowed Only custom triggers can be reordered; they must activate after source-defined triggers. |
|
|
Run Triggers |
|
|
|
|
|
Debug |
|
|
|
|
|
Log |
|
|
|
|
Trigger-Specific Actions & Properties
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|---|---|---|---|---|
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Clone |
|
|
|
|
|
View Queue |
|
|
|
|
|
Delete |
|
|
|
|
|
Trigger Name |
|
|
|
|
|
Integration Name |
|
|
|
|
|
Deployment Status |
|
|
Partially Allowed
|
|
|
Timing |
|
|
|
|
|
On Field Change |
|
|
|
|
|
Trigger Condition Formula / Script - View |
|
|
|
|
|
Trigger Condition Formula / Script - Edit |
|
|
|
|
|
Run as Large job |
|
|
|
|
|
Run Relative To |
|
|
|
|
|
Recursion |
|
|
|
|
|
Validate Formula |
|
|
|
|
|
Debug Formula |
|
|
|
|
|
Test Query |
|
|
|
|
|
Log |
|
|
|
|
Trigger Type-Specific Actions & Properties
Trigger Type: Send Email
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Email Recipient
|
|
|
|
|
|
Email Template |
|
|
|
|
Trigger Type: Create Audit Trail
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Trail Object |
|
|
|
|
|
Trail Template |
|
|
|
|
Trigger Type: Validate Record Data
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Treat this trigger as a Warning |
|
|
|
|
Trigger Type: Unique Fields Combination
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Treat this trigger as a Warning |
|
|
|
|
|
Error Message |
|
|
|
|
|
Unique Fields Combination |
|
|
|
|
|
Ignore combinations… |
|
|
|
|
Trigger Type: Update Field Value
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Record |
|
|
|
|
|
Field to Change |
|
|
|
|
|
Access Control Policy |
|
|
|
|
|
Update if the formula returns null |
|
|
|
|
Trigger Type: Change Workflow Status
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
New Workflow Status |
|
|
|
|
|
Access Control Policy |
|
|
|
|
Trigger Type: Create New Record
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Conversion Map |
|
|
|
|
|
Access Control Policy |
|
|
|
|
Trigger Type: Attach Related Record
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Relationship |
|
|
|
|
Trigger Type: Create Template Document
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Document Template or Template Picklist |
|
|
|
|
|
File Field |
|
|
|
|
|
Send To |
|
|
|
|
|
Email Template |
|
|
|
|
Trigger Type: Run Triggers on Related Records
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Relationship |
|
|
|
|
|
Timing Option |
|
|
|
|
|
Group of Triggers |
|
|
|
|
Trigger Type: REST Service
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Retry Parameters |
|
|
|
|
|
REST Service Configuration |
|
|
|
|
Trigger Type: Send HTTP GET Request / Trigger Type: Send HTTP POST Request / Send SMS Message
|
|
Built on Destination Tenant |
Built on Source Tenant & Pushed to Destination Tenant |
||
|
Action/Property |
Unlocked (Custom) Trigger |
Unlocked Trigger |
Partially Locked Trigger |
Locked Trigger |
|
Retry Parameters |
|
|
|
|
|
Trigger Properties |
|
|
|
|
Super Admins have full administrative control over all the triggers, regardless of their lock status. This includes the ability to preview, clone, synchronise, rename, delete, and modify.
If a Super Admin modifies properties that are restricted for Tenant Admins, the component continues to remain on the upgrade path. These changes are treated as temporary overrides and will be replaced by the source during the next application upgrade.
Upgrade Compatibility
When a permitted change is made to a Partially Locked Trigger, the system automatically sets an Modified flag. This flag indicates that the trigger has diverged from its source version and influences upgrade behaviour. This information is displayed in the trigger table within this Object definition page. Likewise, a red exclamation triangle icon is rendered within the trigger view page that undergoes any modification.
Restoring Upgrade Path
To revert a Partially Locked Trigger to its original state, use the Restore Upgrade Compatibility action. This is available only for triggers marked as Modified components.
To restore the modified trigger to its original state, do the following:
-
Navigate to the trigger table from the Object Definition page.
-
Select the desired trigger that needs to be restored from the list of triggers.
-
From the trigger view page, select Restore Upgrade Compatibility.
-
A confirmation dialogue indicating that this action is irreversible. Confirm and proceed to restore the modified trigger to its original state, and the
Modifiedflag is cleared.-
During the next upgrade, all local configurations are overwritten, and the trigger is restored to its source version.
-
Trigger Reordering on Application Upgrades
During an application upgrade, the order of triggers in the destination tenant is updated based on the source tenant’s structure. However, any custom triggers added by the destination tenant are preserved and never removed. The following rules explain how triggers are added, reordered, or removed during upgrades:
|
Scenario |
Behavior in Destination Tenant after Upgrade |
Custom Trigger Impact |
|---|---|---|
|
A new trigger is added in the source |
Added to the destination with its defined event, condition, and action. |
Custom triggers remain unaffected. |
|
A trigger is updated in the source |
Destination trigger is updated unless marked as |
Modified triggers retain local changes. |
|
A trigger is deleted in the source |
Removed from destination unless it has been locally customized and detached from the upgrade path. |
Detached custom triggers are preserved. |
|
Custom trigger in destination |
Preserved during upgrade. |
Not overwritten by source. |