Siebel 7.8 Signals – A Case Study!

I am back with what I promised.
A case study how we used signals to improve the perfomance by 83%. I will try to tell you facts that I found while working on them and not available in bookshelf and supportweb. If you want to know about singals please read my post Siebel CRM 7.8 – Signals Demysitified

We are working on Siebel 7.8.2.3. It is a Call Center module but major and complex functionality is weaved around Quote Module which includes customizable products. Now these coustmizable products can have upto 10 products and 300 attributes in one Quote Item record. In addition to Quote and Quote Item various custom entities are also copied as Quote Item Child. So, In total there are 11 entites are copied over when you ‘Copy’ or ‘Revise’ Quote.Now it is not possible to copy all these through configuration as by configuration only ‘Root Quote Item’ or just the First record of Quote Item is copied over, not all the records that are created as a result of customization of product. So, The intial solution was to copy or revise quote through scripting copying the Quote Item and all of its child. But the result was that it took upto 3 minutes to copy or revise the quote which was unacceptable and due to accessive scripting the process was not stable and often broke giving one or the other scripting error.So, we started exploring the Solution through vaniall singals i.e ‘CopyQuote’ to copy quote and ‘ReviseCopyQuote’ to revise quote. When these signals were enabled they resulted in copy and revision of just ‘Quote’ and ‘Quote Item’. After further exploring we found that these signal use a ‘Data Map’ which can be modified through Application Data Maps are available
Adminstration ==> Application ==> Data Map Administration.
This view is not available by default especially if you have upgraded your application to Siebel 7.8. You might have to enter a different license key for this view. Data Maps are nothing but declarative mapping of BO, BC and Fields. You specify the Source BC, Fields and Destination BC, Fields. Just creating the mapping is not enough you have to have supporting configuration of the BC’s to make it work.

Every BC that you enter should be added to the BO. It should have a Link to it’s parent (if any) and that links should be added in the Business Component Section of BO.
Add the custom fields to the datamap.

Now comes the tricky part. Even if you do all this you will not see any improvement in performance and you might face some errors. This is what you have to do in addition to what you have already done.

1. Create ‘MapId’ Advanced Property for Child Business Component Fields.
2. Create Light version of Child Business Components.

Now, I will explain all the three steps in detail.

MapId : Data Maps support an advanced property called ‘MapId’ which is really important if you want this to work. ‘MapId’ is not properly defined in Bookshelf. I will try to explain this property with help of an example.

We assume that Quote Item has a child called Delivery Schedule and we want it to be copied over when we copy quote. A field called ‘Quote Item Id’ is present in delivery schedule which stores the row id of Quote Item and is used by Link hence establishing the Parent-Child relationship.

When we specify a source field in data map the value of that field is copied to the field specified in the destination field section. Which means when we specify ‘Quote Item Id’ Field value from source ‘Quote Item Id’ is copied to the destination field. To simply this further suppose the source ‘Quote Item Id’ had a value ‘1-6666’ which means destination ‘Quote Item Id’ would have value ‘1-6666’. But this is wrong. This behaviour would mean that new delivery schedule record is now child of old ‘Quote Item’ not new.

Here is where ‘MapId’ property comes into picture. You have to specify ‘MapId’ property for all the fields which are suppose to store the row id of parent business component. You have to enter the following information in the MVG that opens when you click on Advanced property field

Property Name :MapId (remember it is case sensitive)
Property Value : Name of parent business component

According to above example the Advanced property would be something like this

Property Name : MapId
Property Value : Quote Item

This should solve one of your problems.

Light Version BC: When we are copying we don’t need the validations or stuff like precision or Currency code property.
Making the BC Light mean that create a copy of the original BC and perform the following steps

1. Change the Class of the Bus Comp CSSBCBase.
2. Disable all the user properties of the buscomp.
3. Remove all the Post Defaults and Pre Defaults (Until and unless really required)
4. Remove all the picklists
5. All the values from the validations
6. All the values from the precision fields

I think you Get the idea now So, remove all that you think can be unnecessary. But there are something that are required so you have to use a little common sense before removing all these things.

And you are done!!!!!!!

Using these signals we were able to reduce the copy/revise time to under 10 seconds when it had records in all the 11 custom entities.

