Selective Update Examples

The following examples demonstrate selective update configuration values set when running the system configuration script create_config.py.

The examples below generally specify the MtxDiamRoMsg container. However, if an MDC exists that is based upon an MDC used in the diameter_dictionary_base.xml file, you have the option of specifying the custom MDC instead.

If an MDC field is greater than 1, set it to 1

In this example, if a field value is greater than 1, it is set to 1.
Do you want to define any selective-updates on the Diameter Gateway's output interface (y/n)?y
SelectiveUpdate:DiameterGateway:Output:What are the element IDs? 1001
SelectiveUpdate:DiameterGateway:Output:Element 1001:
Enter an optional description of what this element is doing?
No list:If ExternalServiceType is > 1, then set it to 1.
SelectiveUpdate:DiameterGateway:Output:Element 1001:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Output:Element 1001:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Output:Element 1001:SelectionKey 1:What method do you want to perform?greater
SelectiveUpdate:DiameterGateway:Output:Element 1001:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Output:Element 1001:SelectionKey 1:What is the list's name?
SelectiveUpdate:DiameterGateway:Output:Element 1001:SelectionKey 1:What is the field's name?main:ExternalServiceType
SelectiveUpdate:DiameterGateway:Output:Element 1001:SelectionKey 1:What is the field value?1
SelectiveUpdate:DiameterGateway:Output:Element 1001:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:DiameterGateway:Output:Element 1001:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Output:Element 1001:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Output:Element 1001:Operation 1:SetField:What is the destination field's name?main:ExternalServiceType
SelectiveUpdate:DiameterGateway:Output:Element 1001:Operation 1:SetField:What is the new value?1

If an MDC field in a list is greater than 1, set it to 1

In this example, if a field in a list is greater than 1, it is set to 1.
Do you want to define any selective-updates on the Diameter Gateway's output interface (y/n)?y
SelectiveUpdate:DiameterGateway:Output:What are the element IDs? 1002  
SelectiveUpdate:DiameterGateway:Output:Element 1002:
SelectiveUpdate:DiameterGateway:Output:Element 1002:
Enter an optional description of what this element is doing?
Single list:If ServiceId is > 1, then set it to 1.
SelectiveUpdate:DiameterGateway:Output:Element 1002:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Output:Element 1002:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Output:Element 1002:SelectionKey 1:What method do you want to perform?greater
SelectiveUpdate:DiameterGateway:Output:Element 1002:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Output:Element 1002:SelectionKey 1:What is the list's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Output:Element 1002:SelectionKey 1:What is the field's name?ServiceId
SelectiveUpdate:DiameterGateway:Output:Element 1002:SelectionKey 1:What is the field value?1
SelectiveUpdate:DiameterGateway:Output:Element 1002:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:DiameterGateway:Output:Element 1002:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Output:Element 1002:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Output:Element 1002:Operation 1:SetField:What is the destination field's name?selected:ServiceId
SelectiveUpdate:DiameterGateway:Output:Element 1002:Operation 1:SetField:What is the new value?1

If an MDC field in an element in a list is greater than 1, set it to 1

In this example, if a list contains a field in an element that is greater than 1, the field value is set to 1.
Do you want to define any selective-updates on the Diameter Gateway's output interface (y/n)?y
SelectiveUpdate:DiameterGateway:Output:What are the element IDs? 1003
SelectiveUpdate:DiameterGateway:Output:Element 1003:
Enter an optional description of what this element is doing?
Multiple lists:If ActualDurationQuantity is > 1, then set it to 1.
SelectiveUpdate:DiameterGateway:Output:Element 1003:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Output:Element 1003:What are the selection key IDs?2
SelectiveUpdate:DiameterGateway:Output:Element 1003:SelectionKey 2:What method do you want to perform?all
SelectiveUpdate:DiameterGateway:Output:Element 1003:SelectionKey 2:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Output:Element 1003:SelectionKey 2:What is the list's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Output:Element 1003:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Output:Element 1003:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Output:Element 1003:Operation 1:SetField:What is the destination field's name?selected:ActualDurationQuantity
SelectiveUpdate:DiameterGateway:Output:Element 1003:Operation 1:SetField:What is the new value?1

If a field in a list does not exist, copy another field from the top level to it

In this example, if a list does not contain the ServiceId field, the ExternalServiceType field is copied to the list and named ServiceId.
Do you want to define any selective-updates on the Diameter Gateway's output interface (y/n)?y
SelectiveUpdate:DiameterGateway:Output:What are the element IDs? 1004 
SelectiveUpdate:DiameterGateway:Output:Element 1004:
Enter an optional description of what this element is doing?
If MutiServiceList->ServiceId is not present, copy ExternalServiceType to it.
SelectiveUpdate:DiameterGateway:Output:Element 1004:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Output:Element 1004:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Output:Element 1004:SelectionKey 1:What method do you want to perform?not_present
SelectiveUpdate:DiameterGateway:Output:Element 1004:SelectionKey 1:What is the list's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Output:Element 1004:SelectionKey 1:What is the field's name?ServiceId
SelectiveUpdate:DiameterGateway:Output:Element 1004:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Output:Element 1004:Operation 1:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Output:Element 1004:Operation 1:CopyField:What is the destination field's name?selected:ServiceId
SelectiveUpdate:DiameterGateway:Output:Element 1004:Operation 1:CopyField:What is the source field's name?main:ExternalServiceType

If a field in a list in a list is 0, delete the element that the field is in

In this example, if the ActualDurationQuantity field in the UsedQuantityList element is zero, the element is deleted.

Do you want to define any selective-updates on the Diameter Gateway's output interface (y/n)?y
SelectiveUpdate:DiameterGateway:Output:What are the element IDs? 1005
SelectiveUpdate:DiameterGateway:Output:Element 1005:
Enter an optional description of what this element is doing?
If ActualDurationQuantity is zero in a UsedQuantityList element, delete the element.
SelectiveUpdate:DiameterGateway:Output:Element 1005:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Output:Element 1005:What are the selection key IDs?1;2
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 1:What is the list's name?main:MutliServiceList
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 2:What method do you want to perform?equal
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 2:What action do you want to take on a match?delete
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 2:What is the list's name?selected:UsedQuantityList
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 2:What is the field's name?ActualDurationQuantity
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 2:What is the field value?0
SelectiveUpdate:DiameterGateway:Output:Element 1005:SelectionKey 2:What is the field mask in hex?
SelectiveUpdate:DiameterGateway:Output:Element 1005:How many operations do you want to enter?0

