Search This Blog

SBL-DAT-00259: Menu Item '%1' and Menu Item '%2' in Menu '%1' both specify the same position.

Applies to:

Siebel System Software - Version: 7.7.2 [18325] to 8.0 [20405] - Release: V7 to V8

Information in this document applies to any platform.
Area(s):Upgrade
Release(s):V7 (Enterprise), V7 (Professional), V7 (MidMarket), V8 (Enterprise), V8 (Professional)
Database(s):All Supported Databases
App Server OS(s):All Supported Platforms
Latest release tested against:V8 (Enterprise)
Keywords:upgrade, S_VIEW_WTMPL_IT.ITEM_NUM S_APPL_WEB_TMPL_IT, SBL-DAT-00259

This document was previously published as Siebel Technical Note 521.

Purpose

This Technical Note provides important information for all customers who are planning to upgrade to Siebel versions 7.7, 7.8 or 8.0. It contains detailed information about the tasks that must be completed prior to starting the upgrade to avoid issues while running the upgrade process. These tasks can be carried out at any time prior to the upgrade, but it is recommended that they be completed sooner rather than later. The changes will not be picked up by your Siebel application until a new SRF is compiled. Oracle Systems recommends that you create a backup of your repository prior to making these changes and that you fully test any changes made before deploying.

Scope and Application

This document is informational and intended for any user.

Siebel Versions 7.7, 7.8 or 8.0 Upgrade – Pre-Upgrade Tasks

An overview of the pre-upgrade tasks required is listed below. A separate section for each of these tasks provides detailed instructions on how to complete each task. Jumplinks are provided to quickly access the detailed instructions for each task.
 

Overview

 
  1. Location and Amendment of S_VIEW_WTMPL_IT.ITEM_NUM Records
 
This is relevant only to those customers upgrading from Siebel version 7.x. Null values can exist in the S_VIEW_WTMPL_IT.ITEM_NUM (sequence number) which, if left as null, can cause the Siebel upgrade process to fail. The affected records should be identified and updated with a value before starting the Siebel upgrade.
 
Description
 
This is an issue with the repository shipped in prior releases. At the SRF level, this is a required field but is not a required column at the database level. For example, it is a nullable column. This means that when creating or modifying objects through Siebel Tools, this column can never be null. However, objects created or modified through SQL scripts can be null.
 
What Happens If the Information in this Technical Note is Not Applied
 
If the View Web Template Item has a null item identifier, then the Siebel Web Engine (SWE) will not know where to locate the applet, as the item identifier serves as a place holder for the applet and as a result the applet will appear blank in that view. If customers have created their own View Web Template Items with null item identifiers then the merge will produce the wrong results for the new repository.
 
Post Upgrade Actions to Recover From This
 
If the information in the Technical Note has been missed and the upgrade is already complete, the workaround is to archive any affected views from the prior customer repository and import these into the upgraded repository using Siebel Tools. NOTE: If the archive file is created from a Siebel version 7.0.x environment, the file will need to be opened in Microsoft Notepad and saved as utf8. This is because Siebel version 7.0.x exports the file in code page format and Siebel versions 7.7, 7.8 and 8.0 use UNICODE.
 
  1. Update Multi-Value Group (MVG) and Association List Applet Templates
 
For MVG, Popup inline query. This is relevant to customers upgrading from Siebel version 7.x only.
 
Description
 
From Siebel version 7.5.2.2xx (having applied the Repository Upgrade process) onwards, all popups support popup inline query. To enable popup inline query, an applet needs to have the following:
 
    1. An Edit List type applet web template defined.
 
    1. Within the Edit List template, a Go button mapped at location 107.
 
    1. Within the Edit List template, a Cancel button mapped at location 108.
 
The post merge utilities will convert all popups to have the above configuration, therefore enabling the popup inline query.
 
What Happens If the Information in This Technical Note is Not Applied
 
There are four cases which are considered as non-standard configurations. These are listed in section II, points 1 through 4. In those cases the post merge utilities cannot enable Popup inline query in these applets and the utility will output an error to the log files and skip the applet.
 
Post Upgrade Actions to Recover From This
 
Each applet will need to have popup inline query enabled manually by reviewing the warning messages produced by the post merge utilities as documented in the following Siebel Bookshelf references:
 
 
 
 
 
