2 Working with Control Flows

This chapter describes how to create and work with control flows to augment the services provided by the Volte and VoWifi application in Oracle Communications Evolved Communications Application Server (OCECAS).

For an introduction to the Session Design Center and an overview of control flows, see ”About the Session Design Center” in Oracle Communications Evolved Communications Application Server Concepts.

About the VoLTE and VoWiFi Application

The VoLTE and VoWiFi application provides session control and services for voice calls and multimedia sessions over Long Term Evolution (LTE) and for voice calls over Wi-Fi. To define new services and behaviors for subscribers, you make changes to the VoLTE and VoWiFi application by creating or modifying control flows. You create and modify control flows in the context of a change set. For more information about change sets and change management, see "Working with Change Sets".

The VoLTE and VoWiFi application consists of four message control flows and five application control flows.

About the Message Control Flows

Message control flows are triggered when the application server receives one of the following SIP messages: SIP INVITE, SIP OPTIONS, SIP REGISTER, or SIP SUBSCRIBE. Each of these SIP messages triggers a control flow of the same name:

  • The SIP INVITE control flow analyzes the message headers, retrieves data about the subscriber and the mobile virtual network operator (MVNO), and invokes the Session Origination or Session Termination service.

  • The SIP OPTIONS control flow manages the transfer and negotiation of video sessions during the handoff from a packet-switched to a circuit-switched network.

  • The SIP REGISTER control flow analyzes the message headers and stores the endpoint's registration expiry and contact headers in the subscriber record. It also manages the life cycle of registration and supports Access Transfer during the handoff from a packet-switched to a circuit-switched network.

  • The SIP SUBSRIBE control flow responds to a SIP SUBSCRIBE message during endpoint subscription.

You can view the Message Control Flows by clicking View Application Configuration from the SDC home page and then clicking the name of the Message Control Flow that you want to view under the Application tab.

About the Application Control Flows

The VoLTE and VoWiFi Application control flows provide supplementary services and manage the phases of a session life cycle. The Session Origination and Session Termination control flows invoke additional control flows to deliver supplementary services. Supplementary services are services that supplement the telephony and data services.

The Session Deregistration control flow manages the life cycle of deregistration.

The Session Origination control flow manages the life cycle of the originating session. It executes additional control flows to invoke the following supplementary services:

  • Ad-hoc Conferencing - allows a subscriber to transform a one-to-one call session into a multi-party call session

  • Communication Hold Charging

  • Communication Hold (origination)

  • Originating Identity Restriction

  • Outgoing Communication Barring

  • Terminating Identity Presentation

The Session Registration control flow manages the life cycle of registration.

The Session Termination control flow manages the life cycle of the terminating session. It executes additional control flows to invoke these supplementary services:

  • Anonymous Communication Restriction

  • Communication Diversion

  • Communication Hold (termination)

  • Early Communication Diversion

  • Incoming Communication Barring

  • Originating Identity Presentation

  • Terminating Identity Restriction

The Terminating Access Domain Selection control flow selects the circuit-switched access or packet-switched access network(s) to use to deliver a terminating voice session to the user endpoint.

You can add Activities to the VoLTE, VoWiFi and eSRVCC session registration and de-registration control flows to perform specific tasks required by a customer in response to registration or de-registration events.

About Control Flow Activities

A session control flow consists of logically linked Activities, such as Start, Run Web Service, Start Charging Session, Start Conference Session, and so on. You must configure an Activity when you add it to a control flow.

Configuring an Activity consists of specifying values for the following elements:

  • Name

    This is the Activity name, which can be the default name or a custom name that you assign. When you assign a custom name, the control flow editor retains the default name for internal use and displays it in smaller grey text.

  • Comments

    You can add a short, optional comment to describe the Activity.

  • Parameters

    An Activity can require a set of parameters for which you need to provide appropriate values.

    All required parameters must be provided with values for the control flow to compile successfully.

  • Exits

    Except for End, each Activity has one or more exits, which you must connect to the next logical action. All exits must have a connection for the control flow to compile successfully.

    You can define dynamic exits for the Wait for Events Activity. A dynamic exit is one that you add to the Activity at the time you include the Activity in the control flow.

