12 June 2013

SID Q & A - Question 7

This is the seventh in a series of questions from SO4IT a Swedish IT consultancy company who are using GigaSpaces technology to build a SID based Order Management system for Communications Service Providers.  

In this Q&A we explore more about the use of Characteristics and CharacteristicValues to describe ProductSpecifications and then we move on to Usage and then to Promotions.



So4It:  Can you please explain the entities ProductSpecCharUse and ProdSpecCharValueUse and how they are used?

Andrew:  A ProductSpecCharacteristic defines a generic characteristic that can be used by any Product Spec.  In my example there is a ProductSpecCharacteristic called “Colour” and another called “Shape”

                ProductSpecCharacteristic: Colour
                ProductSpecCharacteristic: Shape

The ProductSpec for “Widget” uses “Colour” but not “Shape” while “WidgetInaBox” uses both of these characteristics – (“Shape” is not relevant to “Widget”)

The ProductSpecCharacteristic “Colour” has 4 valid values as defined by ProductSpecCharValue:
                Black, White, Red and Green
But Green is only relevant to “WidgetinaBox” while the other colours are used by both Widget and WidgetinaBox as shown by the data in ProductSpecCharValueProductSpecCharUse.  Thus the value in ProductSpecCharValueProductSpecCharUse tells which of the ProductSpecCharValues apply to a given ProductSpec.

So4It:  We are now thinking about how to specify usage for a product. The UsageSpecification specifies how usage should be applied to usage of for example a product.
I have a lot of questions on how the UsageSpecification and the ProductSpecification are connected.  When a customer chooses a produce offering we send the order to the order manager and we provision the necessary entities in the network.  The usage data starts coming in and we store it on the product and/or service it refers to, but is this where the usage specification comes into the picture?  We will create usage entries using the usage specification and in that case how do we know what usage specification to use for a certain product/service the usage is referring to?

Andrew:  Usage is a relatively new part of the SID and probably not as rigorously defined as the other areas.  Generally in telecoms companies the usage information in provided as UDRs (CDRs (Call Detail Records) for voice usage and IPDRs for data usage (internet Data Records)).  The process of applying the correct charges to these usage records is performed in a set of specialised processes known as Mediation, Guiding and Rating.  These processes do not work on data as shown in the SID as they have to process millions and millions of records a minute and the SID’s highly generic and normalised structures would prevent that throughput from happening.

To quote the SID documentation on usage:

“Normally, when a usage event occurs, it is stored in a network element, for instance in a switch, router, gateway or in an application system.  Resources (applications, network and computing capabilities) usually store usage data in proprietary formats that are not understood by external systems such as billing systems.  Depending on the polling strategy, a mediation engine connects to resources, collects usage data and formats them into a format understood by the billing system.  Outputs of a mediation engine are Usage Detail Records (UDRs).  Examples of UDRs are call Data Records (CDRs – used to describe usage details of voice call services and Internet Protocol Detail Records (IPDRS – used to describe usage details of Internet Protocol based services).  In ...... we will use the Usage abstract business entity to describe any resource- service- or product-based usage that the external system can read update and process.”

The diagram below shows how the UsageSpecification is “theoretically” linked to ProductSpecification:

I say “theoretically” because the SIDs view of the process does not reflect what goes on in reality.  In reality the Rating engine processes the UDRs based on Service Usage assigning a cost  for the usage of the given service (making a phone call, receiving a phone call) depending on the time of day, day of week, duration of usage, location of usage, source and destination of usage etc etc.

When the Billing system receives the rated UDRs it then looks at the CustomerAccount and Product (subscriptions) and adjusts the costs applied by rating depending on the discounts and allowances provided by the ProductPrice.

So the mapping of Usage to Product is the last step in the process, not the first in the “real world” because of the volume of data involved and historically it wasn’t feasible to do the full Rating and allocating the allowances and discounts in near-real time.

The UsageSpec is a SID specific way of linking the Product Usage to the Service and Resource Usages and it does not reflect the real-world.

I think you should follow the industry standard of mapping the usage to the Service used (Rating) and then apply the allowances and discounts for usage (Billing).

So4It:  We are thinking about how to assign cost to a product.  As I understand it the ProductOfferingPrice should specify all the costs related to the product for the customer. In that case the product offering has implicit knowledge of what product specification exists in it.

For example if the product offering has "1 modem", "1 mobile telephony" etc the product offering price might be "A one-time fee off 40€ for the modem", "A reoccurring fee of 12€ / hour for the mobile telephony" etc.  But shouldn’t we link this to the product specification somehow?

As I understand it from the SID is that the ProductSpecificationCost is the cost for creating and maintaining the product and not the price for the end customer.  Which is logical since if we set it on the product specification it will be the same for every product offering using it.

Andrew:  You are quite right – there should be some way of linking the price for usage to the usage element of a ProductSpec.  In your definition of the product you have decided to put the usage in a separate ProductSpec; this is perfectly acceptable and 100% what SID allows.  My personal preference is to align usage to ServiceUsage as it is the services that are getting used not the product.  SID has been very vague here; I guess because there are so many different ways of defining the price and so many different organisations have done it differently that the definition had to be vague.  This however allows you to implement pricing any way you like.

So4It:  In the SID the SalesChannels is relate in a many-to-many relationship with the product offering; is that correct?  Somehow I thought it would be on the ProductCatalogProductOffering entity that is the many-to-many class that relates product catalogue to product offering?

Can you please elaborate a bit on the sales channel and marking parts of the SID.  We will have “invite” campaigns where the inviter earns credits when he/she gets us new customers.  So I am thinking we will have a sales channel that has a marketing campaign we call InviteMarketingCampaign.  In some cases we also have existing customers that gets credits from sending invites to friends.  We need to record these invites and I was thinking about storing them on the customer account.  So do you have any input on how to implement invites in the SID?

Andrew:   Product Catalogue is another new area that is evolving; there are working groups meeting every week to discuss it and I guess it will change in the next release.  There is definitely some sort of linkage between the Catalogue and the SalesChannel, but it hasn’t been defined yet.  The Sale&Marketing Domain has been very under developed for a long time and the relationship between ProductOffering and SalesChannel was defined back in the early days of SID before any work was done on ProductCatalogue.   I think you are correct and you can model a linkage between ProductCatalogue to SalesChannel rather than from ProductOffering to SalesChannel.

The Invites are “promotions” and as such are in fact ProductOfferings.  When you give someone an Invite you are provisioning a Product on their CustomerAccount if they are an existing Customer or will provision it when they become a Customer if they are not yet a customer.

This promotional Product will add Allowances or Discounts that will be applied during billing.
The modelling of the Campaign area of SID is not good – I did some work in this area a few years ago but it was not submitted to the TMForum, and so is not part of SID.

No comments: