My Oracle Support Banner

Invoice Is Failing For Special Characters In Invoice_data Field (Doc ID 2791772.1)

Last updated on JULY 20, 2021

Applies to:

Oracle Communications Billing and Revenue Management - Version 7.5.0.22.0 and later
Information in this document applies to any platform.

Symptoms


While  getting data from multiple fulfillment systems and some of data which  receive in CDR contains special characters (# < > | / ).
Some of these fields are part of INVOICE_DATA which is stored in /event table. When  running invoicing, it is failing in decoding the INVOICE_DATA.

@INTEGRATE##<|2TRX4000261#ADXAIH#ATTR1#90#Advanced Decisioning Attributes#1619741400#OBA-0000861033_AGG52452#1#DEL1#144347521#1619741400#####ADINFO5#ADIN/FO7#ADIN#FO8#ADIN>FO9#ADIN<FO10#ADINFO11#ADINFO12#ADINFO13#40002612001261121######B#SERVOVERIND#PERSONA_IND#EFXID1#1##12345|>

Fields with special characters:
#ADIN/FO7
#ADIN#FO8
#ADIN>FO9
#ADIN<FO10


The issue can be reproduced at will with the following steps:
1)

from sys.data.config
load_pin_invoice_data_map -dv pin_invoice_data_map
this is the OOB config file

2)

build input flist:

0 PIN_FLD_POID POID [0] 0.0.0.1 /event/delayed/session/telco/gsm
1472641893778532383 0
0 PIN_FLD_INVOICE_DATA STR [0]
"@INTEGRATE#004917165210#0049171235292#11#0#USAGE#GSMThing#1#1234#10.0#rateTag#1.000000#4|1 /item 5678 1#6789#20.0#rateTag#1.000000#4>"

3)

run the opcode:

PCM_OP_INV_DECODE_INVOICE_DATA

 it returns fine:


0 PIN_FLD_POID POID [0] 0.0.0.1 /event/delayed/session/telco/gsm
1472641893778532383 0
0 PIN_FLD_EXTENDED_INFO SUBSTRUCT [0] allocated 20, used 8
1 PIN_FLD_CALLING_NUMBER STR [0] "004917165210"
1 PIN_FLD_CALLED_NUMBER STR [0] "0049171235292"
1 PIN_FLD_SVC_CODE STR [0] "11"
1 PIN_FLD_NUMBER_OF_UNITS INT [0] 0
1 PIN_FLD_USAGE_CLASS STR [0] "USAGE"
1 PIN_FLD_DNIS STR [0] "GSMThing"
1 PIN_FLD_BAL_IMPACTS ARRAY [0] allocated 20, used 6
2 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item 3456 1
2 PIN_FLD_RESOURCE_ID INT [0] 1234
2 PIN_FLD_QUANTITY DECIMAL [0] 10
2 PIN_FLD_RATE_TAG STR [0] "rateTag"
2 PIN_FLD_AMOUNT DECIMAL [0] 1
2 PIN_FLD_IMPACT_TYPE ENUM [0] 4
1 PIN_FLD_BAL_IMPACTS ARRAY [1] allocated 20, used 6
2 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item 5678 1
2 PIN_FLD_RESOURCE_ID INT [0] 6789
2 PIN_FLD_QUANTITY DECIMAL [0] 20
2 PIN_FLD_RATE_TAG STR [0] "rateTag"
2 PIN_FLD_AMOUNT DECIMAL [0] 1
2 PIN_FLD_IMPACT_TYPE ENUM [0] 4

4) now coming to customers requirement, let us modify the field "rateTag"
to test it.

case a)
pass "rate\\/Tag"
expected "rate/Tag"

this works ok