NOTE: This should only affect a small number of popups since the above cases are considered pre-existing non-standard configurations. This Technical Note aims to allow these situations to be fixed prior to running the upgrade in order to optimize the success rate of the post merge utilities.
 
NOTE: In addition to the warnings listed in the Siebel Bookshelf references above, if you encounter the following error:
 
SBL-DAT-00259: Menu Item '%1' and Menu Item '%2' in Menu '%1' both specify the same position.
 
For example:
 
SBL-DAT-00259: Menu Item 'Query - Execute Query' and Menu Item 'Edit - Delete Record' in Menu 'Query - Execute Query' both specify the same position.
 
This may indicate that the two menu control items 'Query - Execute Query' and 'Edit - Delete Record' are mapped to the same location. To resolve this error, follow steps 2, 3 and 4 in Section II below.
 
  1. Update Unnamed Controls in Applet Web Template Items (Siebel Version 6.x Only)
 
Provide values for blank controls in any Siebel version 6.x Applet Web Template Items. This is only applicable for customers using the Siebel v6.x Thin Client functionality.
 
Description
 
In general, an Applet Web Template Item (AWTI) corresponds to one underlying control or List Column record. In Siebel version 6.x, if an AWTI’s control field is null, Siebel Systems assumes that the name of the AWTI is the name of the underlying control. In Siebel version 7.x, the assumption made in Siebel version 6.x is no longer valid as more complicated logic is involved in the user interface configuration, for example, application specific mappings.
 
What Happens If the Information in This Technical Note is Not Applied
 
When Siebel version 6.x thin client users upgrade from Siebel version 6.x to Siebel version 7.x, the Prepare Repository will not map any AWTI’s with an empty control field into the consolidated Edit mode template.
 
Post Upgrade Actions to Recover From This
 
If the Upgrade has already completed and the information in the Technical Note was not applied, the control record can be manually dragged and dropped to the user interface using the Applet Layout Editor. This will cause the correct AWTI record to be created by Siebel Tools.
 
NOTE: When running the SQL queries listed below, if you are using a Microsoft SQL Server database, you need to prefix the table name with the dbo user. For other databases, you need to either log in as the Table Owner or prefix the table name with the Table Owner.
 
The SQL queries provided below assume that the repository is named Siebel Repository. If this is not the case, then amend the SQL query to reflect the appropriate repository name.
 
  1. Location and Amendment of S_VIEW_WTMPL_IT.ITEM_NUM Records

 
The upgrade fails if any null values are found in the ITEM_NUM column of the S_VIEW_WTMPL_IT table. This column contains details about the View Web Template Item and Item Identifier. Identify affected records by running the following SQL statements. The SQL statements shown below identify all null values in this table and column across all repositories in the database.  
 
Use SQL to Identify the Affected Records
 
Run the following SELECT statement to identify any records on the S_VIEW_WTMPL_IT table where the ITEM_NUM column is null. If this SELECT statement returns a value of 0, then no further action is required, and you can proceed directly to Section II, below:
 
SELECT COUNT(*) FROM S_VIEW_WTMPL_IT WHERE ITEM_NUM IS NULL;
 
If the above SELECT statement returns a value greater than 0, then there are records that need to be updated to avoid any issues when running the upgrade process. Run the following SELECT statement to further identify the View Name, the View Web Template Name, the View Web Template Item Name, the Applet Name and whether the View Web Template Item is inactive: NOTE: The query assumes that the name of the repository is called Siebel Repository, the value of this can be changed to reflect the actual name of the repository if required.
 
SELECT V.NAME, VT.NAME, VTI.NAME, VTI.APPLET_NAME, VTI.INACTIVE_FLG
FROM S_VIEW V, S_VIEW_WEB_TMPL VT, S_VIEW_WTMPL_IT VTI, S_REPOSITORY R
WHERE VTI.VIEW_WEB_TMPL_ID = VT.ROW_ID
AND VT.VIEW_ID = V.ROW_ID
AND VTI.REPOSITORY_ID = R.ROW_ID
AND R.NAME = 'Siebel Repository'
AND VTI.ITEM_NUM IS NULL;
 