Replace one instance of 61 in a string with 04

For example, 12461789 would become 12404789. Only one 61 is replaced.

SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:What operation do you want to perform?modify_field SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What is the field's name?selected:BillingInfo SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What is the matching string?(.+)61(.+) SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What is the replacing string?${1}04${2} SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What options do you want to use?match_default

Replace all instances of 61 in a string with 04

For example, 0161456102 becomes 01041450402.

SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What is the field's name?selected:BillingInfo
SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What is the matching string?61
SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What is the replacing string?04
SelectiveUpdate:DiameterGateway:Input:Element 1011:Operation 1:ModifyField:What options do you want to use?match_default

Modify field values

In this example, if a string starts with 010, change it to 10. For example, the country code in the CallingStationId, 010746123461, is changed to 10 (10746123461).

SelectiveUpdate:DiameterGateway:Input:Element 1007:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Input:Element 1007:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1007:Operation 1:ModifyField:What is the field's name?main:CallingStationId
SelectiveUpdate:DiameterGateway:Input:Element 1007:Operation 1:ModifyField:What is the matching string?^010
SelectiveUpdate:DiameterGateway:Input:Element 1007:Operation 1:ModifyField:What is the replacing string?10
SelectiveUpdate:DiameterGateway:Input:Element 1007:Operation 1:ModifyField:What options do you want to use?match_default

Delete the first 4 characters from a string


SelectiveUpdate:DiameterGateway:Input:Element 2052:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 2052:Operation 1:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.ChargingRuleBaseName
SelectiveUpdate:DiameterGateway:Input:Element 2052:Operation 1:ModifyField:What is the matching string?^....
SelectiveUpdate:DiameterGateway:Input:Element 2052:Operation 1:ModifyField:What is the replacing string?
SelectiveUpdate:DiameterGateway:Input:Element 2052:Operation 1:ModifyField:What options do you want to use?match_default

Delete everything in a string before the first digit


SelectiveUpdate:DiameterGateway:Input:Element 2053:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 2053:Operation 1:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.ChargingRuleBaseName
SelectiveUpdate:DiameterGateway:Input:Element 2053:Operation 1:ModifyField:What is the matching string?^\D*
SelectiveUpdate:DiameterGateway:Input:Element 2053:Operation 1:ModifyField:What is the replacing string?
SelectiveUpdate:DiameterGateway:Input:Element 2053:Operation 1:ModifyField:What options do you want to use?match_default

Escape a metacharacter

In this example, if the CalledStationId starts with the metacharacter "+", it is removed.

SelectiveUpdate:DiameterGateway:Input:Element 1008:Enter an optional description of what this element is doing?
If CalledStationId starts with a +, remove it.
SelectiveUpdate:DiameterGateway:Input:Element 1008:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 1008:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 1008:SelectionKey 1:What method do you want to perform?is_present
SelectiveUpdate:DiameterGateway:Input:Element 1008:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Input:Element 1008:SelectionKey 1:What is the list's name?
SelectiveUpdate:DiameterGateway:Input:Element 1008:SelectionKey 1:What is the field's name?main:CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 1008:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Input:Element 1008:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1008:Operation 1:ModifyField:What is the field's name?main:CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 1008:Operation 1:ModifyField:What is the matching string?^\+
SelectiveUpdate:DiameterGateway:Input:Element 1008:Operation 1:ModifyField:What is the replacing string?
SelectiveUpdate:DiameterGateway:Input:Element 1008:Operation 1:ModifyField:What options do you want to use?match_default

Add an Element to UsedQuantityList

In this example, an element is added to UsedQuantityList.

SelectiveUpdate:DiameterGateway:Input:Element 2103:Enter an optional description of what this element is doing?Add a UsedQuantityList element
SelectiveUpdate:DiameterGateway:Input:Element 2103:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 2103:What are the selection key IDs?1;2
SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 1:What is the list's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 2:What method do you want to perform?add_if_not_found
SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 2:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 2:What is the list's name?selected:UsedQuantityList

# Add a check that will be "not found". Look for a TariffChangeUsage of 9.

SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 2:What is the field's name?TariffChangeUsage
SelectiveUpdate:DiameterGateway:Input:Element 2103:SelectionKey 2:What is the field value?9
SelectiveUpdate:DiameterGateway:Input:Element 2103:How many operations do you want to enter?2
SelectiveUpdate:DiameterGateway:Input:Element 2103:Operation 1:What operation do you want to perform?set_field

# First change TariffChangeUsage to a valid value. It was added with a value of 9 by the add_if_not_found.

SelectiveUpdate:DiameterGateway:Input:Element 2103:Operation 1:SetField:What is the destination field's name?selected:TariffChangeUsage

# UNIT_BEFORE_TARIFF_CHANGE 0

SelectiveUpdate:DiameterGateway:Input:Element 2103:Operation 1:SetField:What is the new value?0

# Set this element's fields to the desired values.

SelectiveUpdate:DiameterGateway:Input:Element 2103:Operation 2:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Input:Element 2103:Operation 2:SetField:What is the destination field's name?selected:Quantity
SelectiveUpdate:DiameterGateway:Input:Element 2103:Operation 2:SetField:What is the new value?400

Edit Data in ServiceInfo.DiamPsInfo.TgppSubscriberLocationInfo

If the string is a 15 byte field, truncate the last 7 bytes so that it is an 8 byte field. Then, remove all non-digits from the start of a string.

