Hi Ahmed
The important aspect (in my opinion) is not how you model your catalog internally, but rather how you expose the model to consumers (e.g. UI clients at ordering time).
The SID is not noted for being an easy model to expose using APIs, which is why the Open API models tend to be simpler (less class hierarchies, less associations), possibly at the expense of denormalization.
Specifically here, the Open API has a 0..* relationship from ProductOffering to Channel, via the ChannelRef. Unfortunately, we never defined the Channel entity in the API model, but you could build one yourself as an extension. However this would not help your use case, since you want to add the code. You could "ignore" the existing relationship and create a new association class in the API model, where the association class would have this code as a property, much as you have described for SID.
An alternative approach might be to use characteristics, which we have added to ProductOffering in v5 of the API, but using characteristics gives a weaker contract.
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.
------------------------------
Original Message:
Sent: Jul 19, 2023 09:33
From: Ahmed Elbanna
Subject: Adding new attributes to an existing association
Hello,
I am facing a new requirement and would love to get your advice regarding it.
- We are following SID model for Product Offering, and business requires defining a new specific code for each product offering that could be used to request the product offer from a specific channel.
- example for USSD Code
- Offer ID ChannelID Code
- 1 3 *#100#
- So the product offering with ID '1' can be requested from channel with ID '3' using the code '*#100#'
- In Our current implementation
- The relation between product offering and sales channel is defined as 'ProductOfferingProvidedBy' many-to-many association.
- Since the many-to-many association will be translated into association table, I am thinking to remove the association and create the association table between the two entities, adding a new optional parameter 'Code' in the association table.
- the code parameter will provide the needed mapping between ProductOffering, SalesChannel and Special Code.
I would like to know if that will break the SID model, and i would love to hear your opinions for any other approches.
#General
------------------------------
Ahmed Elbanna
SEGMA COM
------------------------------