___________________________
0 PIN_FLD_POID POID [0] 0.0.0.1 /event/delayed/session/telco/gsm
1472641893778532383 0
0 PIN_FLD_INVOICE_DATA STR [0]
"@INTEGRATE#004917165210#0049171235292#11#0#USAGE#GSMThing#1#1234#10.0#rate\\/Tag#1.000000#4|1 /item 5678
1#6789#20.0#rateTag#1.000000#4>"
nap(5302)> xop PCM_OP_INV_DECODE_INVOICE_DATA 0 1
xop: opcode 961, flags 0
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /event/delayed/session/telco/gsm
1472641893778532383 0
0 PIN_FLD_EXTENDED_INFO SUBSTRUCT [0] allocated 20, used 8
1 PIN_FLD_CALLING_NUMBER STR [0] "004917165210"
1 PIN_FLD_CALLED_NUMBER STR [0] "0049171235292"
1 PIN_FLD_SVC_CODE STR [0] "11"
1 PIN_FLD_NUMBER_OF_UNITS INT [0] 0
1 PIN_FLD_USAGE_CLASS STR [0] "USAGE"
1 PIN_FLD_DNIS STR [0] "GSMThing"
1 PIN_FLD_BAL_IMPACTS ARRAY [0] allocated 20, used 6
2 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item 3456 1
2 PIN_FLD_RESOURCE_ID INT [0] 1234
2 PIN_FLD_QUANTITY DECIMAL [0] 10
2 PIN_FLD_RATE_TAG STR [0] "rate/Tag" -------------> see here
2 PIN_FLD_AMOUNT DECIMAL [0] 1
2 PIN_FLD_IMPACT_TYPE ENUM [0] 4
1 PIN_FLD_BAL_IMPACTS ARRAY [1] allocated 20, used 6
2 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item 5678 1
2 PIN_FLD_RESOURCE_ID INT [0] 6789
2 PIN_FLD_QUANTITY DECIMAL [0] 20
2 PIN_FLD_RATE_TAG STR [0] "rateTag"
2 PIN_FLD_AMOUNT DECIMAL [0] 1
2 PIN_FLD_IMPACT_TYPE ENUM [0] 4
nap(5302)>

___________________________

case b)

pass "rate\\#Tag"
expected "rate#Tag"

this works ok

____________________________________
nap(5498)> d 1
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /event/delayed/session/telco/gsm
1472641893778532383 0
0 PIN_FLD_INVOICE_DATA STR [0]
"@INTEGRATE#004917165210#0049171235292#11#0#USAGE#GSMThing#1#1234#10.0#rate\\#Tag#1.000000#4|1 /item 5678
1#6789#20.0#rateTag#1.000000#4>"
nap(5498)> xop PCM_OP_INV_DECODE_INVOICE_DATA 0 1
xop: opcode 961, flags 0
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /event/delayed/session/telco/gsm
1472641893778532383 0
0 PIN_FLD_EXTENDED_INFO SUBSTRUCT [0] allocated 20, used 8
1 PIN_FLD_CALLING_NUMBER STR [0] "004917165210"
1 PIN_FLD_CALLED_NUMBER STR [0] "0049171235292"
1 PIN_FLD_SVC_CODE STR [0] "11"
1 PIN_FLD_NUMBER_OF_UNITS INT [0] 0
1 PIN_FLD_USAGE_CLASS STR [0] "USAGE"
1 PIN_FLD_DNIS STR [0] "GSMThing"
1 PIN_FLD_BAL_IMPACTS ARRAY [0] allocated 20, used 6
2 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item 3456 1
2 PIN_FLD_RESOURCE_ID INT [0] 1234
2 PIN_FLD_QUANTITY DECIMAL [0] 10
2 PIN_FLD_RATE_TAG STR [0] "rate#Tag"
2 PIN_FLD_AMOUNT DECIMAL [0] 1
2 PIN_FLD_IMPACT_TYPE ENUM [0] 4
1 PIN_FLD_BAL_IMPACTS ARRAY [1] allocated 20, used 6
2 PIN_FLD_ITEM_OBJ POID [0] 0.0.0.1 /item 5678 1
2 PIN_FLD_RESOURCE_ID INT [0] 6789
2 PIN_FLD_QUANTITY DECIMAL [0] 20
2 PIN_FLD_RATE_TAG STR [0] "rateTag"
2 PIN_FLD_AMOUNT DECIMAL [0] 1
2 PIN_FLD_IMPACT_TYPE ENUM [0] 4

____________________________________


case c)

pass "rate\\<Tag"
expected "rate<Tag"

this fails

_______________
nap(5592)> r PCM_OP_INV_DECODE_INVOICE_DATA 1
nap(5592)> d 1
# number of field entries allocated 20, used 2
0 PIN_FLD_POID POID [0] 0.0.0.1 /event/delayed/session/telco/gsm
1472641893778532383 0
0 PIN_FLD_INVOICE_DATA STR [0]
"@INTEGRATE#004917165210#0049171235292#11#0#USAGE#GSMThing#1#1234#10.0#rate\\<Tag#1.000000#4|1 /item 5678
1#6789#20.0#rateTag#1.000000#4>"
nap(5592)> xop PCM_OP_INV_DECODE_INVOICE_DATA 0 1
xop: opcode 961, flags 0
XOP "961" failed: err 50:PIN_ERR_STREAM_EOF, field 0/0:0,
  loc 2:PIN_ERRLOC_PCP, errclass 3:PIN_ERRCLASS_SYSTEM_RETRYABLE,
rec_id 0, resvd 0
nap(5592)>

_______________

case d)

pass "rate\\>Tag"
expected "rate>Tag"

this fails



Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Cause
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.