About the Activities Set

Table 2-1 lists the set of Activities available for use in creating or modifying a control flow.

Table 2-1 Activities Set

Activity Name Description

Adjust Media

Adjust conference media stream for user equipment parameter.

Add EDR Field Value

Add field and value to EDR.

Alarm

Log an occurrence of the configured Alarm.

Array Index

Store the current array index.

Compare

Compare values derived from source parameter locations.

Compare Date Time

Compares a specified Date and Time, Date, or Time of Day. relative to Date and Time, Date, or Time of Day from an external concept.

Compare Day Of Week

Compares a specified day of the week to the value from an external concept.

Compare List and Value

Compares a list of values against a specified value or regular expression to determine whether the value occurs in the list.

Copy Value

Copy value derived from source parameter into destination parameter.

Date Time Offset

Offset a date time value.

End

Terminates the flow for this branch of logic.

End Charging Session

End the charging function with the Charging (Diameter) function.

Event Charge

Send an event charge to the charging data function (CDF).

Extract and Store String

Extract and store a string.

Find And Replace And Store Value

Find and replace value in data.

Generate Document And Store

Generate document derived from template parameter and store into destination parameter.

Increment Statistic

Increment statistic derived from statistic parameter.

Load Service Definition

Run the derived service retrieved by name from the user database repository.

This Activity has only one exit to address the issue when the service cannot be loaded. If the service loads successfully, the normal logic flow continues.

Notes

Graphical note on control flow.

Prefix Tree Lookup

Look up a value in a Prefix Tree.

Release

Release the specified endpoint.

Remote Copy

Copy a value from a different session context to the local context.

Retrieve Session List

Retrieve a list of session IDs for the specified session key.

Route

Route to the original endpoint.

Route Changed

Route to the specified destination endpoint.

Run Control Flow

Run the specified control flow.

Run Service Definition

Run the specified service.

Run Web Service

Run a Web (SOAP or REST) service.

Send Message

Send SIP message.

Start

Start processing for control flow.

Start Back to Back Session

Start back-to-back session between starting endpoint and destination endpoint.

Start Charging Session

Start charging session with the charging data function (CDF).

Start Collecting Digits

Start collecting digits derived from prompt and store digits to parameters to user equipment parameter.

Start Conference Session

Start a conference session.

Start Playing Media

Start playing media derived from media template parameter to user equipment parameter.

Start Recording Message

Start recording media derived from prompt and record to parameters to user equipment parameter.

Statistic Branching

Branch on statistic value.

Stop Media

Stop playing media to user equipment parameter.

Store

Set a context value.

Start Session Key

Store key in current session from specified context path.

Sync Statistic

Sync the Statistics cache with the server.

Telemetry

Start or stop a telemetry record.

Translate And Store Value

Compare if value derived from source parameter is present in list derived from source list parameter and store in destination parameter.

Update Charging Session

Update the charging session with the charging data function (CDF).

Update Profile

Updates a subscriber UDR profile data.

Wait For Event

The WaitForEvent Activity suspends the control flow until a specified event occurs. The event can be a SIP-session event such as Answer, No Answer, or Hang Up or it could be an event associated with call hold and resume, for example, or a Diameter event such as Abort Session Request (ASR) or Reauthorize Session Request (RAR).

This activity supports dynamic exits, which allow you to create exits when you add the Activity to the control flow. A dynamic exit allows you to branch appropriately based on the specified event.


About Using Control Flows

To define new services and behaviors for subscribers, you make changes to the VoLTE and VoWiFi application by creating or modifying control flows.A control flow consists of logically-linked actions (Activities) and decisions that specify how to process a voice call or multimedia session.

