Reviewers (PMD-3476):

User Story

As a mobile service provider offering combo plans (two products under one long-term contract), I want to support 28-day billing period (regardless of calendar months and weeks) and prorate charges and discounts at contract start and end, so that invoices, discounts, and termination fees are calculated correctly when a contract starts or ends mid-cycle.

Example of use

End customer: John Smith owning 1 MSISDN

  • Standard billing cycle for this customer:

    • 4-week cycles, e.g.

      • Cycle 1: 2026-09-10 00:00:00 – 2026-10-07 23:59:59

      • Cycle 2: 2026-10-08 00:00:00 – 2026-11-04 23:59:59

      • Cycle 14: 2027-09-09 00:00:00 – 2027-10-06 23:59:59

  • John Smith signs a 1-year contract for two products on 2026-09-15 10:30:00

    • Contract end: 2027-09-15 00:00:00

  • Products:

    • Product 1 (P1): “Mobile Bundle 5Gb+400VSMS” for 12 EUR per 4-week cycle taxed exclusively at 21%

    • Product 2 (P2): “Gym membership” 15 EUR per 4-week cycle taxed exclusively at 9%

  • In-contract discount:

    • P1 = 15% for 6 months

    • P2 = 10% for 6 months

  • Standard discount:

    • P1 = 7%

    • P2 = 5%

  • Contract may be cancelled early. In that case a breach fee is calculated as the sum of the net charges the customer would have paid for each remaining day of the contract, had the contract not been terminated early. 

The system must:

  • Issue 4-week invoices on the customer’s existing cycle dates

  • Prorate charges and discounts when the contract starts mid-cycle (2026-09-15 00:00:00 in Cycle 1)

  • Switch to out-of-contract pricing and discounts when the contract ends mid-cycle (2027-09-15 00:00:00 in Cycle 14)

  • Calculate breach fees accurately if the customer cancels before the planned end date.

Business Model

MVNO

Current Solution

  • The billing platform already:

    • Supports recurring billing cycles (typically monthly or weekly patterns)

    • Charges recurring product fees per cycle

    • Prorates charges when products are activated or cancelled mid-cycle

    • Applies percentage discounts on product charges or invoice totals

    • Stores contract terms and can apply fixed or generic early termination penalties

    • Exposes invoices and transactions via API in machine-readable format

  • Gaps to close:

    • Introduce 4-week (28-day) billing cycles as a standard

Stakeholders and Their Benefits

Stakeholders / BenefitsBetter Market FitAutomated Invoicing and BillingRevenue Assurance
CSP(tick) (tick) (tick) 
Resellers(tick) (tick) (tick) 

Use Cases

Use Case #1 – Contract Starts in the Middle of a 4-Week Cycle

Preconditions

  • Customer John Smith is created on 2026-09-10 at 10:15 (UTC) with 28-day billing cycle without any billable services

  • 28-day billing cycles start for the customer:

    • Cycle 1: 2026-09-10 00:00:002026-10-07 23:59:59

    • Cycle 2: 2026-10-08 00:00:00 – 2026-11-04 23:59:59

    • ...
    • Cycle 14: 2027-09-09 00:00:00 – 2027-10-06 23:59:59

Roles: Billing system at cycle closing, customer