SelectiveUpdate:DiameterGateway:Input:Element 1300:Enter an optional description of what this element is doing?Fix bad ULI data in ServiceInfo.DiamPsInfo.TgppSubscriberLocationInfo. For example, change from '001300142cf4f6a21300142cf465ff' to '001300142cf4f6a2'
SelectiveUpdate:DiameterGateway:Input:Element 1300:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 1300:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 1300:SelectionKey 1:What method do you want to perform?equal
SelectiveUpdate:DiameterGateway:Input:Element 1300:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Input:Element 1300:SelectionKey 1:What is the field's name?main:ServiceInfo.DiamPsInfo.TgppSubscriberLocationInfo
SelectiveUpdate:DiameterGateway:Input:Element 1300:SelectionKey 1:What is the field value?00
SelectiveUpdate:DiameterGateway:Input:Element 1300:SelectionKey 1:What is the field mask in hex?00
SelectiveUpdate:DiameterGateway:Input:Element 1300:How many operations do you want to enter?2
SelectiveUpdate:DiameterGateway:Input:Element 1300:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1300:Operation 1:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.TgppSubscriberLocationInfo
SelectiveUpdate:DiameterGateway:Input:Element 1300:Operation 1:ModifyField:What is the matching string?(^........).......$
SelectiveUpdate:DiameterGateway:Input:Element 1300:Operation 1:ModifyField:What is the replacing string?\1
SelectiveUpdate:DiameterGateway:Input:Element 1300:Operation 1:ModifyField:What options do you want to use?match_default
#
# Now decode the ULI because it was not decoded when the data was too long.
SelectiveUpdate:DiameterGateway:Input:Element 1300:Operation 2:What operation do you want to perform?decode_3gpp_user_location_info
SelectiveUpdate:DiameterGateway:Input:Element 1300:Operation 2:Decode3gppUserLocationInfo:What is the field's name?main:ServiceInfo.DiamPsInfo.TgppSubscriberLocationInfo
#
SelectiveUpdate:DiameterGateway:Input:Element 1301:Enter an optional description of what this element is doing?Remove all non-digits from the start of a string.
SelectiveUpdate:DiameterGateway:Input:Element 1301:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 1301:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 1301:SelectionKey 1:What method do you want to perform?is_present
SelectiveUpdate:DiameterGateway:Input:Element 1301:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Input:Element 1301:SelectionKey 1:What is the field's name?main:ServiceInfo.DiamPsInfo.CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 1301:How many operations do you want to enter?1
#
SelectiveUpdate:DiameterGateway:Input:Element 1301:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1301:Operation 1:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 1301:Operation 1:ModifyField:What is the matching string?[^0-9]*(.*)
SelectiveUpdate:DiameterGateway:Input:Element 1301:Operation 1:ModifyField:What is the replacing string?\1
SelectiveUpdate:DiameterGateway:Input:Element 1301:Operation 1:ModifyField:What options do you want to use?match_default

Separate a string formatted with multiple parts

In this example, the selective update separates a string with the following format.

prefix, country code, routing code, number, extra
#
SelectiveUpdate:DiameterGateway:Input:Element 1302:Enter an optional description of what this element is doing?Separate string of the format prefix, country code, routing code, number, extra.
# For example: 00 49 D065 176 1234567890123.  This is more than 15 digits.  The country code is 1-3 digits, so cannot start at the beginning to strip things.
# There is however a pattern to it.  We need to know if a selective update can be used to split a string into separate MDC fields as follows:
# 1) The first non-numeric digit is part of the routing code.  That's always 4 characters.
# 2) We'd like to separate the above into everything before the first non-numeric, then the four characters including the numeric, and then everything else.
#    a. The prefix is always 00, so we can split that easy enough to get the country code
#    b. We can use prefix matching so we do not care about the extra characters
SelectiveUpdate:DiameterGateway:Input:Element 1302:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 1302:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 1302:SelectionKey 1:What method do you want to perform?is_present
SelectiveUpdate:DiameterGateway:Input:Element 1302:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Input:Element 1302:SelectionKey 1:What is the field's name?main:CallingStationId
SelectiveUpdate:DiameterGateway:Input:Element 1302:How many operations do you want to enter?6
#
# Copy to MmeName, MmeRealm, PhysicalAccessId
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 1:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 1:CopyField:What is the destination field's name?main:ServiceInfo.DiamPsInfo.MmeName
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 1:CopyField:What is the source field's name?main:CallingStationId
#
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 2:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 2:CopyField:What is the destination field's name?main:ServiceInfo.DiamPsInfo.MmeRealm
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 2:CopyField:What is the source field's name?main:CallingStationId
#
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 3:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 3:CopyField:What is the destination field's name?main:ServiceInfo.DiamPsInfo.PhysicalAccessId
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 3:CopyField:What is the source field's name?main:CallingStationId
#
# Have MmeName contain everything up to the routing code
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 4:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 4:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.MmeName
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 4:ModifyField:What is the matching string?([0-9 ]*) ([A-Z][0-9]*) (.*)
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 4:ModifyField:What is the replacing string?\1
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 4:ModifyField:What options do you want to use?match_default
#
# Have MmeRealm contain everything the routing code
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 5:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 5:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.MmeRealm
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 5:ModifyField:What is the matching string?([0-9 ]*) ([A-Z][0-9]*) (.*)
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 5:ModifyField:What is the replacing string?\2
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 5:ModifyField:What options do you want to use?match_default
#
# Have PhysicalAccessId contain everything after the routing code
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 6:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 6:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.PhysicalAccessId
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 6:ModifyField:What is the matching string?([0-9 ]*) ([A-Z][0-9]*) (.*)
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 6:ModifyField:What is the replacing string?\3
SelectiveUpdate:DiameterGateway:Input:Element 1302:Operation 6:ModifyField:What options do you want to use?match_default
This configuration provides the following result.

>66 MmeName               STRING    0 0 0 1 (size=6, data=00 49)
>67 MmeRealm              STRING    0 0 0 1 (size=5, data=D065)
>75 PhysicalAccessId      STRING    0 0 0 1 (size=18, data=176 1234567890123)

Extract a string from a delimited value