To understand the basic concepts of control flows, see "About the Session Design Center” in Oracle Communications Evolved Communications Application Server Concepts.

About the Control Flow Editor

When you open an existing control flow or create a new one, you open the control flow editor and the editing canvas. The editing canvas is the work area on which you create or edit the control flow logic. The canvas has vertical and horizontal scroll bars

The editing canvas also includes the following parts:

  • The Editing Toolbar

  • The Information panel

  • The Changes panel

About the Editing Toolbar

Table 2-2 lists the tool icons that can be found on the editing toolbar, which appears on the left side of the canvas:

Table 2-2 Editing Toolbar Icons

Icon Function

Spyglass (search)

Search the control flow. Clicking it opens an adjoining panel with a Search field followed by a list of control flows contained in the changed set.

Pencil (edits)

Shows control flow differences. Clicking opens a panel that details the differences between the current change set and the baseline change set.

Circled Red Exclamation Point (warning)

Shows issues found in this control flow. Clicking it opens a list of control flows having errors, along with descriptions of each of the errors found.

Save

Manually saves the control flow.

Undo

Undoes (reverts) the last change. Greyed out if no changes have been made.

Redo

Restores the last change that was undone. Greyed out if nothing has changed.

Scissors

Cuts (removes) an item from the canvas and saves it to the clipboard.

Copy

Copies an item from the canvas and saves it to the clipboard. See "Reusing Control Flow Logic".

Paste

Pastes and item from the clipboard to the canvas. See "Reusing Control Flow Logic".


Note:

For a read-only control flow, only the Spyglass and Copy icons are available. The Copy icon is inactive until you select something to copy.

About the Information Panel

The Information panel is adjacent to the right side of the editing toolbar. The Information panel opens when you click the Spyglass icon, the Pencil icon, or the Warning icon in the editing toolbar.

When you click the Spyglass (search) icon in the editing toolbar, the Information panel displays a search field that allows you to search for an Activity in the control flow. Enter a string of characters to be matched against an Activity name. The control flow editor tries to match the string against both the original name of the Activity and its assigned name, if the name has been changed. If an Activity occurs more than once, the panel displays all occurrences of that Activity. When you click an entry in the list, the Activity is highlighted on the canvas.

When you click the Pencil (edits) icon, the Information panel shows the differences between the current control flow and the control flow in the baseline change set. For a new control flow that you created in this change set, the panel shows no differences. If you are modifying a control flow that was created in an earlier change set, the panel shows the differences between the current and original control flows.

When you click the Warning icon in the editing toolbar, this panel displays the Activities in the control flow that have issues and require corrections.

About the Changes Panel

The Changes panel is the right-most panel on the editing canvas. It shows the changes in the change set. If a control flow is created in a change set, no differences are shown. If a control flow is inherited from the base change set and is modified in the current change set, the Changes panel shows the differences. If a control flow is inherited from the base change set and is deleted in the current change set, the Changes panel displays the control with a retract symbol, allowing you to restore it to the change set. The control flow appears in the All Control Flows tab with a line through it and a retract symbol next to it. See "Working with Change Sets" for more information.

Click the arrow next to a category to expand the list of changes to it.

The Changes panel shows any changes, including creations, modifications, or deletions to the entities in the following list.

  • Control Flows

  • Concepts

  • Charging Templates

  • EDRs

  • Import WSDL

  • Locales

  • Media Resources

  • Media Servers

  • Notifications

  • Prefix Trees

  • Schemas

  • Statistics

  • Unclassified Service Data

  • Web Services

For CONTROL FLOWS, the Changes panel displays the following alert for unconnected exits:

Unconnected exit (N)

where N is the total number of unconnected exits in the control flow.

Creating a Control Flow

You must create or modify a control flow within a change set. A change set is a logical grouping of configuration and control flow changes that makes it easier to organize and deploy changes.

Note:

You cannot create a control flow for a change set whose deployment status is Active.

