Thank you so much for the response @Cecile Gerardin.
I agree with you `RootEntityGroup` is an amazing concept that is applicable in so many scenarios. This is akin to `Collections` I've seen in other products and very useful in many scenarios.
Having said that, I wonder why the `RootEntityGroup` doesn't have `id`, `name`, `description` kind of fields. Is it assumed that RootEntityGroup also extends RootEntity and gets these attributes from there?
Also, as it stands now, my understanding is that it doesn't support sub-group (group hierarchy) concept. I believe, having this would be amazing as we can create group hierarchy as per our needs and use them.
According to your example "A certain class/category of add-ons are only available for customers to buy if they have a certain class/category of plans. " you can perfectly use RootEntityGroups and RootEntityGroupRelationship with a type "requires". ProductOfferingRelationship enables only simple constraints between 2 ProductOfferings not between two sets of Product Offerings.
This is perfect. I was looking for this use case and thanks for confirming. I agree that ProductOfferingRelationship is limiting.
According to your need "A certain class/category of discounts are only available for customers with certain plans (POP with POs)", this isn't specified by a constraint between Product Offerings, this is specified by the Policy rule that manages the POP.
More precisely for your example "e.g. 30% MRC discount is available only on staff-specific mobile plans", you have several ways of doing :
- 1) if you have a specific Product Offering for employees, the alteration is simply carried by this PO
- 2) you use the same Product Offering, then the alteration is carried by this PO and the alteration carries a policy rule checking if the customer is an employee
Sorry, I don't understand your last example.
Can't we have relationship between 2 different groups? i.e. `RootEntityGroup` consisting of `ProductOffering` having a relationship with another `RootEntityGroup` consisting of `ProductOfferingPrices` or precisely `DiscountProdOfferPriceAlteration`? If it is supported, then we can simply have another relationship `requires` or `compatibile` between these groups.
My third example was to make relationship between 2 different discount groups. E.g. Promotional offers above 40% are incompatible with staff discounts. As `RootEntityGroup` supports grouping of `DiscountProdOfferPriceAlteration`, I assume this should be doable.
One final point - These are concrete classes, so can be used as they are. Am I correct? or do I need to subclass and create XGroupMember, XGroup and XGroupRelationship classes where X is PO, PS, POP etc?
------------------------------
Manu
------------------------------
Original Message:
Sent: Feb 27, 2025 10:18
From: Cecile Gerardin
Subject: Support for RootEntityGroup
Hi Manu,
In SID, RootEntityGroup is the good concept to use for grouping any Business Entity inhering from RootEntity such as product offerings, product offering prices, product specifications.
In addition, RootEntityGroup enables describing contraints between RootEntityGroups such as incompatible, requires... You may find illustrations of examples of contraints in the Pattern Domain guidebook.
You refer to the API, I'm not an API specialist at all but as far as I know they didn't introduce the concept of RootEntityGroup and use a Category that isn't a SID concept and is much less powerful.
So maybe you could ask if it could be added.
See you,
Cécile Gérardin (SID Leader)
------------------------------
Cecile Gerardin
Cécile Gérardin
Original Message:
Sent: Feb 24, 2025 12:25
From: MMH HH
Subject: Support for RootEntityGroup
I see the following diagram in SID. Can I use this to group my product offerings, product offering prices, product specifications, discounts (POP alterations) etc. If so, how do I go about doing that? Also, I don't see TMF620 has anything representing these entities. Are these are internal use only and not exposed via standard APIs to the outside world?

------------------------------
Manu
------------------------------