Complete the following steps to clean up any invalid mappings for each view returned by the above SQL statement (where S_VIEW_WTMPL_IT.ITEM_NUM is NULL):
 
  1. In Siebel Tools, select the Detail tab and then select View. Locate the View Name returned in the first column of the above SQL query. Navigate to the View Web Template > View Web Template Item tab and you should find one or more View Web Template Item records with no value in the Item Identifier as shown in the screen print below:
 
 
  1. Lock the project.
 
  1. Right-click and select Edit Web Layout.
 
 
  1. Right-click and select Check Mappings
 
 
  1. Step 4 returns a list of invalid mappings which are those mappings without a value specified for the Item Identifier. Click on the Yes button to indicate that these invalid mappings should be cleaned up.
 
 
  1. Click on the Yes button to save the changes made when leaving the Edit Web Layout screen.
 
 
  1. Re-query the View and check the View Web Template Items. All records should contain a value in the Item Identifier field.
 
 
If any of the applets that were cleaned up in the above steps are required within the view then you need to re-map them to an available placeholder. To do this, complete the following steps:
 
  1. In Siebel Tools, select the Detail tab and then select View and locate the View Name returned in the first column of the above query.
 
  1. Lock the project.
 
  1. Right-click and select Edit Web Layout.
 
  1. From the Applets window, drag the required Applet (the name of the Applet can be found in the fourth column in the SQL statement) to an available placeholder.
 
  1. Run validate.
 
  1. Update Multi-Value Group (MVG) and Association List Applet Templates

 
This section is relevant only if you are upgrading from Siebel version 7.x. This is only relevant for applets of type MVG and Association List. The following checks and modifications should be carried out against custom applet templates of type MVG and type Association List.
 
  1. Make sure that the Applet Web Templates (AWT) of type Base and Edit List are not both defined.
 
Upgrades from Siebel version 7.5.2.200 or above:
 
The Base mode template should be inactivated. This is because after Siebel version 7.5.2.200 the Siebel Web Engine (SWE) pops up the Edit List mode by default so the Base mode template is never displayed. The Post merge utility converts any Base mode to Edit List mode but cannot handle the case where both Base and Edit List modes are both defined.
 
Upgrades from Siebel version 7.5.2.x but below 7.5.2.200:
 
The Edit List mode should be inactivated. Prior to 7.5.2.200 the SWE pops up the Base mode by default. If there is a popup with an Edit List mode it has never been displayed. The Post merge utility converts any Base mode to Edit List mode but cannot handle the case where both Base and Edit List modes are both defined. The Edit List template can be inactivated as it is never displayed. This lets the post merge utilities convert the Base mode to Edit List mode. The Base mode is the one that is displayed and actively used.
 
Upgrades from Siebel version 7.0.x:
 
The Base mode should be inactivated. Prior to 7.5.2.200 the SWE pops up the Edit List mode by default. If there is a popup with a Base mode it has never been displayed. It can therefore be inactivated.
 
SQL statement to determine Applets with Base and Edit List AWT’s:
 
Use the following SQL statement to determine those Applets that have Applet Web Templates of types Base and Edit List defined:
 
SELECT DISTINCT A.NAME, A.TYPE, R.NAME
FROM
S_APPL_WEB_TMPL T1,
S_APPLET A,
S_REPOSITORY R
WHERE T1.APPLET_ID = A.ROW_ID
AND (T1.INACTIVE_FLG != 'Y' OR T1.INACTIVE_FLG IS NULL)
AND (A.INACTIVE_FLG != 'Y' OR A.INACTIVE_FLG IS NULL)
AND T1.REPOSITORY_ID = R.ROW_ID
AND A.TYPE in ('MVG', 'Association List')
AND EXISTS (SELECT 'X' FROM S_APPL_WEB_TMPL T2 WHERE T2.TYPE = 'Base' AND T2.APPLET_ID = T1.APPLET_ID AND T2.INACTIVE_FLG = 'N' and T2.WEB_TEMPLATE <> 'Popup List Mvg' AND T2.WEB_TEMPLATE <> 'Popup List Assoc')
AND EXISTS (SELECT 'X' FROM S_APPL_WEB_TMPL T2 WHERE T2.TYPE = 'Edit List' AND T2.APPLET_ID = T1.APPLET_ID AND T2.INACTIVE_FLG = 'N' and T2.WEB_TEMPLATE <> 'Popup List Mvg' AND T2.WEB_TEMPLATE <> 'Popup List Assoc');
 
  1. Make sure that the Applet Web Templates have Go and Cancel controls defined with the correct properties and caption as shown below:
 
