Data Modify Actions

A data modify action (DMA) defines how to manipulate a MATRIXX Data Container (MDC) or virtual field value before or after a message has been processed by rating or a field value in a temporary workspace MDC created during rating.

You can perform any of the following actions using DMAs:
  • Delete a field value in a destination MDC or virtual field.
  • Replace a field value in a destination MDC or virtual field with a constant.
  • Copy a source field value to a field in a destination MDC or virtual field.
  • Extend the time value in a DateTime field in a destination MDC by a specified count offset.
Note: The source type must be the same for all revisions of a DMA. After creating a DMA, if you change the source type in a later revision, the price loader reports an error. If a data modify source type is metadata, the source fields must not be changed between revisions.

Sources

You can use any of the following sources for a DMA:
  • A field in a message — From the MtxDiamRoMsg, a descendant of these MDCs, a 5G message MDC, or a virtual field.
    Note: Using a field from the MtxTcapMsg MDC as a source for a DMA is deprecated.
  • An object field — From a subscription, group, device, or user.
  • A field in an LDAP response (PreRating profiles only) — From the MtxLdapResponseDataExtension MDC, one of its descendants, or a virtual field. The MDC type is determined based on whether calling or called party data is used, and the key of the LDAP response extension data or its descendant.

    The LDAP response must have been created already from an LDAP request for an earlier message in this charging session or from an earlier PreRating profile for this network message. If it has not been created already, then the requested field is not present.

  • A workspace field (data modify profiles only) — From a custom workspace MDC descended from one of the MDCs listed in Workspace MDCs.
  • A metadata field (data modify profiles only) — From a selected normalizer, rate table, or policy table where metadata is temporary data defined in the table or normalizer. A metadata field exists only until rating has completed processing the table or normalizer that defined it. During rating, any metadata fields that are referenced in a data modify action for a selected profile can be copied to a destination MDC.

    When more than one revision of normalizer is executed during usage rating, for example, if the quota validity time extends beyond the effective date of the normaliser revisions, it might cause more than one data modify action to be executed. If metadata values change between data modify revisions, this results in the destination data being overwritten so that the final value of the destination data is set to the metadata value present in the final revision of normalizer used.

  • A constant value — A value you specify. The value type is defined in an MDC descended from the MtxDataModifySourceConstant MDC.
  • A DateTime field count offset — A count offset you specify for extending a selected base time.
  • A normalizer calculated value — A numeric value returned by a difference normalizer as follows:
    • Balance Difference Normalizer — The calculated value is the calculated difference between the relevant sources referenced by the normalizer. For more information, see the discussion about balance difference normalizers.
    • Difference Range Normalizer — The calculated value is the available amount of the balance referenced by the normalizer. For more information, see the discussion about difference range normalizers.
    When used with a DMA destination of a workspace field, the workspace must be a simple field (that is, not an array, list, or struct) that sources from a numeric value. A data modify profile using such a source can only be used in a decision table using the configured normalizer.
    Important: To avoid a significant reduction in performance in the Charging Server, when the source is a normalizer value, be sure that no other threads are attempting to update the balance being read. For example, the only offer using the balance is in a state where the balance cannot be updated.

Event Initiator Types

You can use an object field from a subscription, group, device, or user as the source for a data modify action. Valid sources depend on the event initiator type. Event Initiator Types and DMA Object Sources lists the valid sources for different event initiator types.
Table 1. Event Initiator Types and DMA Object Sources
Event Initiator Type Valid DMA Sources
Subscriber
Example event:
  • Subscriber offer purchase
  • Subscriber balance topup
  • Subscription object.
  • Group object. If the group has a tier and the tier is specified in Tier Name in the data modify action source, use that group.

    If the tier is not set, MATRIXX Engine considers the source field to be empty and processes it according to the action selected in Source Action.

  • Device object.
  • User object, providing the subscription has defined a user in the owner role.
Group
Example event:
  • Group offer purchase
  • Group balance topup
  • Group object. If the group tier is specified, MATRIXX Engine retrieves the DMA source object based on the specified tier. If the tier is not set, MATRIXX Engine retrieves the source object associated with the group initiator.
  • Device object.
  • User object, providing the group has defined a user in the owner role.
Device
Example event:
  • Device offer purchase
  • Subscription object.
  • Group object. If the group has a tier and the tier is specified in Tier Name in the data modify action source, use that group.

    If the group tier is not set, MATRIXX Engine considers the source field to be empty and processes it according to the action selected in Source Action.

  • Device object.
  • User object. Use the user object for the subscriber associated with the device, providing the subscription has defined a user in the owner role.

Destinations