Use scenario #1.1 – First invoice with partial first cycle (Cycle 1)

  • On 2026-09-15 10:30:00, John Smith signs a 12 months combo contract with 6 months contract discount period. The system record the contract dates with the day-level precision:

    • Contract start: 2026-09-15 00:00:00
    • Contract end: 2027-09-15 00:00:00

    • In-contract discount start: 2026-09-15 00:00:00
    • In-contract discount end: 2027-03-15 00:00:00
  • Products are activated for the account of John Smith:

    • P1 (Mobile) price 12 EUR / 4-week cycle (tax exclusive) taxed exclusively at 21%

    • P2 (Gym) price 15 EUR / 4-week cycle (tax exclusive)  taxed exclusively at 9%

  • Both P1 and P2 are activated immediately at 2026-09-15 10:30:00.

  • Discount rule is applied to the account of John Smith:

    • In-contract discount:

      • P1 = 15% for 6 months

      • P2 = 10% for 6 months

    • Standard discount:
      • P1 = 7%

      • P2 = 5%

  • On 2026-10-08, the system closes Cycle 1 (2026-09-10 – 2026-10-07).

  • For John Smith, the system:

    • Recognizes that P1 and P2 are active only from 2026-09-15 10:30:00.

    • Calculates the fraction  and charges of Cycle 1 in which the products are active (from 2026-09-15 00:00:00 to 2026-10-07 23:59:59):

      • Active time in Cycle 1 ≈ 23 days 

      • Fraction of cycle ≈ 23 / 28 ≈ 0.8214

      • P1 charge ≈ 12.00 × 0.8214 = 9.86 EUR

      • P2 charge ≈ 15.00 × 0.8214 = 12.32 EUR

      • In-contract discount for P1 (9.86*15%) ≈ –1.48 EUR

      • In-contract discount for P2 (12.32*10%) ≈ –1.23 EUR
  • The invoice for Cycle 1 shows:

    DescriptionPeriodAmount
    P1 Mobile bundle15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:599.86 EUR
    P2 Gym bundle15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:5912.32 EUR
    In-contract discount P1 (15%)15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59–1.48 EUR
    In-contract discount P2 (10%)15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59–1.23 EUR
    VAT 21% on P115-Sep-2026 00:00:00 – 07-Oct-2026 23:59:591.76 EUR
    VAT 9% on P215-Sep-2026 00:00:00 – 07-Oct-2026 23:59:591.00 EUR
    Total22.23 EUR

Use scenario #1.2 – Full in-contract cycle (Cycle 2)

  • Cycle 2: 2026-10-08 00:00:00 – 2026-11-04 23:59:59.

  • P1 and P2 are active for the entire Cycle 2.

  • On 2026-11-05, the system closes Cycle 2 and:

    • Charges P1 = 12.00 EUR

    • Charges P2 = 15.00 EUR

    • In-contract discount for P1 = 15% → –1.80 EUR

    • In-contract discount for P2 = 10% → –1.50 EUR
  • Invoice for Cycle 2 shows:

    DescriptionPeriodAmount
    P1 Mobile bundle08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:5912.00 EUR
    P2 Gym bundle08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:5915.00 EUR
    In-contract discount P1 (15%)08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59–1.80 EUR
    In-contract discount P2 (10%)08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59–1.50 EUR
    VAT 21% on P1 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:592.14 EUR
    VAT 9% on P2 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:591.22 EUR
    Total27.06 EUR

Use Case #2 – In-contract discount ends in the Middle of a 4-Week Cycle

Preconditions

  • Same customer and products as Use Case #1.

  • Contract dates:

    • Start: 2026-09-15 00:00:00

    • End: 2027-09-15 00:00:00 (365 days later)

  • In-contract discount dates:
    • Start: 2026-09-15 00:00:00
    • End: 2027-03-15 00:00:00
  • 4-week billing cycles continue as:

    • Cycle 6: 2027-01-28 00:00:00 – 2027-02-24 23:59:59

    • Cycle 7: 2027-02-25 00:00:00 – 2027-03-24 23:59:59

    • Cycle 8: 2027-03-25 00:00:00 – 2027-04-21 23:59:59

  • The in-contract discount end (2027-03-15 00:00:00) falls inside Cycle 7.

  • After in-contract discount end:

    • P1 discount becomes 7%

    • P2 discount becomes 5%

Roles: Billing system at Cycle 7 closing, customer