For an understanding of change set concepts, see "About Change Management" in Oracle Communications Evolved Communications Application Server Concepts.

Creating a New Control Flow

To create a new control flow for a change set:

  1. Open the change set. See "Locating and Viewing Details for a Change Set".

  2. Click All Control Flows.

  3. Click New.

  4. In the New Control Flow dialog box, enter the following.

    1. In the Name field, a unique name for the control flow.

    2. In the Description field, a short description.

  5. Click Create.

The control flow editor places the Start Activity icon on the canvas.

Constructing the Control Flow

Constructing a control flow consists primarily of two operations: connecting and configuring Activities.

Connecting Activities

You construct control flow logic by connecting Activities to create a logical processing sequence for a call or multimedia session. You can create multiple branches in a control flow based on Activity outcomes such as Success, Error, Busy, No Answer, Waiting for Event, and so on.

To connect Activities:

  1. Place your cursor on an unconnected exit for an Activity.

    Tip:

    All unconnected exits are displayed in red at the bottom of the Activity icon.
  2. Drag your cursor to the location where you want to place the next Activity and release it.

    The Activities selection window displays.

  3. Select the next Activity in the logic flow in one of the following ways:

    • Use the vertical scroll bar of the Activities selection window to scroll to the Activity you want.

    • Enter a search string in the Search field to filter the available Activities to those that have matching text in either their name or description.

  4. Click the desired Activity to select it.

    The selected Activity is placed on the control flow canvas with a line connecting it to the selected exit of the preceding Activity. The line represents the path that will be taken when that exit condition occurs.

    Note:

    You can connect multiple exits to the selected Activity.

    Note:

    You must terminate each branch in the control flow with an End Activity.

    Tip:

    When you add an Activity:
    • The Search display panel display is updated.

    • The Changes panel updates its counter of undefined values.

  5. Configure the Activity, if necessary. See "Configuring an Activity" for more information.

  6. Repeat steps 1 through 5 to add additional Activities until the control flow is complete.

  7. Click Save.

Configuring an Activity

To configure an Activity, you can assign it a different name, add comments to it, and specify values for the Activity's parameters

To configure an Activity:

  1. Double-click the Activity to display the Activity detail panel.

  2. To change the name of the Activity:

    1. Click the pencil icon next to the name.

    2. Enter a unique name.

    3. Click the check mark.

      Note:

      OCECAS also retains the original name of the Activity for internal use.
  3. To add comments or notes to the Activity:

    1. Click the pencil icon next to Add comments.

    2. Enter your comments.

    3. Click the check mark.

  4. In the Parameters section, provide values for each entry. See "Configuring an Activity" for more information.

  5. In the Exits section, ensure that all exits for this Activity are connected.

About Compiling Control Flows

An editable control flow is automatically saved, validated and compiled whenever you make a change to the flow in the control flow editor. For a control flow to compile successfully, all the Activities in the control flow must contain valid configuration data and all Activity exits must be connected.

Checking for Errors

The most common causes of errors in a control flow are Activity parameters that have not been set and Activity exits that have not been connected. For more information about errors, see "About the Changes Panel" and "About the Information Panel".

The control flow editor also writes information to event detail records when a control flow is compiled. For more information, see "Understanding EDRs" in Oracle Communications Evolved Communications Application Server.

Reusing Control Flow Logic

You can reuse control flow logic in more than one location by using the copy and paste tools in the editing tool bar.

Important:

  • The target location can be in the same control flow, in another control flow of the same change set, or in another change set.

    To paste control flow logic into another change set, the target change set must be editable.

  • Configure each Activity after you paste in the target location. Ensure that all parameters and exits are defined.

Copying an Activity

To create a copy of an Activity:

  1. In the source control flow, locate the Activity group.

  2. Click the Activity to select it.

  3. Right-click and select Copy.

  4. Go to the target location.

    As stated earlier, the target location for the Activity should be an editable change set.

  5. Right click and select Paste.

  6. Configure the Activity in the target location.

