Open APIs

 View Only
  • 1.  characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 03, 2022 07:01
    Hello,

    I have a question regarding ProductSpecificationCharacteristicValueUse in the TMF620 API

    I'm reusing the example from the API doc (page 38), in a nutshell:
    GET /tmf-api/productCatalogManagement/v4/productOffering/7655
    returns:
    ProductOffering "Basic Firewall for Business"
    [...]
         ProductSpecificationCharacteristicValueUse:
         "name": "Number of Ports"
              CharacteristicValueSpecification:
              "value": 8,
              "value": 16

    say I create a bundle "basic Business security pack" and it includes simple ProductOffering: "Basic Firewall for Business"
    In the context of that bundle only, can I restrict "Number of Ports" to "8"?

    Calling GET /tmf-api/productCatalogManagement/v4/productOffering/7655 must return 8 and 16.

    the API resource model doesn't show a relationship between the bundle and the restriction (ProductSpecificationCharacteristicValueUse)
    which would allow me, hopefully to make an API call with contextual inputs (e.g. bundle PO Id and my simple PO Id) which will only return one restriction: "Number of Ports" = 8

    What do you think?

    Or do I need to create as many simple product offerings as bundles with restriction?​

    ------------------------------
    Kind regards,

    Matthieu Hattab
    Lyse Platform
    ------------------------------


  • 2.  RE: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 03, 2022 10:38
    Hi Matthieu
    The behavior you describe is exactly what is intended by ProductSpecificationCharacteristicValueUse (and the equivalent data type in the SID).
    I'm not quite sure that I understand your statement about the missing relationship - ProductOffering has a direct containment relationship to ProductSpecificationCharacteristicValueUse , which in turn points to the ProductSpecification being restricted in the context of the bundle. And this product specification can be anywhere in the tree underneath the bundle (and indeed it won't be directly under the bundle, since bundles contain other POs, never PSs).
    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: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 06, 2022 06:08
    Edited by Matthieu Hattab Jun 06, 2022 06:16
    Hello Jonathan,
    I understand that "ProductSpecification being restricted in the context of the bundle". My question is about restricting "CharacteristicValueSpecification" when the simple PO is sold as part of a bundle PO. 

    the "missing relationship" is the relationship between the bundle PO and the "CharacteristicValueSpecification" restrictions on the simple PO. the relationship is only to force restrictions, not to link a PS with a bundle PO.

    I'll try again with some diagrams.
    Step 1:
    I create a simple PO (Basic Firewall for Business) based on an existing PS (Firewall).
    For this simple PO, the commercial requirement is to forbid the 24-port configuration.

    This simple PO doesn't allow the 24-port configuration. 
    GET /tmf-api/productCatalogManagement/v4/productOffering/7655

    returns:

    name:"Basic Firewall for Business"
    [...]
         
    [ProductSpecificationCharacteristicValueUse]:
         "name": "Number of Ports"
              [CharacteristicValueSpecification]:
              "value": 8,
              "value": 16


    Now, I want to sell a new bundle made of the above Simple PO plus another simple PO.
    the key requirement is that all characteristic values are pre-determined. Customer can do instant purchase. In the context on my bundle, I only allow 8-port VPN.

    the SID/API doesn't seem to allow me to restrict the number of ports to 8 in the context of the "Basic Business Pack" bundle.

    While the Product Catalogue Management already allows us to create restriction on CharacteristicValueSpecification in the context of a bundle.
    I'm thinking of using 620 API to query "Basic Firewall for Business" simple PO and add a second query and filter on the sub resource "bundleProductOffering" (This is a new sub-resource for the simple PO that contain all bundles related to my simple PO. Pseudo mockup of the API call:

    GET /tmf-api/productCatalogManagement/v4/productOffering/7655/bundleProductOffering/8722

    returns:

    "name":"Basic Firewall for Business"
    "id" : "7655"
    [...]
    [bundleProductOffering]
         "name": "Basic Business pack"
         "id" : "8722"
    [ProductSpecificationCharacteristicValueUse]:
         "name": "Number of Ports"
              [CharacteristicValueSpecification]:
              "value": 8,
              "default": Y



    ------------------------------
    Kind regards,

    Matthieu Hattab
    Lyse Platform
    ------------------------------



  • 4.  RE: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 06, 2022 03:36
    Hi Matthieu,

    indeed, this would be the most straightforward solution:

    Or do I need to create as many simple product offerings as bundles with restriction?​
    The number of product offerings will increase, but this is simply a measure of business complexity. This approach is simple to implement as no API changes are required.

    However, in practice, similar use cases are usually solved with non-standard rule-based solutions.

    ------------------------------
    Bostjan Keber
    Marand Software
    ------------------------------



  • 5.  RE: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 06, 2022 06:25
    thanks for the confirmation. it seems we'll have to adapt to the API as it is. cheers,

    ------------------------------
    Kind regards,

    Matthieu Hattab
    Lyse Platform
    ------------------------------



  • 6.  RE: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 06, 2022 10:27
    Edited by Jonathan Goldberg Jun 07, 2022 05:31
    Thanks Matthieu for supplying diagrams, almost always pictures make things easier to understand :) . And perhaps my first reply was not sufficiently clear.
    In your example, there is nothing stopping you putting the ProductSpecificationCharacteristicValueUse entity with only the single value entry 8 directly onto your bundle. That way you don't need additional simple POs just to support different bundle restrictions.
    Of course:
    • Your catalog authoring and runtime both have to support this restriction
    • You need to decide what to do if ProductSpecificationCharacteristicValueUse entities on the simple offering and the bundle offering contradict each other
    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.
    ------------------------------



  • 7.  RE: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 07, 2022 09:31
    Hi,

    The output of ProductSpecificationCharacteristicValueUse/CharacteristicValueSpecification as per ithe API doc is a little unclear to me.
    I see 2 possibilities:
    - Option A: output = the list of Char/CharValues that have restrictions/override
    - Option B: output = a full list of Char/CharValues, including the restrictions/override

    Example. My PS has these characteristics and values:
    - Size {S, M, L}
    - Colour {blue, green, red}

    Marketing want to have one restriction for a new PO:
    Colour = blue

    Option A would return Colour and blue  only, pseudo ouput: 
    [ProductSpecificationCharacteristicValueUse]:
         "name": "Colour"
              [CharacteristicValueSpecification]:
              "value": "Blue"
    Option A looks very much like the definition of ProductSpecificationCharacteristicValueUse in the GB922 documentation.

    Option B would return Size (+ all values) and Colour (blue only), pseudo ouput:
    [ProductSpecificationCharacteristicValueUse]:
         "name": "Size"
              [CharacteristicValueSpecification]:
              "value": "S",
              "value": "M",
              "value": "L"
         "name": "Colour"
              [CharacteristicValueSpecification]:
              "value": "Blue"


    Option B seems more efficient: only one API call is needed to know all the valid Char/CharValues for a specific product offering.
    the reconciliation between standard Char/CharValues (defined in the ProdSpec/Char/valueSpec) and the restricted Char/CharValues (defined in ...ValueUse entities) is managed by the component itself that exposes the 620 API operations.

    This means the various consumers of the API don't need to figure out anything.

    I suppose the way we define the output is at the discretion of the implementation as long as we don't violate the API conformance.



    ------------------------------
    Kind regards,

    Matthieu Hattab
    Lyse Platform
    ------------------------------



  • 8.  RE: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 08, 2022 01:48
    Hi Matthieu,

    a very good point. We implemented option B to make things easier for clients. With a single GET on the product offering resource, you obtain everything you need to build a product configuration GUI (characteristics, default values, list of values).

    You can still invoke GET operation on the product specification resource to obtain all characteristic values (whole domain). 

    Prior to TMF620 compliant interface implementation, we implemented both options (A & B) in our "proprietary" product catalog APIs. It turned out option B was preferred as the product catalog interface encapsulated business logic used across several different client apps. 


    ------------------------------
    Bostjan Keber
    Marand Software
    ------------------------------



  • 9.  RE: characteristic values restriction in the context of a bundle

    TM Forum Member
    Posted Jun 08, 2022 02:25
    Hi
    I would say that the GET behavior might be different at design (authoring) time and run (ordering) time.
    • At design time, the GET should return everything, since this is a basis for change, and the user (if authorized) might want to update the list of refined values
    • At runtime, the GET might return only the restricted values
    But as Matthieu says, it is an implementation decision. Especially since it is not clear (to me) how to distinguish between design time and runtime invocations.

    ------------------------------
    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.
    ------------------------------