Use scenario #2.1 – Mixed pricing and discounts in Cycle 7

  • On 2027-03-25 00:00:00, the system closes Cycle 7 (2027-02-25 00:00:00 – 2027-03-24 23:59:59).

  • It recognizes that the in-contract discount expires at 2027-03-15 00:00:00, which is inside this cycle, and splits Cycle 7 into two sub-periods:

    • Sub-period A (in-contract discount): 2027-02-25 00:00:00 – 2027-03-14 23:59:59, duration = 18 days
    • Sub-period B (standard discount): 2027-03-15 00:00:00 – 2027-03-24 23:59:59, duration = 10 days
  • Fractions of the 28-day cycle:

    • Sub-period A fraction = 18 / 28 ≈ 0.6429

    • Sub-period B fraction = 10 / 28 ≈ 0.3571

  • Charges for Sub-period A (in-contract discount: P1=15%, P2=10%):

    • P1: 12.00 × 0.6429 = 7.71 EUR

    • P2: 15.00 × 0.6429 = 9.64 EUR

    • Discount for P1 (15%): –1.16 EUR → net 6.55 EUR

    • Discount for P2 (10%): –0.96 EUR → net 8.68 EUR

    • VAT for P1 (6.55 × 0.21): 1.38 EUR

    • VAT for P2 (8.68 × 0.09): 0.78 EUR

  • Charges for Sub-period B (standard discount: P1=7%, P2=5%):

    • P1: 12.00 × 0.3571 = 4.29 EUR

    • P2: 15.00 × 0.3571 = 5.36 EUR

    • Discount for P1 (7%): –0.30 EUR → net 3.99 EUR

    • Discount for P2 (5%): –0.27 EUR → net 5.09 EUR

    • VAT for P1 (3.99 × 0.21): 0.84 EUR

    • VAT for P2 (5.09 × 0.09): 0.46 EUR

  • The invoice for Cycle 7 shows:

    DescriptionPeriodAmount

    P1 Mobile bundle

    25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59

    7.71 EUR

    P2 Gym bundle

    25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59

    9.64 EUR

    In-contract discount P1 (15%)

    25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59

    –1.16 EUR

    In-contract discount P2 (10%)

    25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59

    –0.96 EUR

    VAT 21% on P1

    25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59

    1.38 EUR

    VAT 9% on P2

    25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59

    0.78 EUR

    P1 Mobile bundle

    15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59

    4.29 EUR

    P2 Gym bundle

    15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59

    5.36 EUR

    Standard discount P1 (7%)

    15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59

    –0.30 EUR

    Standard discount P2 (5%)

    15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59

    –0.27 EUR

    VAT 21% on P1

    15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59

    0.84 EUR

    VAT 9% on P2

    15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59

    0.46 EUR

    Total

    27.77 EUR

Use Case #3 – Early Contract Termination and Breach Fee

Preconditions

  • Same contract as in Use Case #1 and #2:

    • Start: 2026-09-15 00:00:00

    • End: 2027-09-15 00:00:00

  • In-contract discount dates:
    • Start: 2026-09-15 00:00:00
    • End: 2027-03-15 00:00:00
  • The customer decides to cancel early on 2027-03-02 16:00:00.

  • 4-week cycles around that date:

    • Cycle 7: 2027-02-25 00:00:00 – 2027-03-24 23:59:59

    • Cycle 8: 2027-03-25 00:00:00 – 2027-04-21 23:59:59

  • P1 and P2 are active until 2027-03-02 16:00:00 and are terminated at 2027-03-02 16:00:00. 

  • Breach fee policy:

    • The breach fee is calculated as the sum of the net charges the customer would have paid for each remaining day of the contract, had the contract not been terminated early. 

Roles: Billing system and contract management logic, customer