In this example, the ServiceParameterInfoList, which is a list of MtxDiamServiceParameterInfoData structs which contain two fields: ServiceParameterType and ServiceParameterValue, is parsed. The selective update looks for the entries where ServiceParameterType is 2. If found, it removes all leading numeric digits up to and including a colon (":") in the ServiceParameterValue. For example, if the ServiceParameterValue has a value of "123:456", it will be modified to contain "456".
SelectiveUpdate:DiameterGateway:Input:Element 9001:Enter an optional description of what this element is doing?Use modify_field on a blob in the ServiceParameterInfoList
SelectiveUpdate:DiameterGateway:Input:Element 9001:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 9001:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 9001:SelectionKey 1:What method do you want to perform?equal
SelectiveUpdate:DiameterGateway:Input:Element 9001:SelectionKey 1:What is the sequence's name?main:ServiceParameterInfoList
SelectiveUpdate:DiameterGateway:Input:Element 9001:SelectionKey 1:What is the field's name?ServiceParameterType
SelectiveUpdate:DiameterGateway:Input:Element 9001:SelectionKey 1:What is the field value?2
SelectiveUpdate:DiameterGateway:Input:Element 9001:SelectionKey 1:What is the field mask in hex?ffffffff
SelectiveUpdate:DiameterGateway:Input:Element 9001:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Input:Element 9001:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Input:Element 9001:Operation 1:What operation do you want to perform?modify_field
SelectiveUpdate:DiameterGateway:Input:Element 9001:Operation 1:ModifyField:What is the field's name?selected:ServiceParameterValue
SelectiveUpdate:DiameterGateway:Input:Element 9001:Operation 1:ModifyField:What is the matching string?[0-9]+:(.*)
SelectiveUpdate:DiameterGateway:Input:Element 9001:Operation 1:ModifyField:What is the replacing string?\1
SelectiveUpdate:DiameterGateway:Input:Element 9001:Operation 1:ModifyField:What options do you want to use?match_default



Reference a custom field in a custom MultiServiceList MDC

In this example, the Holding-Time AVP is set by copying the source field QuotaHoldingTime to a custom MultiServiceList MDC.
SelectiveUpdate:DiameterGateway:Output:Element 3007:Enter an optional description of what this element is doing?Set Holding-Time AVP
SelectiveUpdate:DiameterGateway:Output:Element 3007:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Output:Element 3007:What are the selection key IDs?1;2
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 1:What method do you want to perform?equal
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 1:What is the field's name?main:ServiceContextId
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 1:What is the field [email protected]
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 2:What method do you want to perform?all
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 2:What is the sequence's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Output:Element 3007:SelectionKey 2:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Output:Element 3007:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Output:Element 3007:Operation 1:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Output:Element 3007:Operation 1:CopyField:What is the destination field's name?selected:MtxMultiServiceData:HoldingTime
SelectiveUpdate:DiameterGateway:Output:Element 3007:Operation 1:CopyField:What is the source field's name?selected:QuotaHoldingTime

Identify an MDC field based on byte size and update it

In this example, if a string field (CalledStationId) is less than 4 bytes, add a prefix to it. This update requires two elements. This example uses a field named TempString in MyMtxDiamRoMsg that can be any unused string field. The process is:
  1. Copy CalledStationId to TempString
  2. Delete up to the first 4 characters of TempString and add a prefix of ABC.
  3. Check if TempString = ABC.
  4. Add the prefix 001234 to CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 2080:Enter an optional description of what this element is doing?Test if a CalledStationId is less than 4 bytes.
SelectiveUpdate:DiameterGateway:Input:Element 2080:What is the container's name?MyMtxDiamRoMsg 
SelectiveUpdate:DiameterGateway:Input:Element 2080:What are the selection key IDs?1 
SelectiveUpdate:DiameterGateway:Input:Element 2080:SelectionKey 1:What method do you want to perform?is_present 
SelectiveUpdate:DiameterGateway:Input:Element 2080:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Input:Element 2080:SelectionKey 1:What is the field's name?main:ServiceInfo.DiamPsInfo.CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 2080:How many operations do you want to enter?2 
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 1:What operation do you want to perform?copy_field 
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 1:CopyField:What is the destination field's name?main:TempString 
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 1:CopyField:What is the source field's name?main:ServiceInfo.DiamPsInfo.CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 2:What operation do you want to perform?modify_field 
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 2:ModifyField:What is the field's name?main:TempString 
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 2:ModifyField:What is the matching string?^.{1,4}(.*) 
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 2:ModifyField:What is the replacing string?ABC${1} 
SelectiveUpdate:DiameterGateway:Input:Element 2080:Operation 2:ModifyField:What options do you want to use?match_default # 
SelectiveUpdate:DiameterGateway:Input:Element 2081:Enter an optional description of what this element is doing?Test if a TempString is "ABC" then add 001234 to CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 2081:What is the container's name?MyMtxDiamRoMsg 
SelectiveUpdate:DiameterGateway:Input:Element 2081:What are the selection key IDs?1 
SelectiveUpdate:DiameterGateway:Input:Element 2081:SelectionKey 1:What method do you want to perform?equal 
SelectiveUpdate:DiameterGateway:Input:Element 2081:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Input:Element 2081:SelectionKey 1:What is the field's name?main:TempString 
SelectiveUpdate:DiameterGateway:Input:Element 2081:SelectionKey 1:What is the field value?ABC 
SelectiveUpdate:DiameterGateway:Input:Element 2081:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:DiameterGateway:Input:Element 2081:How many operations do you want to enter?1 
SelectiveUpdate:DiameterGateway:Input:Element 2081:Operation 1:What operation do you want to perform?modify_field 
SelectiveUpdate:DiameterGateway:Input:Element 2081:Operation 1:ModifyField:What is the field's name?main:ServiceInfo.DiamPsInfo.CalledStationId
SelectiveUpdate:DiameterGateway:Input:Element 2081:Operation 1:ModifyField:What is the matching string?(^.*) 
SelectiveUpdate:DiameterGateway:Input:Element 2081:Operation 1:ModifyField:What is the replacing string?001234${1} 
SelectiveUpdate:DiameterGateway:Input:Element 2081:Operation 1:ModifyField:What options do you want to use?match_default

Identify a field with a regular expression

In this example, a regex search is used to select a field and replace the field value with a new value. Note that the regex search is case sensitive. In this example, the regex search would match the values "Str", "StrA", and "aStr", but not "str", "inputstring", or "astr". If the main:FieldString has a value of "inputString", the regex search on "Str" will identify the main:FieldString and perform the operations.
SelectiveUpdate:DiameterGateway:Input:Element 1100150:Enter an optional description of what this element is doing?regex_search
SelectiveUpdate:DiameterGateway:Input:Element 1100150:What is the container's name?TestFieldType
SelectiveUpdate:DiameterGateway:Input:Element 1100150:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 1100150:SelectionKey 1:What method do you want to perform?regex_search
SelectiveUpdate:DiameterGateway:Input:Element 1100150:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Input:Element 1100150:SelectionKey 1:What is the field's name?main:FieldString
SelectiveUpdate:DiameterGateway:Input:Element 1100150:SelectionKey 1:What is the field value?Str
SelectiveUpdate:DiameterGateway:Input:Element 1100150:SelectionKey 1:What regular expression options do you want to use?match_default
SelectiveUpdate:DiameterGateway:Input:Element 1100150:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Input:Element 1100150:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Input:Element 1100150:Operation 1:SetField:What is the destination field's name?main:FieldUInt16
SelectiveUpdate:DiameterGateway:Input:Element 1100150:Operation 1:SetField:What is the new value?1100150

