Used Resource Is Not Added To Existing Active Session Object When CREDIT_LIMIT_REACHED (Doc ID 759282.1)

Last updated on SEPTEMBER 15, 2016

Applies to:

Oracle Communications Billing and Revenue Management - Version 7.3.0.0.0 to 7.3.0.0.0 [Release 7.3.0]
Information in this document applies to any platform.
This problem can occur on any platform.
***Checked for relevance on 18-May-2012***

Symptoms

If there is a CREDIT_LIMIT_REACHED error raised during PCM_OP_TCF_AAA_UPDATE_AND_REAUTHORIZE opcode execution, the USED resource (BYTES DOWNLINK & BYTES UPLINK) is not added to existing ACTIVE SESSION object. When the prepaid subscriber wants to spend all his money on GPRS session, the last granted quota usage is not recorded in the system, thus not charged. As a result, the usage of the last successful re-authorization is lost and not charged.

Steps To Reproduce:

1) Set prepaid subscriber a balance to amount A,
2) Start gprs session by calling PCM_OP_TCF_AAA_AUTHORIZE or PCM_OP_TCF_AAA_UPDATE_AND_REAUTHORIZE,
3) For each next UPDATE_AND_REAUTHORIZE set values of PIN_FLD_BYTES_DOWNLINK & PIN_FLD_BYTES_UPLINK fields, so they represent the resource usage,
4) Call UPDATE_AND_REAUTHORIZE until subscriber runs out of money,
5) As the money is gone, for the last UPDATE_AND_REAUTHORIZE call, the reauthorization fails and there is an error raised: CREDIT_LIMIT_REACHED -> 0 PIN_FLD_REASON ENUM [0] 4
6) The active session object is not updated with the usage brought by the last UPDATE_AND_REAUTHORIZE opcode call.

 

To Explain it further -

1) Suppose current balance is : PIN_FLD_CURRENT_BAL = -0.4

2) Now tried to call PCM_OP_TCF_AAA_UPDATE_AND_REAUTHORIZE with :

0 PIN_FLD_REQ_BYTES_DOWNLINK DECIMAL [0] 200
0 PIN_FLD_REQ_BYTES_UPLINK DECIMAL [0] 200
0 PIN_FLD_BYTES_DOWNLINK DECIMAL [0] 0
0 PIN_FLD_BYTES_UPLINK DECIMAL [0] 0

So here 400 bytes are reserved. So the output flist shows:
1 PIN_FLD_AMOUNT DECIMAL [0] 0.2000
1 PIN_FLD_AVAILABLE_RESOURCE_LIMIT DECIMAL [0] 0.2000 

Now robj of active session object shows:

1 PIN_FLD_BYTES_DOWNLINK DECIMAL [0] 0
1 PIN_FLD_BYTES_UPLINK DECIMAL [0] 0
which is correct here.

3) Again tried to reauthorize with PCM_OP_TCF_AAA_UPDATE_AND_REAUTHORIZE :

0 PIN_FLD_REQ_BYTES_DOWNLINK DECIMAL [0] 200
0 PIN_FLD_REQ_BYTES_UPLINK DECIMAL [0] 200
0 PIN_FLD_BYTES_DOWNLINK DECIMAL [0] 200
0 PIN_FLD_BYTES_UPLINK DECIMAL [0] 200

here reserved amount is 400 bytes and usage is 400bytes. So output is

1 PIN_FLD_AMOUNT DECIMAL [0] 0.2000
1 PIN_FLD_AVAILABLE_RESOURCE_LIMIT DECIMAL [0] 0

Here whole amount is reserved so the balance is 0. But still 400bytes are there for usage. 

Now robj of active session object shows:
1 PIN_FLD_BYTES_DOWNLINK DECIMAL [0] 200
1 PIN_FLD_BYTES_UPLINK DECIMAL [0] 200 

4) Now tried to reauthorize more bytes:

0 PIN_FLD_REQ_BYTES_DOWNLINK DECIMAL [0] 200
0 PIN_FLD_REQ_BYTES_UPLINK DECIMAL [0] 200
0 PIN_FLD_BYTES_DOWNLINK DECIMAL [0] 150
0 PIN_FLD_BYTES_UPLINK DECIMAL [0] 150

As there is no amount to reserve so it will come out with error, but as  already 400 bytes are reserved in previous call so 400bytes can be consumed. But we have passed 300 bytes which should be rated and updated in the active session.

The output shows:

0 PIN_FLD_ERR_BUF ERR [0]
   <location=PIN_ERRLOC_FM:5 class=PIN_ERRCLASS_SYSTEM_DETERMINATE:1 errno=PIN_ERR_AUTHORIZATION_FAIL:64>
   <field num=0:0,0 recid=0 reserved=173 reserved2=0 time(sec:usec)=0:0>
   <facility=0 msg_id=0 version=0>



But in active session still it shows :

1 PIN_FLD_BYTES_DOWNLINK DECIMAL [0] 200
1 PIN_FLD_BYTES_UPLINK DECIMAL [0] 200

It did not accumulate those 300 bytes(150 uplink, 150 down link).

Cause

Sign In with your My Oracle Support account

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

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms