Open APIs

 View Only
  • 1.  TMF 637

    TM Forum Member
    Posted Jun 30, 2022 15:28
    Please help me to understand differences between the following (in context of TMF 637)
    - ProductRef
    - ProductRefOrValue
    - ProductRelationship

    All three exist in the API. In particular, I'm interested in expressing "bundle" and related products. I'd assume I can define a "bundle" and use ProductRelationship with relationshipType="bundled" to list all products inside the "bundle". Technically I can use the same pattern to model any other relationship. Why do we need ProductRef and ProductRefOrValue?

    In addition, how do I model reverse relationship from a "product" to the "bundle"?
    Thank you in advance,
    Igor

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------


  • 2.  RE: TMF 637

    TM Forum Member
    Posted Jul 01, 2022 09:13
    Hi
    The ProductRelationship class is used to express a non-containment connection between two inventory products. For example to express the fact that a TV product is dependent on a Broadband product.
    The ProductRef(OrValue) is used to express a containment connection between two inventory products. For example, to express the fact that Security Features product is contained within a Broadband product. The RefOrValue is used if you want to embed a full product structure within its parent, while Ref is used as a foreign key without embedding the full structure.
    Both of these are completely driven by the product catalog structure (TMF620) of ProductOffering and ProductSpecification.
    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: TMF 637

    TM Forum Member
    Posted Jul 01, 2022 15:50
    Thank you Jonathan. That indeed helps.
    I understand that all this is driven by a catalog. And we are in the middle of designing it. 
    So, I assume a "bundle" is not a "containment"  relationship and I have to use (in catalog) ProductRelationship  to model it. 
    The containment relationship is used when two products are tied together always and have to be instantiated as such.
    And "ref" I can use when I wanted to show that one product is part of the bundle (kind of revers "bundled" relationship).

    Even though one can argue that a "bundle" is a sort of containment, but unidirectional. A products inside the bundle can be instantiated independently of the bundle, while "real" containment mean two products must exist together.

    Is my understand correct?

    Thanks again.


    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------



  • 4.  RE: TMF 637

    TM Forum Member
    Posted Jul 02, 2022 05:42
    Hi,

    As with any standard, OpenAPI  also contain a bit of negotiated agreements accomodating different views.
    One could argue that containment is nothing more than a "bundles" relationship. That was how the previous version of the standard worked.
    Apparently not everyone was happy with that approach and some modifications were made to reflect that. Depending on your approach you do not have to support both concepts. That is an choice left to the implementation.

    I would never use anything else than "bundles" but others will obviously make other choices.

    Regards

    ------------------------------
    Koen Peeters
    OryxGateway
    ------------------------------



  • 5.  RE: TMF 637

    TM Forum Member
    Posted Jul 02, 2022 10:14
    Thank you Koen for providing your perspective. At least I can see where it is coming from.
    All the best.

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------



  • 6.  RE: TMF 637

    TM Forum Member
    Posted Jul 03, 2022 02:52
    I'd like to state my view on the meaning of the word "bundle" in the context of the Open API (others are free to disagree, of course). And to relate this to containment.

    Bundling is a business/commercial term, and as such applies to Product Offerings (PO) only. A bundling product offering has (by definition) references to other product offerings that are being bundled; the reference includes cardinality rules (and in an upcoming enhancement also selection groups such as choose any 4 out of 7). The referenced product offerings may also be sellable stand-alone, they may themselves be bundled, etc.

    In the world of product specifications (PS), we can have structure as well, so that (for example) a Broadband product specification could include PSs for Access, Security Features, and perhaps more. Here also these included PSs may be used in multiple parent PSs, so (for example) a Voice Mail PS could be included in PSs for mobile voice and VoIP. The difference from PO is that there are no cardinality rules or options, the PS structure will result in fixed Product structure at instantiation in the inventory.

    Containment applies to the inventory, when the structure of Products is instantiated from the PO and PS trees, the Product tree will reflect true containment (logically at least), meaning (for example), that a child Product cannot "survive" without its parent Product in the tree.

    Hope this makes sense.

    ------------------------------
    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: TMF 637

    TM Forum Member
    Posted Jul 03, 2022 11:48
    Thank you Jonathan.
    I think we are entering kind of "academic" discussion now. I can argue that containment also can be viewed as commercial in some cases.
    For example, if a company sells internet service and mandates to rent a modem, we can see it as a containment, since the internet products and the modem has to be instantiated together. A modem is not a product by itself in this case.
    Other company can have different business model and sell internet and modem as two separate products, or sell them as a bundle. What if a company changes the business model.
    In both cases we probably can use the same construct ProductRelationship with different type of relationship. But based on current implementation, in one case I need to use ProductRelationship and other ProductRefOrValue which is not very obvious and convenient. (I hope I got it right).

    In any case, I'm sure these issues had been discussed  before the decision was made. And I'm not trying to change it, just trying to understand how to use existing model.
    I appreciate your explanation, it helps.
    Best regards.

    ------------------------------
    Igor Dubrovin
    Bell Canada
    ------------------------------



  • 8.  RE: TMF 637

    TM Forum Member
    Posted Jul 04, 2022 11:46
    Edited by Matthieu Hattab Jul 05, 2022 03:24
    @Igor Dubrovin
    TMF630 part two has additional information on RefOrValue.

    @Jonathan Goldberg
    In TMF620 we have these 4 concepts to "relate" PO or PS together:
    • ProductOfferingRelationship
    • bundledProductoffering
    • ProductSpecificationRelationship
    • bundledProductSpecification
    How do they map to the entities exposed by TMF637?

    As for "bundling/bundle/bundled", having a stricter definition of the term as you described would be nice, but the API documentation use the term in various circunstances:
    bundledProductoffering
    bundledProductSpecification
    bundledProductOfferingPriceRelationship

    for PS and POP, instead of using "bundle" the documentation could use "composite" instead (like in SID documentation).

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

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