Copy a decimal field to fields with different data types

In this example, a decimal data type field is copied to fields with the following data types:
  • DECIMAL
  • INT8
  • INT16
  • INT32
  • INT64
  • UINT8
  • UINT16
  • UINT32
  • UINT64
SelectiveUpdate:DiameterGateway:Input:Element 2040060:How manyoperations do you want to enter?8
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation1:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation1:CopyField:What is the destination field's name?main:FieldInt8
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation1:CopyField:What is the source field's name?main:FieldDecimal
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation2:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation2:CopyField:What is the destination field's name?main:FieldInt16
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation2:CopyField:What is the source field's name?main:FieldDecimal
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation3:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation3:CopyField:What is the destination field's name?main:FieldInt32
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation3:CopyField:What is the source field's name?main:FieldDecimal
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation4:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation4:CopyField:What is the destination field's name?main:FieldInt64
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation4:CopyField:What is the source field's name?main:FieldDecimal
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation5:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation5:CopyField:What is the destination field's name?main:FieldUInt8
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation5:CopyField:What is the source field's name?main:FieldDecimal
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation6:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation6:CopyField:What is the destination field's name?main:FieldUInt16
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation6:CopyField:What is the source field's name?main:FieldDecimal
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation7:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation7:CopyField:What is the destination field's name?main:FieldUInt32
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation7:CopyField:What is the source field's name?main:FieldDecimal
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation8:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation8:CopyField:What is the destination field's name?main:FieldUInt64
SelectiveUpdate:DiameterGateway:Input:Element 2040060:Operation8:CopyField:What is the source field's name?main:FieldDecimal

Specify the type of MDC with "add_if_not_found" method

This example assumes the following MDCs and fields have been defined:
  • TestListOfFieldType
    • FieldKnownStructList (list of structs named TestSimpleData)
  • TestSimpleData
    • Type (unsigned int32)
    • Amount (signed int64)
  • TestDeviceData (based upon TestSimpleData).
    • DeviceType (unsigned int32)
    • DeviceId (unsigned int64)
    • DeviceArray (array of structs named TestSimpleData)
  • TestSubContainer2 (based upon TestDeviceData).
    • Type (unsigned int32)
    • amount (signed int64)

This selective update tests if the TestListOfFieldType FieldKnownStructList has an element with TestSimpleData::Type == 3. If it does not, then a new MDC, TestSubContainer2, is appended to the list. This new element is initialized by different operations so that it has a Type of 3 and an Amount of 100.

Because the new element is added to a list of named structs, you can add any MDC that is based upon TestSimpleData. Because there is more than one MDC available (TestDeviceData and TestSubContainer2), create_config.py asks the question:
What MDC do you want to use for the new element?

In this example, "TestSubContainer2" is the MDC and that is the type that is added. After it is added, the operations set the fields in TestSubContainer2.

SelectiveUpdate:DiameterGateway:Input:Element 1033000:Enter an optional description of what this element is doing?Basic add_if_not_found but specifying the new element's MDC.
SelectiveUpdate:DiameterGateway:Input:Element 1033000:What is the container's name?TestListOfFieldType
SelectiveUpdate:DiameterGateway:Input:Element 1033000:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 1033000:SelectionKey 1:What method do you want to perform?add_if_not_found
SelectiveUpdate:DiameterGateway:Input:Element 1033000:SelectionKey 1:What is the sequence's name?main:FieldKnownStructList
SelectiveUpdate:DiameterGateway:Input:Element 1033000:SelectionKey 1:What is the field's name?Type
SelectiveUpdate:DiameterGateway:Input:Element 1033000:SelectionKey 1:What is the field value?3
SelectiveUpdate:DiameterGateway:Input:Element 1033000:SelectionKey 1:What MDC do you want to use for the new element?TestSubContainer2
SelectiveUpdate:DiameterGateway:Input:Element 1033000:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Input:Element 1033000:How many operations do you want to enter?2
SelectiveUpdate:DiameterGateway:Input:Element 1033000:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Input:Element 1033000:Operation 1:SetField:What is the destination field's name?selected:Type
SelectiveUpdate:DiameterGateway:Input:Element 1033000:Operation 1:SetField:What is the new value?3
SelectiveUpdate:DiameterGateway:Input:Element 1033000:Operation 2:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Input:Element 1033000:Operation 2:SetField:What is the destination field's name?selected:Amount
SelectiveUpdate:DiameterGateway:Input:Element 1033000:Operation 2:SetField:What is the new value?100

Pre-pend the callPartyAddr with CC from mscAddress when AddressType is Unknown

In this example, if the NoA (TON) is unknown and the mscAddress does not start with 965 (Kuwait), then copy either "1", or "20, or "21.", or "22.", and so forth.

SelectiveUpdate:ChargingServer:CamelToRating:What are the element IDs?9999
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Enter an optional description of what this element is doing?Pre-pend callPartyAddr with CC from mscAddress when AddressType is Unknown
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:What is the container's name?MtxTcapMsg
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:What are the selection key IDs?1;2
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 1:What method do you want to perform?equal
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 1:What is the field's name?main:RatingMsg.ServiceInfo.VcsInfo.CalledIsupAddressType
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 1:What is the field value?2
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 2:What method do you want to perform?not_equal
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 2:What is the sequence's name?
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 2:What is the field's name?main:RatingMsg.ServiceInfo.VcsInfo.MscAddress
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 2:What is the field value?965
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:SelectionKey 2:What is the field mask in hex?FFFFFF
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:How many operations do you want to enter?4
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 1:What operation do you want to perform?copy_field
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 1:CopyField:What is the destination field's name?main:RatingMsg.MyDiamRoMsg:iddCCNumber
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 1:CopyField:What is the source field's name?main:RatingMsg.MyDiamRoMsg:mscAddress
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 2:What operation do you want to perform?modify_field
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 2:ModifyField:What is the field's name?main:RatingMsg.MyDiamRoMsg:iddCCNumber
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 2:ModifyField:What is the matching string?(1|2[078]|2[^078].|3[578].|3[^578]|42.|4[^2]|5[09].|5[^09]|6[789]|6[^789].|7|8[0578].|8[^0578]|9[679].|9[^679]).*
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 2:ModifyField:What is the replacing string?\1
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 2:ModifyField:What options do you want to use?match_default
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 3:What operation do you want to perform?concat_field
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 3:ConcatField:What is the destination field's name?main:RatingMsg.MyDiamRoMsg:iddCCNumber
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 3:ConcatField:What is the source field's name?main:RatingMsg.CalledStationId
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 4:What operation do you want to perform?modify_field
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 4:ModifyField:What is the field's name?main:RatingMsg.CalledStationId
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 4:ModifyField:What is the matching string?^
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 4:ModifyField:What is the replacing string?00
SelectiveUpdate:ChargingServer:CamelToRating:Element 9999:Operation 4:ModifyField:What options do you want to use?match_default

