21Managing Product Group Visibility
Managing Product Group Visibility
This chapter describes product group visibility for corporate and investment banking. It includes the following topics:
About Product Group Visibility
The purpose of product group visibility is to allow one product group, also known as a business product line, to control the sharing of information with other product groups, especially among corporate and investment banks. This functionality for matrix-based organizations is fundamental to such banks because of the need to follow regulatory requirements and to maintain privacy between select product groups. As preconfigured, product group visibility applies to the following Siebel Finance objects:
Opportunity
Contact
Call Report
Activity
Opportunity Note
Account Team
Contact Team
Product group visibility has important characteristics:
Product group visibility is an additional visibility type that sits on top of existing visibility control rules and permits visibility to be applied properly to matrix-based organizations.
Two types of views show product group visibility:
“My Product Group's Record" (where Record is Opportunity, Contact, Call Report, or Activity) are read-only views and show only objects that are directly related to my product group. Some views let you drill-down to detail views.
Detail views (such as Opportunity Notes View, Contact Coverage Team, and Account Coverage Team) show all objects for which you have product group visibility permissions (you are on the product group associated to the object, in a product group that has shared visibility with one of the object's product groups, or the object is Public). Detail views are editable.
When a product group is associated with an object and that product group has specified that its information is to be shared with other product groups, then these other product groups can access or view the object. Currently this feature is available in 3LN Views namely FINS CI Opportunity Note View, FINS CI Contact Coverage Team View & FINS CI Account Coverage Team View. This feature does not cascade. It is single-level sharing. For example, if product group FX shares with product group Equity, and Equity shares with product group Cash, then adding FX to an opportunity note gives access to Equity but does not give access to Cash. For the Opportunity, Contact, Call Report and Activity objects, product group visibility is operational only when the product group that you are sharing the object with is physically added to the Product Group field of the object. For example, to share an Opportunity with a specific product group, that product group must be added to the Product Group field of the Opportunity.
Product groups are assigned to positions. An employee's product group is the product group associated with the employee's primary position.
Activity, Call Report, Opportunity, and Opportunity Note records have Public Flag, which is a field associated with each object of these types. Product group visibility rules apply only when Public Flag is not selected. The default value of Public Flag is derived from Confidential Flag of the creator's product group when the object is created. While upgrading, all existing records have the flag value of Y. The value of Confidential Flag in a product group is examined only to default Public Flag at the time of creation of the object. Afterwards only Public Flag is used for determining the visibility.
For Account Team and Contact Team, product group visibility applies when the creator’s product group has selected Suppress Flag. No flag is at the record level, in contrast with the case of Activities and the other objects. Instead, here Suppress Flag of the product group of the creator determines the visibility.
The product group information associated with a certain object is created when a new record of that object is committed. This is done through a Business Service call invoked by Runtime Events.
Process of Managing Product Group Visibility
This topic details sample tasks often performed by administrators and end-users when managing product group visibility. Your company might follow a different process according to its business requirements.
Procedures Common to Administrators and End Users
Administrators and end users can perform these procedures:
Procedures for Administrators
Administrators can use these procedures:
Procedures for End Users
These procedures illustrate product group visibility and do not cover similar visibility of other objects.
Activating Run-Time Events and Workflows
When you activate workflows, your runtime events automatically reload. However, administrators and other users can use the following procedure if they need to manually reload workflows, or if they need to activate run-time events.
To activate run-time events and workflows related to product group visibility
Activate run-time events:
Navigate to the Administration - Runtime Events screen, and then the Action Sets view.
Query for FINS CI * On Login.
Verify that all retrieved records have Active Flag selected.
From the Menu, choose Reload Runtime Events.
Activate all workflows for the FINS product group:
Navigate to the Admin - Business Process screen, Workflow Deployment view, Repository Workflow Processes view, and then the Active Workflow Processes view.
Query for FINS Product Group.
Select all the FINS Product Group workflows, and click Activate.
Creating Positions and Users
If positions do not already exist for a product visibility group, then an administrator must create them and set the corresponding users as primary.
To create positions and related users
Create the required positions:
Navigate to the Administration - Group screen, and then the Positions view.
Create the positions needed to define the product group. For more information on creating positions, see Siebel Applications Administration Guide.
Assign corresponding users to the positions, and set a primary user for each position.
Set positions for these users as primary.
Navigate to the Administration - User screen, and then the Employees view.
Set the positions for the employees defined in step 1 to primary.
Creating Associated Product Groups
It is also necessary to create associated product groups.
To create associated product groups
Navigate to the Administration - Data screen, and then the Product Groups view.
Create the product groups that you want.
Add shared product group information to the product groups that you created in step 2.
A typical value to select from the query box for the Shared Product Group column is something like Corporate Banking.
Associate positions among the shared product groups:
Select a product group.
Click in the Primary Position column for the selected product group.
This displays the query icon for the column.
Click the icon.
Click Associate.
- Use the Associate window to select the position names that you want to associate with the product group.
Sharing Opportunity Information (End User)
This topic illustrates the sharing of opportunity information by product group visibility. The principles illustrated here also apply to activities and call reports.
To share opportunity information
Log in as a member of a product visibility group.
Navigate to the Opportunities screen, and then the Opportunities List view.
Choose My Opportunities. From the applet menu, select Columns Displayed. Move the Public Flag and Product Group fields to the list of selected columns (if they are not already selected). Click Save and close the dialog box.
Create a new opportunity.
Notice the following:
The value of Product Group defaults to yours because you are the creator of the opportunity.
Public Flag is not selected if your product group has selected Confidential Flag.
In the Product Group field of the opportunity, add a product group that you want this opportunity to be shared with. When other members of this product group log in, they can see the newly created opportunity in the My Product Group’s Opportunities view.
Sharing Notes (End User)
This topic illustrates the control of note visibility by product group visibility.
To share notes
Log in as a member of a product visibility group.
Navigate to the Opportunities screen, and then the All Opportunities Across Organizations view.
Locate the opportunity that you created in Sharing Opportunity Information (End User).
Drill down on the opportunity.
Navigate to Notes, and then the Public Notes. Two views have that title. Use the view with the title FINS CI Opportunity Note View, which exposes the Product Group and Public Flag fields.
Create a note record here.
Log in as another member of the same product group, and confirm that the new record is visible.
Log in as a member of a different product group. Confirm that the record is not visible (unless the second product group is shared through the Product Group Administration view).
Implementing Product Group Visibility by Configuration and Scripts
This topic provides information on implementing product group visibility for new applets through configuration and scripting. It includes the following topics:
About the Logic for Product Group Visibility
Product group visibility can be set for an object in either of two modes, Confidential or Suppress. A user property set at the applet level determines the mode for an applet.
The logic for Confidential mode objects is based on the value of the Public Flag field at the record level:
If this flag is checked, then the record is public.
When a new record is created, the default value is set according to the following rules:
If Confidential Flag of the product group of the creator is checked, then Public Flag of the new record is False.
If Confidential Flag of the product group is unchecked, then Public Flag of the new record is True.
For Suppress mode objects, a record is considered public if the creator’s product group has its Suppress Flag unchecked. Otherwise the record is considered nonpublic.
For each object, views with product group visibility are available. At the time of implementation, if customers want product group visibility for these objects, then they can enable or disable views based on view licensing and setting appropriate responsibilities to different users appropriately. Views that are preconfigured with product group visibility are described in the following table.
View | Object | Description |
---|---|---|
FINS CI Opportunity View |
Opportunity |
Navigate to the Opportunity List, and then My Product Group’s Opportunities view. New Applets:
These applets are based on the FINS CI Opportunity business component. This view is read-only. |
FINS CI Opportunity Note View |
Opportunity Note |
Navigate to the Opportunity, Notes, and then the Public Notes view. Two views have the same caption. Make sure that the view is the correct one through Help, and then the About View. New Applet: FINS CI Opportunity Note Applet |
FINS CI Activity View |
Activity |
Navigate to the Activity List, and then the My Product Group’s Activities view. New Applets:
These applets are based on the FINS CI Action business component. This view is read-only. |
FINS CI Call Report View |
Call Report |
Navigate to the Call Report List, and then My Product Group’s Call Reports view. New Applets:
These applets are based on the FINS CI Call Report business component. This view is read-only. |
FINS CI Contact List View |
Contact |
Navigate to the Contacts List, and then My Product Group’s Contacts view. New Applets:
These applets are based on the FINS CI Contact business component. Detail views: Contact Team. This View is read-only. |
FINS CI Contact Coverage Team View |
Contact Team |
Navigate to the Contact, and then the Coverage Team view. Two views have the same caption. Make sure that the view is the correct one through Help, and then the About View. New Applet: FINS CI Contact Team List Applet This a detail view from Account and is Suppress mode. |
FINS CI Account Coverage Team View |
Account Team |
Navigate to the Account, Coverage Team, Coverage Team view, and then the Coverage Team. New Applet: FINS CI Account Team List Applet This is a detail view from Contact and is Suppress mode. |
Read-Only and Editable Views
The main list views in the views shown in the table in About the Logic for Product Group Visibility are read-only while others are editable. This is because the applets of these views are based on intersection tables between Product Group and the corresponding object for performance purposes (for example, FINS Product Group’s Opportunities view is based on the business component, FINS CI Opportunity, which is sitting on table S_OPTY_PGROUP).
The new intersection table-based business components are FINS CI Opportunity, FINS CI Call Report, FINS CI Action and FINS CI Contact. The applets of these views have user property FINS PGV UseBaseTable set to N.
These read-only views show only records that have the current user’s Product Group associated. Sharing between Product Groups doesn’t work on these views. Also, public records are not shown unless they have the current user’s Product Group associated with them.
Viewing a List of Primary Product Group Members
You can view a list of primary product group members.
To view a list of primary product group members
On the Account screen, click Coverage Team View, and then the Primary Product Group Members View.
Related Classes, Methods, and Business Services
For an applet that requires product group visibility, use the class CSSSWEFAFrameListPGVisibility, or CSSSWEFAFramePGVisibility for Form applets. This class, during the initialization of the applet, uses GetPGVisibilitySearchspec to get a searchspec string using the business service FINS Product Group Visibility Service. SetNamedSearch sets the searchspec in the business component of the applet. When Execute is invoked later, the records are filtered according to the visibility rules.
Here are two examples of the searchspec returned by the business service for Opportunities:
(i) ( [FINS Product Group Id] = '88-263F5' OR [FINS Product Public Flag] = 'Y' )
This is created when applet user property “FINS PGV UseBaseTable" set to N.
(ii) ( EXISTS ([FINS Product Group Id] = '88-263F5') OR EXISTS ([FINS Product Group Id] = '88-263F7') OR [FINS Product Public Flag] = 'Y' )
This is created by applet with user property “FINS PGV UseBaseTable" is set to Y.
Business Service
The business service FINS Product Group Visibility Service plays an important role in implementing the PGV functionality by generating the searchspec.
BS Name: FINS Product Group Visibility ServiceBusiness Service Methods
The Business Service method getting the searchspec is as follows:
Method Name: getPGVisibilitySearchSpec Output: The searchspec string as value of the output propset. Input Properties: (key: “FINS PGV Confidential Flag" value: Y or N) (key: “FINS PGV Suppress Flag" value: N or Y) (key: "FINS PGV UseBaseTable" value: Y or N) (key: "FINS PGV UseMyPGRecordsOnly" value: Y or N)
Another method of the Business Service is as follows:
Method Name: getCurrentUserPublicFlag Output: Public Flag value (Y / N) in output property "FINS Product Group Visibility Public Flag" Input Properties: NilCustomization and Extensibility Options
Apart from the preconfigured applets and views having product group visibility, customers can create new applets and views with product group visibility with either the Confidential mode or the Suppress mode.
Process for Establishing Confidential Mode Visibility
To create new applets and views with product group visibility using the Confidential mode, perform the following tasks:
Changing the Data Model for Confidential Mode Visibility
This step is part of Process for Establishing Confidential Mode Visibility.
To change the data model for Confidential mode visibility
Let MyApplet be the applet that requires product group visibility. Let MyObject be the business component of MyApplet. Please note that if you are following intersection table mode, then MyObject has to be a clone of the original business component of the applet, and you will change the value of ‘Table’ property of the business component in the next topic.
For example, for applet ‘FINS CI Opportunity List Applet’, the business component is ‘FINS CI Opportunity’ which is a clone of the ‘Opportunity’ business component.
Find the base table of MyObject, for example, S_OPTY for Opportunity.
Add the following column to the base table:
PGROUP_PUBLIC_FLG Character(1)
Create a new intersection table in between the base table and S_PGROUP.
Add the following foreign key columns to the new intersection table:
PGROUP_ID Varchar(15) references S_PGROUP <SomeName> Varchar(15) references <BaseTable>
Changing the Buscomp Layer for Confidential Mode Visibility
This step is part of Process for Establishing Confidential Mode Visibility.
To change the Buscomp layer for Confidential mode visibility
If you are going to follow intersection table mode, then change the table property of the MyObject business component to the intersection table, created in Changing the Data Model for Confidential Mode Visibility. If you are following base table mode, skip this step.
Create a new Link Object from MyObject business component to the FINS Product Group business component through the intersection table. This could be, for example, link Opportunity/FINS Product Group.
In MyObject, create a new MVL to the FINS Product Group business component.
Create the following new fields:
FINS Product Group Public Flag
FINS Product Group Public Flag Calculate
FINS Product Group Id
FINS Product Group Name as implemented in the Opportunity business component
Changing the View Layer for Confidential Mode Visibility
The CSSSWEFAFramePGVisibility and CSSSWEFAFrameListPGVisibility classes implement the product group visibility logic.
The following user properties described in this procedure are supported for these two classes and support product group visibility functionality.
FINS PGV Confidential Flag. If the value is Y, the product group visibility functionality is enabled in confidential mode and the visibility is determined using the public flag. The FINS PGV Confidential Flag is used for Opportunity, Call Report, Opportunity Notes, and Activities. If the value is N, the product group visibility is not enabled in confidential mode.
FINS PGV Suppress Flag. If the value of this field is Y, the product group visibility functionality is enabled in the suppress mode and the visibility is determined using the suppress flag field of the creator's product group. If the value of this field is N, the product group visibility is not enabled in confidential mode.
The product group visibility works in two different ways, confidential mode and suppress mode. In confidential mode, there is a public flag field, FINS Product Group Public Flag, in the business component of the object and if the flag value of a given record is Y, then the record is public and there are no visibility restrictions that apply to the record. If the flag value is N, then the record is visible only to the associated product groups. In suppress mode, a given record is public if the product group of the creator of the record has the Suppress Flag field set to N. If the flag is set to Y, then only the users of the associated product groups of the record can see the record.
In order to get the suppress flag value of the creator's product group, there should a join field, FINS Creator Product Group Suppress Flag, in the business component of the corresponding object.
Note: If both the FINS PGV Confidential Flag and the FINS PGV Suppress Flag are given, the FINS PGV Confidential Flag is used and the FINS PGV Suppress Flag is ignored.
FINS PGV Public Flag Field. The value of this field is the name of the public flag field for the confidential type or the join field which joins to the Suppress Flag field of the creator's product group for the Suppress type. The default values include:
FINS Creator Product Group Suppress Flag for suppress mode
FINS Product Group Public Flag for confidential mode
FINS PGV Sales Team Visibility. For this field:
<SalesTeamType> : <SalesTeamFieldName> <SalesTeamType> => valid values are "Position", "User"
For <SalesTeamFieldName> =>, this is the business component multivalue field name which corresponds to the Position Id or the User Id. This user property specifies whether the business component that the position is based on or the user based visibility, and this field corresponds to the sales team. If this property is not given or is invalid, then the user will not have visibility to the record even though the user is part of sales team, unless the user’s product group is associated with the record.
FINS PGV Visibility Field. The value of this field is the multivalue field name of the business component, which corresponds to the Product Group Id. If this property is not given, the default value is the same as the FINS Product Group Id value.
FINS PGV ShowMyPGRecordsOnly. When this user property value is set to Y, then you will not get the shared product groups while generating the product group visibility searchspec.
This step is part of Process for Establishing Confidential Mode Visibility.
To change the View layer for Confidential mode visibility
Add fields Product Group and Public Flag to MyApplet.
Add the following user properties:
Name: FINS PGV Confidential Flag, Value: Y Name: FINS PGV UseBaseTable, Value: Y / N
Use Y if you are using base table mode.
Use N if you are using intersection table mode.
Name: FINS PGV ShowMyPGRecordsOnly, Value: Y / N
Choose whether you want to use PGV Frame Classes or to write a script. If you want to use PGV Frame Classes, then go to step 4. If you want to use a script, then go to step 5.
Using PGV Frame Classes, set the class of the applet to CSSSWEFAFrameListPGVisibility or CSSSWEFAFramePGVisibility, depending on whether it is a List applet or a Form applet.
These classes are derived from classes CSSSWEFrameListFINSBase and CSSSWEFrameFINSBase respectively.
Do not proceed to step 5. Steps 4 and 5 are mutually exclusive.
Write PGV Scripts. In some cases, you might want to use another class instead of the PGV-specific classes named in step 4. In that situation, attach the script given in the following to your applet. To associate the script:
Right-click MyApplet and choose Edit ServerScripts.
Select eScript as the language.
Copy and paste the following script into the WebAppletLoad event:
var opropset; opropset = TheApplication().NewPropertySet(); var searchspec; var Inputs; Inputs = TheApplication().NewPropertySet(); Inputs.SetProperty("FINS PGV Confidential Flag", "Y"); Inputs.SetProperty("FINS PGV Suppress Flag", "N"); //In case of Suppress Mode, reverse the Y/N values in the previous two statements. var servicename = TheApplication().GetService("FINS Product Group Visibility Service"); Inputs.SetProperty("FINS PGV Sales Team Visibility", "Position : Position Id"); servicename.InvokeMethod("getPGVisibilitySearchSpec", Inputs, opropset); var searchspec = opropset.GetValue(); var servicename; var searchname = "FINS PGV Search"; this.BusComp().SetNamedSearch(searchname,searchspec); var sConfidentialFlag = Inputs.GetProperty("FINS PGV Confidential Flag"); var sSuppressFlag = Inputs.GetProperty("FINS PGV Suppress Flag"); //If we are in "Suppress" mode if ( sConfidentialFlag != "Y" && sSuppressFlag == "Y" ) { var sPublicFlagField = Inputs.GetProperty("FINS PGV Public Flag Field"); if (sPublicFlagField == "") { sPublicFlagField = "FINS CI Creator Product Group Suppress Flag"; } this.BusComp().ActivateField ("FINS CI Created By Position Id"); this.BusComp().ActivateField ("FINS CI Created By Product Group Id"); this.BusComp().ActivateField (sPublicFlagField); }
Process for Establishing Suppress Mode Visibility
To create new applets and views with product group visibility using the Suppress mode, perform the following tasks:
Changing the Data Model for Suppress Mode Visibility
This step is part of Process for Establishing Suppress Mode Visibility.
To change the data model for Suppress mode visibility
Create a new intersection table between the base table and S_PGROUP.
Add the following columns:
PGROUP_ID Varchar(15) references S_PGROUP <SomeName> Varchar(15) references <BaseTable>
Changing the Buscomp Layer for Suppress Mode Visibility
This step is part of Process for Establishing Suppress Mode Visibility.
To change the Buscomp layer for Suppress mode visibility
If you are following intersection table mode, then change the base table of the business component you are configuring to the new table you created in Changing the Data Model for Suppress Mode Visibility.
Create a new Link object from MyObject business component to the FINS Product Group business component through the intersection table. This can be, for example, link Contact/FINS Product Group.
In MyObject, create a new MVL to the FINS Product Group business component.
Create the following new fields:
FINS Product Group Public Flag Calculate
FINS Product Group Id
FINS Product Group Name as implemented in the Contact business component.
Create the following joins:
FINS CI Created By User
FINS CI Created By Position
FINS CI Creator Product Group as implemented in the Contact business component.
These joins get the Suppress Flag value for the record, which is ultimately used in the searchspec.
Create the following new fields:
FINS CI Created By Position Id
FINS CI Created By Product Group Id
FINS CI Creator Product Group Suppress Flag
For an example of base table mode, see the Contact business component; for an example of intersection table mode, see FINS CI Contact.
Changing the View Layer for Suppress Mode Visibility
This step is part of Process for Establishing Suppress Mode Visibility.
To change the View layer for Suppress mode visibility
Add the field Product Group to MyApplet.
Add the following user properties:
Name: FINS PGV Suppress Flag, Value: Y Name: FINS PGV UseBaseTable, Value: Y / N Name: FINS PGV ShowMyPGRecordsOnly, Value: Y / N
Add a PGV Frame class or a script to the applet. As explained in Changing the View Layer for Confidential Mode Visibility, you can use either the preconfigured frame classes or the applet script, but not both. If you choose a script, then make the indicated changes to the following script:
Inputs.SetProperty("FINS PGV Confidential Flag", “Y"); Inputs.SetProperty("FINS PGV Suppress Flag", “N"); //In case of Suppress Mode, reverse the Y/N values in the previous two statements. Modify these lines by exchanging the Y/N values, as follows: Inputs.SetProperty("FINS PGV Confidential Flag", “N"); Inputs.SetProperty("FINS PGV Suppress Flag", “Y"); //In case of Suppress Mode, reverse the Y/N values in the previous two statements