Button
Type
Method
Go
MiniButtonQuery
ExecuteQuery
Cancel
MiniButtonQuery
UndoQuery
 
To identify and fix the properties for the Go button, do the following:
 
    1. Select the Flat tab in Siebel Tools.
 
    1. Select Control.
 
    1. Run a query on MethodInvoked = ExecuteQuery, HTMLType = MiniButton.
 
    1. Lock all projects (Alt+L).
 
    1. Select all records.
 
    1. Use Change Records to change HTML Type from MiniButton to MiniButtonQuery.
 
To identify and fix the properties for the Cancel button:
 
    1. Select the Flat tab in Tools.
 
    1. Select Control.
 
    1. Run a query on MethodInvoked = UndoQuery, HTMLType = MiniButton.
 
    1. Lock all projects (Alt+L).
 
    1. Select all records.
 
    1. Use Change Records to change HTML Type from MiniButton to MiniButtonQuery.
 
  1. Make sure that the Go and Cancel buttons are mapped at locations 107 and 108, respectively (Item Identifier of the control).
 
A post-Repository-Merge utility that runs as part of the upgrade resolves this for standard applets, as long as the controls are correctly defined and the locations 107 and 108 are available. If the controls are not defined or the locations 107 and 108 are already taken, the utility issues a warning, and you will need to make the changes manually.
 
It is recommended that the control definitions be amended as detailed in step 2 above, and that locations 107 and 108 be freed if another control already uses this location. Make these changes before the start of the upgrade to improve the success rate of this utility.
 
The following SQL statement identifies any Go and Cancel buttons that are not mapped at locations 107 and 108:
 
SELECT ATI.ITEM_NUM, C.CAPTION, A.NAME, AT.NAME
FROM S_APPLET A, S_APPL_WEB_TMPL AT, S_APPL_WTMPL_IT ATI, S_REPOSITORY R, S_CONTROL C
WHERE ATI.APPL_WEB_TMPL_ID = AT.ROW_ID
AND (ATI.INACTIVE_FLG != 'Y' OR ATI.INACTIVE_FLG IS NULL)
AND AT.APPLET_ID = A.ROW_ID
AND ATI.REPOSITORY_ID = R.ROW_ID
AND C.APPLET_ID = A.ROW_ID
AND (C.METHOD_INVOKED = 'ExecuteQuery' OR C.METHOD_INVOKED = 'UndoQuery')
AND (A.TYPE = 'MVG' OR A.TYPE = 'Association List')
AND R.NAME = 'Siebel Repository'
AND ATI.CTRL_NAME = C.NAME
AND (ATI.ITEM_NUM != 107 AND ATI.ITEM_NUM != 108);
 
To map any Go and Cancel buttons returned by the above SQL statement, carry out the following actions for each Applet listed:
 
    1. In Siebel Tools, select Applet and execute a search on the Applet Name (third column in SQL statement), then lock the project.
 
    1. Select the affected Applet Web Template (fourth column in SQL statement).
 
    1. Select the appropriate application for your Siebel implementation in the Configuration Context Toolbar.
 
    1. Select the Applet Web Template Items, and check the Item Identifier column to ensure that location 107 (for Go button / ExecuteQuery control) or 108 (for Cancel button / UndoQuery control) is free.
 
    1. Change the value in the Item Identifier column to either 107 for Go buttons or 108 for Cancel buttons.
 
    1. Run validate.
 
  1. Make sure that only the controls mapped at locations 107 and 108 are for the Go and Cancel buttons.
 
As documented in step 3 above, a post-Repository-Merge utility ensures that the Go and Cancel buttons are mapped to locations 107 and 108, respectively, as long as the controls are correctly defined, and the locations 107 and 108 do not have another control using these locations.
 
In order to maximize the success of this utility, it is recommended that any controls that are not the Go or Cancel buttons but are already mapped to locations 107 and 108 be moved to another available item identifier before running the upgrade. This fix must be done manually.
 
Use the following SQL statements to identify any controls mapped to locations 107 and 108 that are not the Go or Cancel buttons:
 
SQL Statement for Go Button at Location 107:
 