Onboarding: Create Subscriber and Device (Multi-Request)

If a multi-request is received that contains a create command, then this is an onboarding scenario. Set a bit in the message and then use that bit to set other fields. Clear the bit at the end.

In this part of the selective update, set the bit.

SelectiveUpdate:MdcGateway:Input:Element 1:Enter an optional description of what this element is doing?Set field if onboarding 
SelectiveUpdate:MdcGateway:Input:Element 1:What is the container's name?MtxOpMsg 
SelectiveUpdate:MdcGateway:Input:Element 1:What are the selection key IDs?1;2 
SelectiveUpdate:MdcGateway:Input:Element 1:SelectionKey 1:What method do you want to perform?all 
SelectiveUpdate:MdcGateway:Input:Element 1:SelectionKey 1:What action do you want to take on a match?save 
SelectiveUpdate:MdcGateway:Input:Element 1:SelectionKey 1:What is the sequence's name?main:Request.MtxRequestMulti:RequestList 
SelectiveUpdate:MdcGateway:Input:Element 1:SelectionKey 2:What method do you want to perform?is_present 
SelectiveUpdate:MdcGateway:Input:Element 1:SelectionKey 2:What action do you want to take on a match? 
SelectiveUpdate:MdcGateway:Input:Element 1:SelectionKey 2:What is the sequence's name? 
SelectiveUpdate:MdcGateway:Input:Element 1:SelectionKey 2:What is the field's name?saved:MtxRequestSubscriberCreate:ExternalId 
SelectiveUpdate:MdcGateway:Input:Element 1:How many operations do you want to enter?1 
SelectiveUpdate:MdcGateway:Input:Element 1:Operation 1:What operation do you want to perform?set_field 
SelectiveUpdate:MdcGateway:Input:Element 1:Operation 1:SetField:What is the destination field's name?main:TaskMsgRdmId 
SelectiveUpdate:MdcGateway:Input:Element 1:Operation 1:SetField:What is the new value?1 
In this part of this selective update, if onboarding, set the fields.
SelectiveUpdate:MdcGateway:Input:Element 2:Enter an optional description of what this element is doing?If onboarding base plan then set preactive field 
SelectiveUpdate:MdcGateway:Input:Element 2:What is the container's name?MtxOpMsg 
SelectiveUpdate:MdcGateway:Input:Element 2:What are the selection key IDs?1;2;3;4 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 1:What method do you want to perform?equal 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 1:What action do you want to take on a match? 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 1:What is the sequence's name? 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 1:What is the field's name?main:TaskMsgRdmId 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 1:What is the field value?1 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 1:What is the field mask in hex? 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 2:What method do you want to perform?all 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 2:What action do you want to take on a match?save 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 2:What is the sequence's name?main:Request.MtxRequestMulti:RequestList 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 3:What method do you want to perform?all 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 3:What action do you want to take on a match?select 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 3:What is the sequence's name?saved:MtxRequestSubscriberPurchaseOffer:OfferRequestArray 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 4:What method do you want to perform?equal 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 4:What action do you want to take on a match? 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 4:What is the sequence's name? 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 4:What is the field's name?selected:ExternalId 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 4:What is the field value?BasePlan 
SelectiveUpdate:MdcGateway:Input:Element 2:SelectionKey 4:What is the field mask in hex?ffffffffffffffff 
SelectiveUpdate:MdcGateway:Input:Element 2:How many operations do you want to enter?1 
SelectiveUpdate:MdcGateway:Input:Element 2:Operation 1:What operation do you want to perform?set_field 
SelectiveUpdate:MdcGateway:Input:Element 2:Operation 1:SetField:What is the destination field's name?selected:PreActiveState 
SelectiveUpdate:MdcGateway:Input:Element 2:Operation 1:SetField:What is the new value?1

In this part of this selective update, set onboarding items are cleared.

SelectiveUpdate:MdcGateway:Input:Element 5999:Enter an optional description of what this element is doing?Set field if onboarding 
SelectiveUpdate:MdcGateway:Input:Element 5999:What is the container's name?MtxOpMsg 
SelectiveUpdate:MdcGateway:Input:Element 5999:What are the selection key IDs?1;2 
SelectiveUpdate:MdcGateway:Input:Element 5999:SelectionKey 1:What method do you want to perform?all 
SelectiveUpdate:MdcGateway:Input:Element 5999:SelectionKey 1:What action do you want to take on a match?save 
SelectiveUpdate:MdcGateway:Input:Element 5999:SelectionKey 1:What is the sequence's name?main:Request.MtxRequestMulti:RequestList 
SelectiveUpdate:MdcGateway:Input:Element 5999:SelectionKey 2:What method do you want to perform?is_present 
SelectiveUpdate:MdcGateway:Input:Element 5999:SelectionKey 2:What action do you want to take on a match? 
SelectiveUpdate:MdcGateway:Input:Element 5999:SelectionKey 2:What is the sequence's name? 
SelectiveUpdate:MdcGateway:Input:Element 5999:SelectionKey 2:What is the field's name?saved:MtxRequestSubscriberCreate:ExternalId 
SelectiveUpdate:MdcGateway:Input:Element 5999:How many operations do you want to enter?1 
SelectiveUpdate:MdcGateway:Input:Element 5999:Operation 1:What operation do you want to perform?delete_field 
SelectiveUpdate:MdcGateway:Input:Element 5999:Operation 1:DeleteField:What is the field's name?main:TaskMsgRdmId  