Use scenario #3.1 – Calculating remaining contract value and breach fee

  • On 2027-03-02 16:00:00, a John Smith records early termination for combo contract.

  • P1 and P2 are immediately terminated and removed from the John's account. No service usage is permitted after this timestamp. 

  • The system records the contract end date with the day-level precision as 2027-03-02 23:59:59 (last billed day).
  • On 2027-03-25, the system closes Cycle 7 (2027-02-25 00:00:00 – 2027-03-24 23:59:59) for John Smith and computes in-contract charges for the period when P1 and P2 were still active:

    • Active time for P1 and P2 in Cycle 7:

      • From 2027-02-25 00:00:00 to 2027-03-02 23:59:59, duration = 6 days

      • Fraction of 28-day cycle ≈ 6 / 28 ≈ 0.2143

    • Prorated product charges (in-contract prices):

      •  P1 charge ≈ 12.00 × 0.2143 = 2.57 EUR

      • P2 charge ≈ 15.00 × 0.2143 = 3.21 EUR

    • In-contract discounts:

      • In-contract discount for P1 (15%) = –0.39 EUR

      • In-contract discount for P2 (10%) = –0.32 EUR

    • VAT for P1 (2.18 × 0.21) = 0.46 EUR

    • VAT for P2 (2.89 × 0.09) = 0.26 EUR

    • Total for in-contract usage in Cycle 7: 5.79 EUR

  • Breach fee calculation: The remaining contract period starts from 2027-03-03 00:00:00 (the first day after the last billed day) to the contract end (2027-09-15 00:00:00) contains two distinct segments because the in-contract discount expires at 2027-03-15 00:00:00, which is after the termination date. Each segment is valued at the net rate applicable during that segment. Breach fees are calculated separately per product to allow correct VAT rates to be applied.
  • Breach fee Segment 1 — remaining in-contract discount period:
    • From 2027-03-03 00:00:00 to 2027-03-14 23:59:59

    • Duration = 12 days 12 / 28 ≈ 0.4286 cycles

    • P1 net rate with in-contract discount: 12.00 − 15% = 10.20 EUR/cycle

    • P2 net rate with in-contract discount: 15.00 − 10% = 13.50 EUR/cycle

    • Breach fee P1 Segment 1: 0.4286 × 10.20 = 4.37 EUR

    • Breach fee P2 Segment 1: 0.4286 × 13.50 = 5.79 EUR

  • Breach fee Segment 2 — remaining post-discount period:

    • From 2027-03-15 00:00:00 to 2027-09-14 23:59:59

    • Duration = 184 days 184 / 28 ≈ 6.5714 cycles

    • P1 net rate with standard discount: 12.00 − 7% = 11.16 EUR/cycle

    • P2 net rate with standard discount: 15.00 − 5% = 14.25 EUR/cycle

    • Breach fee P1 Segment 2: 6.5714 × 11.16 = 73.34 EUR

    • Breach fee P2 Segment 2: 6.5714 × 14.25 = 93.64 EUR

  • Total breach fee P1 (4.37 + 73.34) = 77.71 EUR

  • Total breach fee P2 (5.79 + 93.64) = 99.43 EUR

  • VAT for P1 breach fee (77.71 × 0.21) = 16.32 EUR

  • VAT for P2 breach fee (99.43 × 0.09) = 8.95 EUR

  • The invoice for Cycle 7 shows:
    DescriptionPeriodAmount

    P1 Mobile bundle

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    2.57 EUR

    P2 Gym bundle

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    3.21 EUR

    In-contract discount P1 (15%)

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    –0.39 EUR

    In-contract discount P2 (10%)

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    –0.32 EUR

    VAT 21% on P1

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    0.46 EUR

    VAT 9% on P2

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    0.26 EUR

    In-contract usage subtotal

    5.79 EUR

    Breach fee P1

    03-Mar-2027 00:00:00 – 14-Sep-2027 23:59:59

    77.71 EUR

    Breach fee P2

    03-Mar-2027 00:00:00 – 14-Sep-2027 23:59:59

    99.43 EUR

    VAT 21% on P1 breach fee

    16.32 EUR

    VAT 9% on P2 breach fee

    8.95 EUR

    Total breach fee (incl. VAT)

    202.41 EUR

    Invoice total

    208.20 EUR

