Open APIs

 View Only
  • 1.  Contract length implementation

    TM Forum Member
    Posted Jun 17, 2024 09:52
    I'm working on API for indicative offer process: the customer receives an offer with some basic calculation depending on the length of the contract. The Quote Management API seems appropriate to me, but I can't find the contract length/duration/commitment period in this API.
    - Agreement/properties/agreementPeriod
    -- not relevant imho
    - PriceAlternation/properties/...
    - ProductTerm/proprties/duration
    I did some "investigation" on other APIs and found:
    - OrderTerm
    - ?
    What would be the correct approach?

    Jan Brnka
    T-Mobile Czech & Slovak Telekom, a.s.

  • 2.  RE: Contract length implementation

    TM Forum Member
    Posted Jun 17, 2024 11:41

    Hi Jan

    For a simple Product (without specific Agreement), the duration of the contract is indeed modeled by ProductTerm (in the inventory) and OrderTerm (while the product is still being ordered). At the catalog level, we have ProductOfferingTerm, which is part of a ProductOffering.

    For more complex situations, e.g. with a framework agreement. the Agreement entity has an agreementPeriod property that represents the length of the contract.

    At this time, there is no direct modeling of the impact of the contract period on price. We're working on an enhancement to the Product Catalog API that would enable this, but it's going to take a while until we reach an agreed approach.

    Hope it helps

    Jonathan Goldberg
    Amdocs Management Limited
    Any opinions and statements made by me on this forum are purely personal, and do not necessarily reflect the position of the TM Forum or my employer.

  • 3.  RE: Contract length implementation

    TM Forum Member
    Posted Jun 18, 2024 06:21

    we also use ProductTerm to model the agreement/contract period in cart, inventory...

    We sub-class ProductTerm for different purposes (binding, price guarantee, discounts...)
    If a term has a lifecycle, then we also define a duration using "validFor". example:

    productTerm": [
                "@type": "BindingPeriod",
                "@baseType": "ProductTerm",
                "name": "BP_3_Months_Free",
                "duration": {
                    "amount": 12,
                    "units": "month"
                "validFor": {
                    "startDateTime": "2024-02-07T09:47:52+01:00",
                    "endDateTime": "2025-02-07T09:47:51+01:00" // productTerm expiry date

    (validFor is obviously empty in the product catalogue but is calculated in the cart/order as: Order Activation Date + duration)

    we also use product terms to enforce price rules. Examples:

    • A "price guaranty" term will protect customer from any price increase during the Product Term duration
      • this means billing will read the productTerm and if still running, new price will not apply (but when the term expires in the future, the bill run will see that and use the active price)
    • Multiple "binding" terms to restrict what POP is applicable to the PO
      • customer can select the 1-year term and pay €23/mo or the 2-year term for €19/mo

    The above examples are easily modelled in TMF620 Product catalogue, you model the 2 terms and their related prices, but in the order, you only see the term that was selected by or for the customer.

    I'd suggest to read GB922 - Product, it explains how Agreement and ProductOfferingTermorCondition are modelled and suggests some extension to the information model for more complex use cases.

    Kind regards,

    Matthieu Hattab
    Lyse Platform