SELECT ATI.ITEM_NUM, C.CAPTION, A.NAME, AT.NAME, ATI.NAME, R.NAME 
FROM S_APPLET A, S_APPL_WEB_TMPL AT, S_APPL_WTMPL_IT ATI, S_REPOSITORY R, S_CONTROL C
WHERE ATI.APPL_WEB_TMPL_ID = AT.ROW_ID
AND AT.APPLET_ID = A.ROW_ID
AND ATI.REPOSITORY_ID = R.ROW_ID
AND (ATI.INACTIVE_FLG != 'Y' OR ATI.INACTIVE_FLG IS NULL)
AND C.APPLET_ID = A.ROW_ID
AND C.METHOD_INVOKED != 'ExecuteQuery'
AND (A.TYPE = 'MVG' OR A.TYPE = 'Association List')
AND R.NAME = 'Siebel Repository'
AND ATI.CTRL_NAME = C.NAME
AND ATI.ITEM_NUM = 107;
 
To remap any buttons at location 107, complete the following steps:
 
    1. In Siebel Tools, select Applet and search on the Applet name (third column in SQL statement), then lock the project.
 
    1. Select the affected Applet Web Template (fourth column in SQL statement).
 
    1. Right click and select Edit Web Layout.
 
    1. Ensure that the correct application is selected for your Siebel implementation in the Configuration Context Toolbar.
 
    1. Drag the affected button (second column in SQL statement) and drop this in a free placeholder.
 
    1. Run validate.
 
SQL Statement for Cancel Button at Location 108:
 
SELECT ATI.ITEM_NUM, C.CAPTION, A.NAME, AT.NAME, ATI.NAME, R.NAME
FROM S_APPLET A, S_APPL_WEB_TMPL AT, S_APPL_WTMPL_IT ATI, S_REPOSITORY R, S_CONTROL C
WHERE ATI.APPL_WEB_TMPL_ID = AT.ROW_ID
AND AT.APPLET_ID = A.ROW_ID
AND ATI.REPOSITORY_ID = R.ROW_ID
AND (ATI.INACTIVE_FLG != 'Y' OR ATI.INACTIVE_FLG IS NULL)
AND C.APPLET_ID = A.ROW_ID
AND C.METHOD_INVOKED != 'UndoQuery'
AND (A.TYPE = 'MVG' OR A.TYPE = 'Association List')
AND R.NAME = 'Siebel Repository'
AND ATI.CTRL_NAME = C.NAME
AND ATI.ITEM_NUM = 108;
 
To remap any buttons at location 108, complete the following steps:
 
    1. In Siebel Tools select Applet and search on the Applet name (third column in SQL statement), then lock the project.
 
    1. Select the affected Applet Web Template (fourth column in SQL statement).
 
    1. Right click and select Edit Web Layout.
 
    1. Ensure that the correct application is selected for your Siebel implementation in the Configuration Context Toolbar.
 
    1. Drag the affected button (second column in SQL statement) and drop this in a free placeholder.
 
    1. Run validate.
 
  1. Update Unnamed Controls in Applet Web Template Items (Siebel Version 6.x Only)

 
This section is only relevant if you are upgrading from Siebel version 6.x and were using the Siebel Thin Client functionality. Applet Web Template Items may be mapped to a control or to a List Item. Any Applet Web Template Items that have controls and do not contain a value need to be updated to explicitly set a value for the control. In Siebel version 6.x, the Client automatically substitutes the Applet Web Template Item name for any controls without a value. During the upgrade, blank controls cause issues when running the Prepare Repository and the Web Client Migration steps.
 
You can update the majority of the affected controls using the SQL statements shown below. These SQL statements set the value of the S_APPL_WTMPL_IT.CTRL_NAME to S_APPL_WTMPL_IT.NAME for any controls, where a record already exists on the S_CONTROL table for controls or on the S_LIST_ITEM table for List Items.
 
In a small number of cases, there may be custom controls that do not exist on the S_CONTROL or S_LIST_ITEM tables which you need to manually correct. Use the SQL statements below to easily identify these cases. Run these SELECT statements after the UPDATE statements have completed, to restrict the output returned to custom controls.
 
To update S_APPL_WTMPL_IT.CTRL_NAME, run the following two SQL statements.
 
Update Statement for the control repository type:
 