Set a Bit If The Command Is Execute Mode

Take special actions in each offer if in execute mode (the only way to manage pre-active offer AoC queries).

In this part, if there is an AoC, then set a field in the purchase offer to detect and take action on pre-active offers (which do not report recurring charges on AoC). This is a multi-request.

SelectiveUpdate:MdcGateway:Input:Element 51:Enter an optional description of what this element is doing?If AoC then set offer priority
SelectiveUpdate:MdcGateway:Input:Element 51:What is the container's name?MtxOpMsg
SelectiveUpdate:MdcGateway:Input:Element 51:What are the selection key IDs?1;2;3
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 1:What method do you want to perform?equal
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 1:What action do you want to take on a match?
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 1:What is the field's name?main:Request.ExecuteMode
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 1:What is the field value?2
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 2:What method do you want to perform?all
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 2:What action do you want to take on a match?save
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 2:What is the sequence's name?main:Request.MtxRequestMulti:RequestList
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 3:What method do you want to perform?all
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 3:What action do you want to take on a match?select
SelectiveUpdate:MdcGateway:Input:Element 51:SelectionKey 3:What is the sequence's name?saved:MtxRequestSubscriberPurchaseOffer:OfferRequestArray
SelectiveUpdate:MdcGateway:Input:Element 51:How many operations do you want to enter?1
SelectiveUpdate:MdcGateway:Input:Element 51:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:MdcGateway:Input:Element 51:Operation 1:SetField:What is the destination field's name?selected:Attr.OkwPurchasedOfferExtension:Priority
SelectiveUpdate:MdcGateway:Input:Element 51:Operation 1:SetField:What is the new value?12345
This is a non-multi-request example.
SelectiveUpdate:MdcGateway:Input:Element 52:Enter an optional description of what this element is doing?If AoC then set offer priority
SelectiveUpdate:MdcGateway:Input:Element 52:What is the container's name?MtxOpMsg
SelectiveUpdate:MdcGateway:Input:Element 52:What are the selection key IDs?1;3
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 1:What method do you want to perform?equal
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 1:What action do you want to take on a match?
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 1:What is the field's name?main:Request.ExecuteMode
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 1:What is the field value?2
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 3:What method do you want to perform?all
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 3:What action do you want to take on a match?select
SelectiveUpdate:MdcGateway:Input:Element 52:SelectionKey 3:What is the sequence's name?main:Request.MtxRequestSubscriberPurchaseOffer:OfferRequestArray
SelectiveUpdate:MdcGateway:Input:Element 52:How many operations do you want to enter?1
SelectiveUpdate:MdcGateway:Input:Element 52:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:MdcGateway:Input:Element 52:Operation 1:SetField:What is the destination field's name?selected:Attr.OkwPurchasedOfferExtension:Priority
SelectiveUpdate:MdcGateway:Input:Element 52:Operation 1:SetField:What is the new value?12345

Provisioning Request Without Multi-request And Setting Command Fields

This is a base plan, so set PreActiveState and AutoActivation.
SelectiveUpdate:MdcGateway:Input:Element 102:Enter an optional description of what this element is doing?If adding base plan then preactive fields (several)
SelectiveUpdate:MdcGateway:Input:Element 102:What is the container's name?MtxOpMsg
SelectiveUpdate:MdcGateway:Input:Element 102:What are the selection key IDs?3;4
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 3:What method do you want to perform?all
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 3:What action do you want to take on a match?select
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 3:What is the sequence's name?main:Request.MtxRequestSubscriberPurchaseOffer:OfferRequestArray
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 4:What method do you want to perform?equal
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 4:What action do you want to take on a match?
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 4:What is the sequence's name?
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 4:What is the field's name?selected:ExternalId
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 4:What is the field value?BasePlan
SelectiveUpdate:MdcGateway:Input:Element 102:SelectionKey 4:What is the field mask in hex?ffffffffffffffff
SelectiveUpdate:MdcGateway:Input:Element 102:How many operations do you want to enter?3
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 1:SetField:What is the destination field's name?selected:PreActiveState
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 1:SetField:What is the new value?1
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 2:What operation do you want to perform?set_field
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 2:SetField:What is the destination field's name?selected:AutoActivationRelativeOffsetUnit
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 2:SetField:What is the new value?8
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 3:What operation do you want to perform?set_field
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 3:SetField:What is the destination field's name?selected:AutoActivationRelativeOffset
SelectiveUpdate:MdcGateway:Input:Element 102:Operation 3:SetField:What is the new value?1

Copy a Field to Main from Three Levels Deep within an MDC

This example copies the TriggerType and TriggerCategory fields at the MultiUnitUsageArray > UsedUnitContainerArray > TriggerArray level to the "main" TriggerType and TriggerCategory fields respectively using only the select action. You can reuse the same action if you do not need to update anything other than “main” and the last selected item. Note that is only necessary to save if you want to take actions between fields at the "save" level and the selected level.
SelectiveUpdate:ChargingServer:Input:Element 2215:Enter an optional description of what this element is doing?Copy trigger data to custom field
SelectiveUpdate:ChargingServer:Input:Element 2215:What is the container's name?Cust5GMsg
SelectiveUpdate:ChargingServer:Input:Element 2215:What are the selection key IDs?1;2;3
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 1:What is the sequence's name?main:Request.Mtx5GChargingDataRequest:MultiUnitUsageArray
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 2:What method do you want to perform?all
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 2:What action do you want to take on a match?select
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 2:What is the sequence's name?selected:UsedUnitContainerArray
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 3:What method do you want to perform?all
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 3:What action do you want to take on a match?select
SelectiveUpdate:ChargingServer:Input:Element 2215:SelectionKey 3:What is the sequence's name?selected:TriggerArray
SelectiveUpdate:ChargingServer:Input:Element 2215:How many operations do you want to enter?2
SelectiveUpdate:ChargingServer:Input:Element 2215:Operation 1:What operation do you want to perform?copy_field
SelectiveUpdate:ChargingServer:Input:Element 2215:Operation 1:CopyField:What is the destination field's name?main:TriggerCategory
SelectiveUpdate:ChargingServer:Input:Element 2215:Operation 1:CopyField:What is the source field's name?selected:TriggerCategory
SelectiveUpdate:ChargingServer:Input:Element 2215:Operation 2:What operation do you want to perform?copy_field
SelectiveUpdate:ChargingServer:Input:Element 2215:Operation 2:CopyField:What is the destination field's name?main:TriggerType
SelectiveUpdate:ChargingServer:Input:Element 2215:Operation 2:CopyField:What is the source field's name?selected:TriggerType

