Aug. 2025 ION Actions Transition
Determine what must change to effectively leverage the improved ION Actions executions rolling out in August 2025.
ION Actions Update: Summer 2025
In the summer of 2025, both the frontend and backend of ION Actions received updates to enhance user visibility and control over digital guardrails. These improvements have also optimized ION Actions' performance and expanded use cases, including more granular inventory control.
Due to these upgrades, some existing ION Actions will require modifications. This documentation provides guidelines on identifying and updating those actions, allowing you to test and validate changes in your Sandbox environments before the scheduled deployment to all production environments at the end of August 2025.
Required Changes
The primary change involves modifying the context queries, particularly transitioning from using edges
queries to simpler direct-object queries.
Below is guidance on updating your existing rules to conform to the new schema:
Old Schema Example
Here is an example of a common action defined using the old schema:
{
title: "Issue Must Have an Assignee Before Being Submitted for Review.",
ruleType: "VALIDATION",
eventType: "CREATE",
target: "ISSUEAPPROVALREQUEST",
code: "if (context.get('issueApprovalRequests', {}).get('issue', {}).get('status') in ['PENDING','IN_PROGRESS'] and context.get('issueApprovalRequests', {}).get('issue', {}).get('assignedTo') is None): raise ValidationError()",
context: "{issueApprovalRequests(filters: {id: {eq: $id}}) {edges {node {id issue {status assignedTo {id}}}}}}",
}
New Schema Example
Below is the equivalent action reformatted according to the new schema:
{
title: "Issue Must Have an Assignee Before Being Submitted for Review.",
ruleType: "VALIDATION",
eventType: "CREATE",
target: "ISSUEAPPROVALREQUEST",
code: "issue_approval_request = context.get('issueApprovalRequest') or {}\nissue = issue_approval_request.get('issue') or {}\nstatus = issue.get('status')\nassigned_to = issue.get('assignedTo')\n\nif status in ['PENDING', 'IN_PROGRESS'] and assigned_to is None:\n raise ValidationError()\n",
context: "{\n issueApprovalRequest(id: $id) {\n id\n issue {\n status\n assignedTo {\n id\n }\n }\n }\n}"
}
Key Changes to Note
Context Query:
Replace
edges
queries with direct-object queries. Instead of wrapping your queries inside{ edges { node { }}}
, directly reference the target object.This simplifies accessing data within the rule logic, enhancing clarity and reducing complexity.
Code Adjustments:
Adjust the code logic to directly access the simplified context object structure as demonstrated in the new schema example.
Recommended Workflow
To efficiently iterate on ION Actions, we recommend using the New ION Experience, which provides a dedicated management page for Actions. Refer to the documentation on Managing Actions for instructions on how to find, edit, and manage Actions using this new interface. If you do not know how to access the new ION experience, talk to your CSM today! Please test any rules you need to transition in your sandbox environment today. We will reach out individually to customers who require coordination for the production rollout.
Last updated
Was this helpful?