Thursday, May 24, 2012

Dynamic Data Filters Using Personalization


Scenario:

Many Applications do have requirements for filtering data in a screen or a view dynamically based on User/Division/Position/Organization. The traditional approach here is to clone the respective BC/Applets/Views with appropriate Search Specifications to filter data and have different sets of Views and Responsibilities

Challenge:

The traditional approach makes the rules SRF dependent and thereby making every small change to the data filter necessarily through Repository.

In addition, any UI/Logical changes to the corresponding Views/Applets or BC logic results in duplication or rather multiplication of the efforts resulting in maintenance overhead

The Solution:
                                                                                                                                       
Ø  Using Siebel Personalization Rules for hiding/displaying Applets/Views is quite a common approach. However the Strength of Siebel Personalization in Data Filtering is one area that’s rarely used upon.

Ø  Let’s take a scenario to exemplify how to use Personalization Rules for dynamic Data Filter

Ø  ABC Bank has classified a Set of its Customers as ‘Premium’ or ‘VIP’ Customers. These Customers are dynamically assigned to a specialized team of Sales & Service Departments and these Premium Customer data should be hidden from any other Users who are not assigned to the VIP data.

Ø  To implement this requirement, Siebel Personalization Rules can be used as below:

o    Set the ‘Position Type’ or ‘Employee Type’ (or any new Field to identify the Team Members allocated to Premium Customers) to ‘Premium’
o    Bring this Field to the ‘Personalization Profile’ BC using Siebel Tools
o    Identify any existing/New Field in ‘Contact’ BC and set the Value of the Field to ‘Premium’ for the ‘Premium’ Customers

Ø  Define Personalization Rules as below:

o    Login to Application
o    Navigate to  ‘Administration – Personalization’ Screen >> Rule Sets View
o    Add a new Rule Set Record in the top applet and Name it (say) ‘Premium Customers’
o    Scroll down to the ‘Rules’ List Applet and add a New Rule (say) ‘Filter Premium Customers’
o    Add the Following “Conditional Expression” to ensure that the Filter is applied only to the rest of the Team who are not allocated to ‘Premium’ Customers. The conditional expression is evaluated at run time to identify the Users for whom the Filter is applicable
GetProfileAttr(“Position Type”) <> ‘Premium’
o    Add the following “Exclude Expression” to filter out the ‘Premium’ Customer data for the rest of the Team identified by the “Conditional Expression”
[Contact Type] = ‘Premium’
o    Similarly you can use “Include Expression” as well depending on the requirement
o    Make sure that the Rule Sets & Rules are ‘Active’
o    It is possible to add as many Rules as required for the Business requirement

Ø  Associate the Personalization Rules to the respective Applets as below

o    Navigate to ‘Administration – Personalization’ Screen >> Applets View
o    Add a new Record and pick the Required ‘Applet’ (‘Contact List Applet’ in this case)
o    Scroll down to the ‘Rule Sets’ Applet and add the ‘Rule Set’ created above

Ø  Save the Records and Release the Rules by selecting Applet Menu ‘Reload Personalization Rules’

Ø  Logoff & Login

Ø  This will ensure that the Premium Customer Data is filtered out for the rest of the Team who are not allocated to the Premium Customers

Ø  Many such Rules & Rule Sets can be implemented and the Rules can modified dynamically as per changing Business Needs without having to make any Repository/SRF Changes

Further Reading:

Refer Personalization Admin Guide in Siebel Bookshelf for further reading

1 comment:

  1. Interesting use for Personalization. Thanks for sharing!

    ReplyDelete