Use scenario #3.2 – Service and account status after early termination

  • Immediately after early termination is recorded (effective 2027-03-02 16:00:00):

    • The combo contract is marked as terminated (P1 and P2 are removed from John's account) and the services are blocked.

    • The system does not bill any recurring charges for P1/P2 in later cycles (e.g., Cycle 8).

  • If the outstanding invoices are not paid by due dates, a regular invoice payment collection process is triggered.

Use scenario #3.3 – Early termination of one product from the contract (nice-to-have)

  • On 2027-03-02 16:00:00, a John Smith records early termination for P2 (Gym) only.
  • P2 is immediately terminated and removed from the John's account. P1 (Mobile) remains active under the original contract terms.
  • The system records early cancellation of the P2 from the contract with day-level precision as 2027-03-02 23:59:59 (last billed day).
  • On 2027-03-25, the system closes Cycle 7 (2027-02-25 00:00:00 – 2027-03-24 23:59:59) for John Smith and computes the charges:
    • P1 (Mobile) – active for the full Cycle 7 (28 days):
      • P1 charge: 12.00 EUR

      • In-contract discount (15%): –1.80 EUR → net 10.20 EUR

      • VAT (10.20 × 0.21): 2.14 EUR

    • P2 (Gym) – active from 2027-02-25 00:00:00 to 2027-03-02 23:59:59 (6 days, fraction = 6 / 28 ≈ 0.2143):
      • P2 charge: 15.00 × 0.2143 = 3.21 EUR

      • In-contract discount (10%): –0.32 EUR → net 2.89 EUR

      • VAT (2.89 × 0.09): 0.26 EUR

    • Breach fee calculation: Only P2 was terminated early; the breach fee is calculated for P2 only. The remaining contract period from 2027-03-03 00:00:00 to 2027-09-14 23:59:59 contains two segments, because the in-contract discount for P2 expires at 2027-03-15 00:00:00.

      • Breach fee Segment 1 — remaining in-contract discount period (P2 only)

        • From 2027-03-03 00:00:00 to 2027-03-14 23:59:59

        • Duration = 12 days 12 / 28 ≈ 0.4286 cycles

        • P2 net rate with in-contract discount: 15.00 − 10% = 13.50 EUR/cycle

        • Breach fee P2 Segment 1: 0.4286 × 13.50 = 5.79 EUR

        Breach fee Segment 2 — remaining post-discount period (P2 only)

        • From 2027-03-15 00:00:00 to 2027-09-14 23:59:59

        • Duration = 184 days 184 / 28 ≈ 6.5714 cycles

        • P2 net rate with standard discount: 15.00 − 5% = 14.25 EUR/cycle

        • Breach fee P2 Segment 2: 6.5714 × 14.25 = 93.64 EUR

        • Total P2 breach fee (5.79 + 93.64) = 99.43 EUR

        • VAT for P2 breach fee (99.43 × 0.09) = 8.95 EUR

  • The invoice for Cycle 7 shows:

    Description

    Period

    Amount

    P1 Mobile bundle

    25-Feb-2027 00:00:00 – 24-Mar-2027 23:59:59

    12.00 EUR

    In-contract discount P1 (15%)

    25-Feb-2027 00:00:00 – 24-Mar-2027 23:59:59

    –1.80 EUR

    VAT 21% on P1

    25-Feb-2027 00:00:00 – 24-Mar-2027 23:59:59

    2.14 EUR

    P2 Gym bundle

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    3.21 EUR

    In-contract discount P2 (10%)

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    –0.32 EUR

    VAT 9% on P2

    25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59

    0.26 EUR

    P2 breach fee

    03-Mar-2027 00:00:00 – 14-Sep-2027 23:59:59

    99.43 EUR

    VAT 9% on P2 breach fee

    8.95 EUR

    Invoice total

    123.87 EUR

Use Case #4 – Natural Contract End 

Preconditions:

  • Same customer and products as Use Cases #1–#3:
    • Contract start: 2026-09-15 00:00:00

    • Contract end: 2027-09-15 00:00:00

    • In-contract discount end: 2027-03-15 00:00:00 (available for 6 months from the contract start)

  • Products active for the full contract duration:

    • P1 (Mobile): 12 EUR / 4-week cycle, taxed at 21%

    • P2 (Gym): 15 EUR / 4-week cycle, taxed at 9%

  • Discount schedule for Cycle 14:

    • Standard discount (P1 = 7%, P2 = 5%) applied after in-contract discount end on 2027-03-15 00:00:00, and applies to the whole of Cycle 14.

  • Relevant 4-week billing cycles:

    • Cycle 13: 2027-08-12 00:00:00 – 2027-09-08 23:59:59

    • Cycle 14: 2027-09-09 00:00:00 – 2027-10-06 23:59:59

    • Cycle 15: 2027-10-07 00:00:00 – 2027-11-03 23:59:59

Roles: Billing system and contract management logic, customer

Use scenario #4.1 – Contract ends inside the billing cycle

  • On 2027-09-15 00:00:00, the combo contract reaches its planned end date and is closed by the system.

  • Because the contract has reached its natural end, P1 and P2 remain assigned to John Smith’s account with standard discount (P1 = 7%, P2 = 5%), which has been in effect since 2027-03-15 00:00:00 and is unaffected by the contract closure.

  • On 2027-10-07, the system closes Cycle 14 (2027-09-09 00:00:00 – 2027-10-06 23:59:59), where the standard discount applies to the full 28-day cycle:

  • Charges for Cycle 14:

    • P1: 12.00 × 1.0 = 12.00 EUR

    • P2: 15.00 × 1.0 = 15.00 EUR

    • Standard discount for P1 (7%): –0.84 EUR → net 11.16 EUR

    • Standard discount for P2 (5%): –0.75 EUR → net 14.25 EUR

    • VAT for P1 (11.16 × 0.21): 2.34 EUR

    • VAT for P2 (14.25 × 0.09): 1.28 EUR

  • The invoice for Cycle 14 shows:

    Description

    Period

    Amount

    P1 Mobile bundle

    09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59

    12.00 EUR

    P2 Gym bundle

    09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59

    15.00 EUR

    Standard discount P1 (7%)

    09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59

    –0.84 EUR

    Standard discount P2 (5%)

    09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59

    –0.75 EUR

    VAT 21% on P1

    09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59

    2.34 EUR

    VAT 9% on P2

    09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59

    1.28 EUR

    Total

    29.03 EUR

Non-functional Requirements

  1. Auditability: Allow Support Engineers and Billing Admins audit how discounts, charges and penalties are applied, i.e. understand that fees were discounted due to an active contract, penalties applied due to an early cancelation.

Peculiarities

  1. Contract start and end times are not aligned with billing cycle start and end times:

    • Most contracts will start on a random calendar date and time, not at midnight and not on cycle boundaries.

  2. 4-week cycles (28 days) advance independently of calendar months:

    • They may cross month ends, quarter ends, and even year boundaries.

    • They must behave correctly across leap years.

  3. Billing cycle, contract duration, in-contract discount duration should be calculated with day-level precision, as confirmed by CSP.
  4. According to CSP, contract duration and in-contract discount duration should be defined in calendar months independently from customer billing cycle.
  5. For CSP it is nice-to-have one contract that contain 2 products (e.g.  Mobile + Gym for 1 year), however, it is okay if these are configured as two separate contracts and are assigned with the same start and end date.

  6. Partial cancellation of a combo contract (Use scenario #3.3) is marked as nice-to-have, because according to CSP, they are flexible with how this is modelled. Ideally, it is possible to cancel one product from the contract, but this could also be implemented as ending an existing contract and setting up a new one.

  7. CSP doesn't use bundles functionality, only subscriptions are included into add-on products. The counters for bundles are maintained by the MVNE platform outside PortaBilling.

  8. Important backgroud from Discovery phase:

    • Besides combo contracts, CSP provides single product contracts. Example of contract conditions:

      • Contract duration: 12 months
      • Product: "Mobile Basic" (5GB+400min+400SMS)
      • Regular price for the product: 10 EUR
      • Contract discount duration: 6 months
      • Contract discount amount: 5 EUR
      • Contract cancellation fee amount: remaining in-contract charges. E.g., If contract is cancelled after 5 months, the cancellation fee is calculated as: 5 EUR (discounted fee for the 6ths month) + 60 EUR ( fees for 7-12th months) = 65 EUR
    • To configure such contracts in PortaBilling, CSP decived to use Subscriptions functionality. Example of configuration:
      • A subscription with a minimum subscription period of 12 months is created.
      • Penalty for subscription cancellation:  “Remaining subscription charges”.
      • Subscription full monthly fee: 10 euros
      • Subscription discount: 5 EUR for the first 6 months (set by using the “Promotional periods” option)
      • The configured subscription is assigned to the add-on product "Mobile Basic" (5GB+400min+400SMS)
    • CSP decided not to use Commitments because the current commitment cancellation fee calculation logic (sum of the discounts applied) is not suitable.
  9. Once the 28-day billing period is introduced in PortaBilling, the custom invoice template, prepared by PortaOne for CSP within BA-47361, should be adjusted  to consider the new billing period (we are showing the from/to of the invoice now while CSP requires week number - outlined in question #4 here).

Performance / Clustering, Geo Redundancy/ Dual-Version, Porter / Call Control API / ESPF / Monitoring

  1. Performance: Support 4-week billing cycles for large customer bases without more than 10% degradation in invoice run times compared to monthly billing.