If you face any problems while implementing solutions then mail me at neelmani.gautam@gmail.com

Hope this post helps you! If yes then please do write you comments and come back for more.

10 Responses to Siebel 7.8 Signals – A Case Study!

  1. sorry siva but i don’t quite understand what you mean by “multilinkvel” so cannot help you out. Do you mean Multi Value Link?????????

  2. sorry siva but i don’t quite understand what you mean by “multilinkvel” so cannot help you out. Do you mean Multi Value Link?????????

  3. thanks for your article, but when i tried to add new customized BC that related to Quote line item on the Data Map Administration, then an error fired ? why?

  4. thanks for your article, but when i tried to add new customized BC that related to Quote line item on the Data Map Administration, then an error fired ? why?

  5. Nice article but I think it does not give justice to the added value of signals.

    before 7.8, Order Management project often had issues when quote and/or order needed extra functionalities such as: stock availability, product reservation, back office integration, payment, account, credit check and so on, the list is almost endless.

    all these functionalities were triggered from the Quote, Quote Item or their equivalent in orders.
    The problem was always to find the right trigger: WriteRecord? SetFieldValue? PreWriteRecord and so on.

    often, developpers pick the wrong event and this lead to errors with product and pricing engines (PPE): promotion, recommendation, pricing engine… which are mostly triggered on setfieldvalue events (C++ in BC class)
    so many added and customized script, WF, BS ended on collision route with the vanilla PPEs. and you would get (if you’re lucky) “the record has been modified by another user” error messages.

    With 7.8 onwards, you have the chance to put all this logic into signals, because signal offer something really nice: you can sequence the actions. So you can say: if I change the quantity of my product in the quote: the SetFieldValue will first check stock availability, then Pricing.
    and because pricing, eligibility, promotion, recommnendation (and more) are now under the same PSP (product selection and pricing) framework, which consists of many workflow and business services, you now have a fantastic solution that allow a great deal of flexibility(with the notable exception of business services, which should not be touched without assistance of Oracle Expert Services)
    unfortunately, the V8 has changed quite a few things in PSP and those are not documented in the bookshelf, which is pretty much the same in V7.8. So I suggest that you carefully review the configuration in siebel Tools when you read it.

    • Neel…nice explanation for signals

      However i was wondering about the point,where you said config was also not helping much…I had come across some user property called ” Deep Copy n”…wouldnt this helped for your case..as even this property claims to copy all the records with each root being copied…?

  6. Nice article but I think it does not give justice to the added value of signals.

    before 7.8, Order Management project often had issues when quote and/or order needed extra functionalities such as: stock availability, product reservation, back office integration, payment, account, credit check and so on, the list is almost endless.

    all these functionalities were triggered from the Quote, Quote Item or their equivalent in orders.
    The problem was always to find the right trigger: WriteRecord? SetFieldValue? PreWriteRecord and so on.

    often, developpers pick the wrong event and this lead to errors with product and pricing engines (PPE): promotion, recommendation, pricing engine… which are mostly triggered on setfieldvalue events (C++ in BC class)
    so many added and customized script, WF, BS ended on collision route with the vanilla PPEs. and you would get (if you’re lucky) “the record has been modified by another user” error messages.

    With 7.8 onwards, you have the chance to put all this logic into signals, because signal offer something really nice: you can sequence the actions. So you can say: if I change the quantity of my product in the quote: the SetFieldValue will first check stock availability, then Pricing.
    and because pricing, eligibility, promotion, recommnendation (and more) are now under the same PSP (product selection and pricing) framework, which consists of many workflow and business services, you now have a fantastic solution that allow a great deal of flexibility(with the notable exception of business services, which should not be touched without assistance of Oracle Expert Services)
    unfortunately, the V8 has changed quite a few things in PSP and those are not documented in the bookshelf, which is pretty much the same in V7.8. So I suggest that you carefully review the configuration in siebel Tools when you read it.

  7. Hey , 

    What about the attachments under the quote, I am seeing few product bugs, Attachment file is not getting in the file system , even tho attachment record is getting created. Did you figured any work around other than scripting. Plz post here. 

Leave a Reply

Contribute