Copying a Group of Activities

To copy a group of connected Activities:

  1. In the source control flow, locate the Activity group.

  2. Move the cursor to the Activity that is the starting Activity for this group.

  3. Left-click on the mouse and drag it to include the set of connected Activities.

  4. Stop and release the cursor.

    The set of connected Activities are selected.

  5. Right-click and select Copy.

  6. Go to the target location.

    The target location for the Activity group must be an editable change set.

  7. Right-click the mouse and select Paste.

  8. In the target location, configure each Activity in the copied set.

Modifying a Control Flow

You must modify a control flow within a change set. You can either create a new change set or locate an existing change set to modify.

Note:

If a change set has been deployed to the staging or production environment, you cannot modify its control flows.

Locating a Control Flow

To locate a control flow within a change set:

  1. Select the change set. See "Locating and Viewing Details for a Change Set".

  2. Locate the control flow in one of the following ways:

    • Click All Control Flows.

      A table displays the current set of control flows in the change set. To sort the list, click a column heading. Locate the flow.

    • In the Changes panel to the right, click Control Flows to expand the section.

      Locate the flow.

  3. Click the control flow entry.

    The control flow opens on the editing canvas.

Modifying a Control Flow

To modify a control flow:

  1. Locate the control flow in the change set. See "Locating a Control Flow".

  2. Update the control flow as required. See "Constructing the Control Flow" for more information.

  3. Check for errors:.

    • In the Differences panel to the left, review the entries under the this control flow.

    • In the Changes panel, review the changes to the control flow.

  4. Click Save.

Reverting Changes in a Control Flow

You can revert any changes that you have made to a control flow in a change set.

If you have created a new control flow in a change set, you will actually delete it–or, undo its creation.

If you have made changes to a control flow that is derived from the base change set, you discard or undo the changes. The control flow is then as it is in the base change set.

To revert changes to a control flow:

  1. Locate the change set and open it. See "Locating and Viewing Details for a Change Set" for more information.

  2. Do one of the following:

    • Select the All Control Flows tab

    • Click the Control Flows item in the Changes panel

  3. Locate the control flow in the list.

    Note:

    In the All Control Flows tab, control flows that display the eye icon to the far right side of the line are read-only. You cannot revert them.
  4. Click the revert icon revert symbol (3/4 circle with arrow ending). to the right side of the control flow name to undo the changes to it.

    If you are reverting a new control flow, a confirmation query displays to ask if you want to discard the control flow.

    • Click Discard to delete the control flow.

Deleting a Control Flow

If you have not made any changes to a control flow, you will see a trash-bin icon beside it under the All Control Flows tab. You can click this icon to delete the control flow from the current change set. In this case, you have made a change to the control flow so you will see the revert icon beside it, which gives you a chance to revert or undo your deletion.

To delete a control flow:

  1. Locate the change set containing the control flow and open it. See "Locating and Viewing Details for a Change Set" for more information.

  2. Select the All Control Flows tab.

  3. Locate the control flow in the list.

  4. Click the trash-bin icon ( trash can icon) to the right side of the control flow name.

    A confirmation query displays to ask if you are sure that you want to delete the control flow.

  5. Click Delete to delete the control flow.

    The control flow name displays with a line through it and the revert symbol appears next to it, giving you the option to restore the control flow to the change set.

If you have created a new control flow in a change set, you can delete it by reverting it. See "Reverting Changes in a Control Flow" for more information.

Working with External Concepts

External concepts consist of various data sources that you can access through Activity parameters in a control flow. For example, you could access data from the inbound or outbound message headers of a call session.

Figure 2-1 illustrates how to access external concepts to set parameter values for an Activity. Double-click the Activity icon to open the configuration panel. See "Configuring an Activity" for more information on setting Activity parameters.

Figure 2-1

Surrounding text describes Figure 2-1 .

