Scenario Steps Reference
This document provides a complete reference of the scenario steps supported by Intent-Based Diagnostics in AGILITY.
Scenarios should normally be created and managed using the Scenario Authoring interface.
If the UI is temporarily unavailable or unstable, you can use the instructions in this page to define scenarios manually.
Each scenario is constructed using a sequence of Given, When, and Then steps that describe the conditions, actions, and expected outcomes of the diagnostic procedure.
This reference provides the complete catalog of supported scenario steps used in Intent-Based Diagnostics.
These steps are used across all scenarios, including those available in the UI, predefined system scenarios, and any new scenarios created by users.
The sections below list all supported steps, including:
Context Definition (Given)
Used to define the initial context and entities involved in the scenario.
Given steps specify the conditions that allow the scenario to capture the relevant flow or multiple flows to be tested. They ensure the scenario is applied to the correct data before validation begins.
These steps are organized into two types:
Fixed steps (no parameters): Predefined conditions that are always applied as-is.
Parameterized steps: Configurable conditions where users can define specific values to tailor the scenario to their use case.
Flow Execution and Validation (When / Then)
Used to describe the flow behavior and validate expected outcomes.
When steps represent actions or events within the flow, while Then steps validate that the expected patterns and results are observed in the captured data.
Supported
WhenSteps andThenSteps - These steps are organized into two types:Fixed steps (no parameters): Predefined conditions that are always applied as-is.
Parameterized steps: Configurable conditions where users can define specific values to tailor the scenario to their use case.
Supported
that validatesVariationsAllowed Operations
Appendix – Complete List of Steps
Context Definition (Given)
Supported Fixed Given Steps (No Parameters)
This section lists supported Given steps that do not require parameters. These steps define the initial conditions used to establish the scenario's starting context.
This section exposes only the most used steps. Check the Appendix (at the end of this document) for the complete list of Supported Given Steps.
Step Pattern | Description |
|---|---|
| Filters a single SIP registration signaling flow. |
| Sets the context for calls where operator-barring signaling or cause is present. |
| Builds two SIP call flows with the caller and callee roles reversed. |
| Builds two SIP call flows linked through a shared participant across both calls. |
| Filters two SIP registration flows associated with different subscribers. |
Supported Parameterized Given Steps
This section lists all supported Given steps that accept parameters. These steps allow users to specify dynamic values when defining the initial conditions of a scenario.
This section exposes only the most used steps. Check the Appendix (at the end of this document) for the complete list of Supported Given Steps.
Step Pattern |
|---|
|
|
|
|
|
|
|
|
|
|
|
Practical Example for Parameterized Given Steps
Canonical Step | Parameter | Description | Example |
|---|---|---|---|
|
| Loads the base scenario context for a specific flow type and protocol. |
|
|
| Loads a flow context that combines two protocols in the same scenario. |
|
Flow Execution and Validation (When / Then)
When Steps
Supported Fixed When Steps (No Parameters)
This section lists all supported When steps that do not require parameters. They represent the actions, triggers, or events executed within a scenario after the initial conditions have been established.
This section exposes only the most used steps. Check the Appendix (at the end of this document) for the complete list of Supported When Steps.
Step Pattern |
|---|
|
|
|
|
|
|
|
Supported Parameterized When Steps (No Parameters)
This section lists all supported When steps that accept parameters. They represent the actions, triggers, or events executed within a scenario after the initial conditions have been established.
This section exposes only the most used steps. Check the Appendix (at the end of this document) for the complete list of Supported When Steps.
Step Pattern |
|---|
|
|
|
|
|
|
|
|
|
Practical Example for Parameterized When Steps
Canonical Step | Parameter | Description | Example |
|---|---|---|---|
|
| Checks that a specific user or UE is connected through the expected access technology. |
|
|
| Validates that one user starts a call toward another user. |
|
Then Steps
Supported Fixed Then Steps
This section lists all supported Then steps that do not require parameters. They are used to validate the expected outcome of a scenario. These steps verify whether the conditions defined in the scenario are met after the actions have been executed.
Check the Appendix (at the end of this document) for the complete list of Supported Then steps.
Step Pattern |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Supported Parameterized Then Steps
This section lists all supported Then steps that accept parameters. They are used to validate the expected outcome of a scenario. These steps verify whether the conditions defined in the scenario are met after the actions have been executed.
Check the Appendix (at the end of this document) for the complete list of Supported Then steps.
Step Pattern |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Practical Example for Parameterized Then Steps
Canonical Step | Parameter | Description | Example |
|---|---|---|---|
|
| Verifies successful call answer within a given time and applies additional signaling validations. |
|
|
| Validates that a specific network element sends a given message to another element and that the message content matches the expected rules. |
|
Supported That Validates Variations
Currently supported formats for validation-driven step patterns are listed below.
These patterns define how message exchanges between network elements can be validated within a scenario.
Step Pattern |
|---|
|
|
|
|
|
|
|
|
|
Allowed Operations
This section lists the supported validation operations that can be used when defining validation expressions within scenario steps.
These operations allow scenarios to verify the presence, value, or relationship of fields within protocol messages.
Supported Validation Operations
The following operations are currently supported:
existscontainsnot_containscontains_anycontains_allequalsequals_ignore_casenot_equalsgreater_thangreater_than_or_equallower_thanlower_than_or_equalstarts_withstarts_with_anyends_withsubsetsupersetregexis_ne_party_typecodec_existsnot_emptyemptypresentabsentis_contained_within
Recommended Formatting Rules for Validations
When defining validations, follow these formatting guidelines to ensure correct parsing and evaluation.
Separate multiple validations using a semicolon and a space
Example:validation1 ; validation2Use dynamic references when retrieving values from the scenario context
Supported prefixes include:ref#arg#event#
Use bracket lists for multi-value expressions
Example:[value1, value2]
These rules ensure validations are interpreted correctly by the scenario evaluation framework.
Validation Variations
Certain validation patterns support dynamic resolution or cross-message correlation. The variations below describe how these mechanisms work.
Variation 1: Dynamic Participant Lookup (contains)
This variation allows the framework to retrieve a value from the scenario context and verify that it is present in a message field.
Non-Parameterized Format
diameter_subscription_id_data contains [ref#{context_parameter}, arg#{context_value}]Example
diameter_subscription_id_data contains [ref#participant_msisdn, arg#UEa]How It Works
This validation uses two dynamic references:
arg# identifies the context entity or alias
ref# specifies which value should be retrieved from that entity
The validation passes when the resolved value is found within the field being validated.
Conceptual Model
Think of the references as follows:
arg#... → Which entity or alias should be used?
ref#... → Which value should be retrieved from that entity?
Available ref# Resolvers
Current resolvers defined in the framework configuration:
ref#calling_party
ref#called_party
ref#participant_msisdn
ref#participant_imsi
ref#conference_creator
ref#supported_conference_factoriesResolvers Currently Used in Database Scenarios
Defined in the scenario population scripts (populate*.sql):
ref#participant_msisdn
ref#participant_imsiSupported arg# Keys Used in Database Scenarios
arg#UEa
arg#UEbQuick Usage Guide
Use arg# when you need to select a participant or entity defined in the scenario context.
Use ref# when you need the framework to retrieve a specific attribute from that entity, such as:
MSISDN
IMSI
End-to-End Example
diameter_subscription_id_data contains [ref#participant_msisdn, arg#UEa]Step-by-step evaluation:
arg#UEaselects the participant alias UEa from the scenario context.ref#participant_msisdninstructs the framework to retrieve UEa’s MSISDN.The framework resolves the value (for example:
447700900123).