UPDATE S_APPL_WTMPL_IT SET CTRL_NAME = NAME
WHERE CTRL_NAME IS NULL
AND (INACTIVE_FLG != 'Y' OR INACTIVE_FLG IS NULL)
AND REPOS_TYPE = 'Control'
AND EXISTS (
SELECT 'x' FROM S_APPLET A, S_APPL_WEB_TMPL AT, S_APPL_WTMPL_IT ATI, S_REPOSITORY R
WHERE ATI.APPL_WEB_TMPL_ID = AT.ROW_ID
AND (ATI.INACTIVE_FLG != 'Y' or ATI.INACTIVE_FLG IS NULL)
AND AT.APPLET_ID = A.ROW_ID
AND ATI.REPOSITORY_ID = R.ROW_ID
AND ATI.REPOS_TYPE = 'Control'
AND ATI.CTRL_NAME IS NULL
AND EXISTS (SELECT 'x' FROM S_CONTROL C WHERE ATI.NAME = C.NAME));
 
Update Statement for the List Item repository type:
 
UPDATE S_APPL_WTMPL_IT SET CTRL_NAME = NAME
WHERE CTRL_NAME IS NULL
AND (INACTIVE_FLG != 'Y' or INACTIVE_FLG IS NULL)
AND REPOS_TYPE = 'List Item'
AND EXISTS (
SELECT 'x' FROM S_APPLET A, S_APPL_WEB_TMPL AT, S_APPL_WTMPL_IT ATI, S_REPOSITORY R
WHERE ATI.APPL_WEB_TMPL_ID = AT.ROW_ID
AND (ATI.INACTIVE_FLG != 'Y' OR ATI.INACTIVE_FLG IS NULL)
AND AT.APPLET_ID = A.ROW_ID
AND ATI.REPOSITORY_ID = R.ROW_ID
AND ATI.REPOS_TYPE = 'List Item'
AND ATI.CTRL_NAME IS NULL
AND EXISTS (SELECT 'x' FROM S_LIST_COLUMN C WHERE ATI.NAME = C.NAME));
 
To identify those controls that will need to be updated manually, run the following two SELECT statements.
 
Select Statement for the control repository type:
 
SELECT A.NAME, AT.NAME, ATI.NAME, R.NAME
FROM S_APPLET A, S_APPL_WEB_TMPL AT, S_APPL_WTMPL_IT ATI, S_REPOSITORY R
WHERE ATI.APPL_WEB_TMPL_ID = AT.ROW_ID
AND (ATI.INACTIVE_FLG != 'Y' OR ATI.INACTIVE_FLG IS NULL)
AND AT.APPLET_ID = A.ROW_ID
AND ATI.REPOSITORY_ID = R.ROW_ID
AND ATI.REPOS_TYPE = 'Control'
AND ATI.CTRL_NAME IS NULL
AND NOT EXISTS (SELECT 'x' FROM S_CONTROL C WHERE ATI.NAME = C.NAME);
 
Select Statement for the List Item repository type:
 
SELECT A.NAME, AT.NAME, ATI.NAME, R.NAME 
FROM S_APPLET A, S_APPL_WEB_TMPL AT, S_APPL_WTMPL_IT ATI, S_REPOSITORY R
WHERE ATI.APPL_WEB_TMPL_ID = AT.ROW_ID
AND (ATI.INACTIVE_FLG != 'Y' OR ATI.INACTIVE_FLG IS NULL)
AND AT.APPLET_ID = A.ROW_ID
AND ATI.REPOSITORY_ID = R.ROW_ID
AND ATI.REPOS_TYPE = 'List Item'
AND ATI.CTRL_NAME IS NULL
AND NOT EXISTS (SELECT 'x' FROM S_LIST_COLUMN C WHERE ATI.NAME = C.NAME);
 
Correct any records returned by the above SELECT statements by completing the following steps:
 
  1. In Siebel Tools, select Applet and execute a search on the Applet name (first column in the SQL output), then lock the project.
 
  1. Select Control and create a new control record containing the required values for the control.
 
  1. Select the affected Applet Web Template (second column in SQL output).
 
  1. Ensure that the correct application for your Siebel implementation is selected in the Configuration Context Toolbar.
 
  1. Update the control column in the Applet Web Template Item to reference the new control record just created.
 
  1. Run validate.



No comments:

Post a Comment