Excessive Refund Events When Cancelling Cycle_Forward_Arrear Events (Doc ID 1667734.1)

Last updated on AUGUST 24, 2016

Applies to:

Oracle Communications Billing and Revenue Management - Version 7.5.0.0.0 to 7.5.0.0.0 [Release 7.5.0]
Information in this document applies to any platform.

Symptoms

When cancelling cycle_forward_arrear events, there are excessive refund events being generated.

This only happens if multiple discounts are active for a product and Sequential Discounting is enabled.

Steps to reproduce the problem:

1) Create account, with billing day = 1
2) Create service S0
2.1) Service S0 is ignored later, it's only part of COTP custom logic
3) Create service S1
4) On 2014-03-25, purchase products: P1, P2 and P3, and discounts: D1 and D2, for service S1
4.1) Products P1, P2 and P3 have event type "cycle_forward_arrear"
4.2) Discount D1 discounts product P1: -100%
4.3) Discount D2 discounts product P2: -100%
5) On 2014-03-29, purchase product P4, and discounts D3 and D4, which are another instances of discounts D1 and D2, and hence:
4.2) Discount D3 discounts product P1: -100%
4.3) Discount D4 discounts product P2: -100%
6) On 2014-03-29, cancel discounts D1 and D2
6.1) Invalid events are generated at this step.

After step 4:

products P1, P2 and P3, and discounts D1 and D2, have dates:
START: 2014-03-25, END: 0 == infinity
Fees for period 2014-03-25 - 2014-04-01 for P1 and P2, and discounts D1 and D2 have been applied.
These are events: 284184173361820746, 284184173361823178.

After step 5:

product P4, and discounts D3 and D4, have dates:
START: 2014-03-29, END: 0 == infinity
Discounts for period 2014-03-29 - 2014-04-01 for D1 and D2 have been re-applied, and then refunded. This is ok, as sum of new balance impacts is 0.
These are events: 284254542105997786, 284254542105998394, 284254542105999546, 284254542106000954.

After step 6:

discounts D1 and D2 have dates:
START: 2014-03-25, END: 2014-03-29
Discounts for period 2014-03-29 - 2014-04-01 have refunded:

1. For discount D4, which is invalid, as it has never been applied in the first place: event 284254542105997510 .
2. For discount D2, which is invalid, as D4, which discounts P2 for -100%, is active in this period: event 284254542106001030
3. For discount D1, which is invalid, as D3, which discounts P1 for -100%, is active in this period: events 284254542105998470 and 284254542106000710 - this has been refunded twice, which makes it double invalid.
None of these should have been refunded.

This only happens when dealing with products with "cycle_forward_arrear" event type, and Sequential Discounting is enabled.
Another observation is that this behaviour is dependant on number of products active. If there is only one product-discount pair, fees and refunds are valid.

When there are more such pairs, number of invalid events is multiplied (for example, with two more such pairs, discount D1 is refunded 4 times).

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