Delete a Single Element in a List of Scalars

This example deletes the SpecificAction CHARGING_CORRELATION_EXCHANGE (field value 1).
SelectiveUpdate:DiameterGateway:Input:Element 9018:Enter an optional description of what this element is doing?Delete SpecificAction CHARGING_CORRELATION_EXCHANGE
SelectiveUpdate:DiameterGateway:Input:Element 9018:What is the container's name?MtxDiamRxAAMsg
SelectiveUpdate:DiameterGateway:Input:Element 9018:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 9018:SelectionKey 1:What method do you want to perform?equal
SelectiveUpdate:DiameterGateway:Input:Element 9018:SelectionKey 1:What is the sequence's name?main:SpecificActionList
SelectiveUpdate:DiameterGateway:Input:Element 9018:SelectionKey 1:What is the field's name?
SelectiveUpdate:DiameterGateway:Input:Element 9018:SelectionKey 1:What is the field value?1
SelectiveUpdate:DiameterGateway:Input:Element 9018:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:DiameterGateway:Input:Element 9018:SelectionKey 1:What action do you want to take on a match?delete
SelectiveUpdate:DiameterGateway:Input:Element 9018:How many operations do you want to enter?0

Delete a Duplicate MSCC Element

This example will truncate an MSCC by deleting a duplicate MSCC element. There are four parts to this process:
  1. Choose an unused top-level field that is an unsigned integer. In this case CallingTowerId and if it is not present, set it to 0.
  2. For each element in the MultiServiceList, add 1 to CallingTowerId and then copy it to an unused field in the element (ResultDetail). This provides each element with its index (one-relative).
  3. For each element in the MultiServiceList, delete it if ResultDetail > 1.
  4. For each element in the MultiServiceList, delete the temporary field ResultDetail.
Note: This example does not verify that the ServiceId fields are the same. It could be a problem if they are different because all elements except the first would be deleted.
SelectiveUpdate:DiameterGateway:Input:Element 2111:Enter an optional description of what this element is doing?Set CallingTowerId to 0
SelectiveUpdate:DiameterGateway:Input:Element 2111:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 2111:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 2111:SelectionKey 1:What method do you want to perform?not_present
SelectiveUpdate:DiameterGateway:Input:Element 2111:SelectionKey 1:What is the sequence's name?
SelectiveUpdate:DiameterGateway:Input:Element 2111:SelectionKey 1:What is the field's name?main:CallingTowerId
SelectiveUpdate:DiameterGateway:Input:Element 2111:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Input:Element 2111:Operation 1:What operation do you want to perform?set_field
SelectiveUpdate:DiameterGateway:Input:Element 2111:Operation 1:SetField:What is the destination field's name?main:CallingTowerId
SelectiveUpdate:DiameterGateway:Input:Element 2111:Operation 1:SetField:What is the new value?0
#
SelectiveUpdate:DiameterGateway:Input:Element 2112:Enter an optional description of what this element is doing?Set ResultDetail in each element as the element's one-relative index.
SelectiveUpdate:DiameterGateway:Input:Element 2112:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 2112:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 2112:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:DiameterGateway:Input:Element 2112:SelectionKey 1:What is the sequence's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Input:Element 2112:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Input:Element 2112:How many operations do you want to enter?2
SelectiveUpdate:DiameterGateway:Input:Element 2112:Operation 1:What operation do you want to perform?calculate_field
SelectiveUpdate:DiameterGateway:Input:Element 2112:Operation 1:CalculateField:What is the equation?main:CallingTowerId = main:CallingTowerId + 1
SelectiveUpdate:DiameterGateway:Input:Element 2112:Operation 2:What operation do you want to perform?copy_field
SelectiveUpdate:DiameterGateway:Input:Element 2112:Operation 2:CopyField:What is the destination field's name?selected:ResultDetail
SelectiveUpdate:DiameterGateway:Input:Element 2112:Operation 2:CopyField:What is the source field's name?main:CallingTowerId
#
SelectiveUpdate:DiameterGateway:Input:Element 2113:Enter an optional description of what this element is doing?For each element in the MultiServiceList, delete it if ResultDetail > 1
SelectiveUpdate:DiameterGateway:Input:Element 2113:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 2113:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 2113:SelectionKey 1:What method do you want to perform?greater
SelectiveUpdate:DiameterGateway:Input:Element 2113:SelectionKey 1:What is the sequence's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Input:Element 2113:SelectionKey 1:What is the field's name?ResultDetail
SelectiveUpdate:DiameterGateway:Input:Element 2113:SelectionKey 1:What is the field value?1
SelectiveUpdate:DiameterGateway:Input:Element 2113:SelectionKey 1:What is the field mask in hex?
SelectiveUpdate:DiameterGateway:Input:Element 2113:SelectionKey 1:What action do you want to take on a match?delete
SelectiveUpdate:DiameterGateway:Input:Element 2113:How many operations do you want to enter?0
#
SelectiveUpdate:DiameterGateway:Input:Element 2114:Enter an optional description of what this element is doing?Delete the temporary field ResultDetail
SelectiveUpdate:DiameterGateway:Input:Element 2114:What is the container's name?MtxDiamRoMsg
SelectiveUpdate:DiameterGateway:Input:Element 2114:What are the selection key IDs?1
SelectiveUpdate:DiameterGateway:Input:Element 2114:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:DiameterGateway:Input:Element 2114:SelectionKey 1:What is the sequence's name?main:MultiServiceList
SelectiveUpdate:DiameterGateway:Input:Element 2114:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:DiameterGateway:Input:Element 2114:How many operations do you want to enter?1
SelectiveUpdate:DiameterGateway:Input:Element 2114:Operation 1:What operation do you want to perform?delete_field
SelectiveUpdate:DiameterGateway:Input:Element 2114:Operation 1:DeleteField:What is the field's name?selected:ResultDetail