You can use any of the following destinations for a data modify action:
  • A field in a message — Sets a field in MtxDiamRoMsg, MtxTcapMsg, a descendant of these MDCs, a 5G message MDC, or a virtual field.
  • A field in an LDAP request data extension (PreRating profiles only) — Sets a field in the MtxLdapRequestDataExtension MDC, one of its descendants, or a virtual field. Use this destination to set fields in the custom MDC specified in the callout request selected in this data modify action. The callout request and the data modify action must both be assigned to the same PreRating profile.
  • A workspace field (data modify profiles only) — Sets a field in a custom workspace MDC descended from one of the MDCs listed in Workspace MDCs.
  • An object field (data modify profiles only) — Sets a field in a subscription, group, device, user, or an offer object.

Workspace MDCs

Use workspace MDCs to define data modify actions for manipulating fields in a temporary workspace MDC created during rating. To use a workspace MDC in a data modify action, you must first create the custom workspace MDC based on one of the MDCs listed in Custom Workspace MDCs.
Table 2. Custom Workspace MDCs
Workspace Name MDC Lifetime
Message MtxChrgMsgWorkspace The time during which a message is processed by rating, such as when:
  • Rating applies offers and executes pricing components.
  • Charging takes place and balances are impacted.
Component MtxChrgCompWorkspace The time a pricing component or offer is being considered.
Segment MtxChrgSegWorkspace The time a rating segment is being evaluated.
Session Mtx5GChargingDataRequest

Mtx5GChargingDataResponse

Mtx5GMultiUnitInfoData (source only)

Mtx5GMultiUnitUsageData (source only)

Mtx5GSpendingLimitRequest

Mtx5GSpendingLimitResponse

MtxChargingSessionObject (source only)

MtxChargingSessionExtension

MtxDiamGxCCMsg

MtxDiamSySLMsg

MtxPolicySessionExtension

MtxPolicySessionObject (source only)

MtxSessionContextData (source only)

The duration of a call from the moment the charging session is created (on reception of an Initial message) to the moment the charging session is deleted (on reception of a Terminate message).
For 4G diameter policy messages GxCC and SySL, DMAs can read from an MtxPolicySessionObject and any extension and write to the MtxPolicySessionObject extension. For 5G diameter policy message Mtx5GSpendingLimitRequest, DMAs can read from an MtxPolicySessionObject and any extension and write to the MtxPolicySessionObject extension.

For information about creating custom MDCs, see the discussion about extending MATRIXX Engine functionality in MATRIXX Configuration. For more information about workspace MDCs, see the discussion about message workspaces in MATRIXX Pricing and Rating.

Adding Data Modify Actions to Profiles

You add data modify actions to data modify profiles, prerating profiles, and postrating profiles. Allowed Sources and Destinations lists the sources and destinations you can use for the data modify actions in each type of profile.
Table 3. Allowed Sources and Destinations
Profile Allowed Sources Allowed Destinations
Data Modify Profile
  • Message fields
  • Object fields
  • LDAP call out response fields
  • Workspace fields
  • Metadata fields from normalizers, rate tables, and policy tables
  • Constant
  • Field count offset
  • Normalizer calculated value
  • Message fields
  • LDAP call out request fields
  • Workspace fields
  • Object fields, unless the data modify profile is used in a rate table or a policy table
PreRating Profile
  • Constant
  • Message fields
  • Object fields
  • LDAP call out response fields
  • Message fields
  • LDAP call out request fields
PostRating Profile
  • Constant
  • Message fields
  • Message fields

Adding Data Modify Actions to Decision Tables

For an object's decision table (for example, decision tables configured for usage quota objects), DMAs are supported by the Charging Server. However, assigning a DMA to the decision table using My MATRIXX is not supported for all objects. DMA Decision Table Support lists whether you can add a DMA to the object's decision table using My MATRIXX.
Table 4. DMA Decision Table Support
Supported Not Supported
  • Price Components (only tables where DMAs are allowed)
  • PostRating
  • PreRating
  • Status Life Cycles (MtxStatusActionUpdatedField Status Transition Action)
  • Policy Components
    • Spending Limit Policy Components
    • Session Management Policy Components
  • Aggregation Selectors
  • Balance State Updates
  • Filters
  • Final Unit Indications
  • General Ledger Info
    • GL Transaction Types
    • GL Account Selectors
    • GL Transaction Profile Selectors
  • Offer Owner State Update Components
  • Offer Priority Generators
  • Rollovers
  • SH Repository Data
  • Sponsorships
  • Tax Selectors
  • Usage Quotas
  • Usage Triggers
For more information about the objects that support DMAs in decision tables, see the discussion about the individual objects.