Click the parameter that you want to set and then click the down-arrow to open a list of context locations that reference the external concepts.

Figure 2-2 illustrates the groupings and the list of external concepts.

Figure 2-2 List of Groups and External Concepts

Surrounding text describes Figure 2-2 .

Select a particular group to filter external concepts to only those that belong to the group.

Enter a keyword in the Search field to narrow the list to those entries that contain the keyword in either the concept name or the context location.

Table 2-3 describes the groupings into which OCECAS organizes external concepts:

Table 2-3 External Concepts Groupings

External Concept Group Description

Call Info

Information derived from the call, for example, the calling party and the called party.

Chassis

Data required for chassis.

Compiled Data

Control flow data derived from compilation.

Configuration Data

Data related to the configuration. Includes, for example, the ATU-STI url, the conference factory URI, whether charging is enabled, and so on.

Diameter Field Group

Incoming and outgoing credit control messages.

EDR Field Group

Data from an Event Detail Record.

Incoming Request

Data that is presented in an incoming request, including Call-ID, Timestamp, Request-URI, and so on.

Initial Request

Data presented in the initial request in an SIP header, for example the From, Call ID, P-Asserted-Service, and so on.

Local Context

Data that has been defined in the control flow.

Notified Field Group

Data from the fields of a notification message.

Outgoing Request

Data presented in an outgoing request, for example Contact, Expires, SDP video streams, and so on.

SDP Data

Data from the Session Description Protocol.

Service Data

Data used by services or applications, including service-specific data and general data, for example, the home network ID list for VoLTE and VoWiFi service, the T-ADS preferences for SRVCC service, country-code mapping for all services, and so on.

Service Loader

External concepts that are used by bootstrap control flows such as SIP INVITE, SIP OPTIONS, and so on, to decide which sub-application or service to run.

SIP Application Session Data

Data from the SIP Application session.

User Profile

Data from the user's profile, such as HomeCountry, TimeZone, the control flow names of registered services, Language, MSISDN, STN-SR, and so on.


OCECAS uses context locations to locate information associated with a session. For example, outgoing credit control messages that are created during a session are located with the information about Multiple Services Credit Control (MSCC) at /Diameter/Outgoing/MSCC.

You can also add a local context external concept to a control flow.

Adding an External Concept

You can add a local context external concept when you configure an Activity that accepts an external concept as a parameter value.

To add an external concept to a control flow:

  1. Open the control flow.

    See "Locating a Control Flow" for more information.

  2. Double click the Activity whose parameter requires the external concept.

    The configuration panel opens.

  3. Click the parameter you want to set.

    A dialog box displays the groups and a list of the external concepts.

  4. Click Add.... See Figure 2-2 for an example.

    The Add External Concept dialog box displays.

  5. Enter the information to describe the external concept.

    1. In the Name field, enter a unique name for the concept. Name must be alphanumeric characters plus -, _, and space.

    2. In the Path field, specify the location of the runtime data, beginning with /Local/. For example:

      /Local/new_concept_name
      

      Path must be alphanumeric characters plus -, _, and /.

    3. For the Data Type field, select from String, Integer, Float, Boolean, Date, MapArray, StringArray, Integer Array, and FloatArray.

  6. Click Confirm.

    The external concept is added and displays as a selection in the Local group.

About Charging Concepts

Charging concepts consist of data that results from some calculation such as the number of used units since the last request, or data that the Activities need to know explicitly, such as the validity time of the granted quota. OCECAS generates this information when it is required for an outgoing message or a message receipt. You normally use the request or response message template to copy these values to or from the context map for the session.

Working with Charging Templates

You need to reference the appropriate values for the Request Template and Answer Template parameter when you define the following Activities:

  • Start Charging Session

  • Event Charge

  • Update Charging Session

  • End Charging Session

For the template parameters, OCECAS provides four Charging templates called ACAnswer, ACRequest, CCAnswer, and CCRequest. Select a corresponding template for the Activity.