Siebel Tools

Upgrade Notes: Siebel Innovation Pack 2013 – Part 2

In the second part of our notes on an upgrade from Siebel 8.1.1.x to Innovation Pack 2013, we are back waiting for the Siebel Upgrade Wizard to finish its arduous task.

When suddenly…

8. Backup the Database and execute DB stats

At this step, the Upgrade Wizard stops with the above dialog and urges us to take a backup of the database and then execute DB stats. This is obviously a manual step.

The Database Upgrade Guide shares with us the necessary lines for executing DB stats as follows (Oracle database example):

EXEC DBMS_STATS.gather_schema_stats (ownname => ”, cascade

=>true,estimate_percent => dbms_stats.auto_sample_size);

The above command (with the correct table owner name which usually is SIEBEL) must be run using a SYSDBA account.

Alternatively you can run the more sophisticated stats package available from My Oracle Support as Document Id 781927.1 (thanks to Oli for the link).

Because I encountered problems with too many open cursors on a previous occasion, I also used the following command to increase the maximum amount of open cursors for my Oracle database (not sure if this is truly necessary for Oracle 11g):

alter system set open_cursors=500 scope=spfile;
After doing all that, I restarted the database which should now be in perfect condition for the remaining steps.
9. Siebel Tools invocations
As the Upgrade Wizard continues, it generates command lines for Siebel Tools, which naturally only works when you run the process on a Windows machine with Siebel Tools installed. If you run on UNIX/Linux, please check the Database Upgrade Guide for details on how to conduct these steps.
The first Siebel Tools invocation is actually a batch compilation of the New Siebel Repository to a new SRF file. This file is then renamed in order to replace the siebel_sia.srf of Siebel Tools. In the first part of this series, I described how to download the vanilla SRF, and here we see that good guy Upgrade Wizard even ensures that Siebel Tools has a fresh vanilla SRF for 8.1.1.11. Nonetheless, it is a good thing to know where to get a vanilla SRF without having to run a full compile.
The second Siebel Tools invocation is the IRM proper. Siebel Tools will start up with the following dialog.
The IPack Deployment Wizard (introduced in 8.1.1.10) shows the progress of the actual repository merge. Again, we have to be very patient as this takes hours.
10. Error Recovery (hopefully not needed)
As I said above, this process went belly up on me on one occasion, so if you have the same bad luck, here are the steps to re-start the process (after you have removed the error condition, which in my case was a lack of open cursors).
First, rename the now unusable New Customer Repository (or delete it entirely) using Siebel Tools.
Then re-import the prior_custrep.dat file as “New Customer Repository”. Here is the command line to do that:
SES_HOME\siebsrvr\bin\repimexp.exe /a I /G ENU /u SADMIN /p ******** /c “Siebel_DSN” /D SIEBEL /M y /R “New Customer Repository” /F SES_HOME\dbsrvr\oracle\prior_custrep.dat /l D:\repd_custrep_man.log
Finally, restart the Upgrade Wizard from command line using a command similar to the following:
SES_HOME\siebsrvr\BIN\siebupg /m  master_upgrep_dev_811sia.ucf


11. Analyze and resolve merge conflicts in Siebel Tools

This step in the process of upgrading to IP 2013 can be inherently lengthy and complex depending on how much time (and customization) elapsed between your last upgrade (or first installation) and IP 2013. Basically, you have to identify conflicting objects or properties and resolve the conflicts. In this older post, I have described the merge conflict scenarios based on a major release upgrade.

The Innovation Pack versions of Siebel Tools have some new functionality around the merge log views which is a filter for critical conflicts and a Hierarchical Merge Report window. Both utilities assist us in identifying and resolving merge conflicts more easily.
The Hierarchical Merge Report window in Siebel Tools IP 2013
So after a few weeks, you should be ready to continue with the upgrade process…
12. Mark Conflicts as Resolved

Once you have resolved all conflicts, it’s time to restart the IRM Wizard and officially mark the conflicts as resolved. To start Siebel Tools in IRM mode, you use a command like the following:
TOOLS_HOME\bin\siebdev.exe /u SADMIN /p ******** /d “ServerDataSrc” /c “TOOLS_HOME\BIN\ENU\tools.cfg” /l ENU /iPackmode /IRM UpgDeltaMerge


Siebel Tools will launch with the IPack Deployment Wizard and we are prompted to check the Conflict resolution completed flag and click Finish.


13. (Optionally) Run Log Parser

This is the final step in the “upgrep” process. As indicated in the previous post, we can use the logparse command line utility to generate an HTML summary. This is the command to invoke the Log Parser:

SES_HOME\siebsrvr\BIN\logparse /S “SES_HOME” /G ENU /R upgrep_dev_811sia

In the above command “upgrep_dev_811sia” is the name of the log destination folder which is created by the upgrade wizard in the Siebel server log directory.

The logparse.exe reads all log files in this folder and generates a variety of very insightful HTML files which can be accessed from a start page which will usually open in your default browser when you are running it on Windows.

14. Upgrade the Physical Schema

The development database must undergo some more treatment before an object manager can access it. In particular, there is no “Siebel Repository” yet.

Again, we invoke the Database Configuration Wizard to collect the parameters to conduct the final upgrade steps, a process which is also known as “upgphys”, or “Upgrade Physical Schema”.

Some key steps that the upgrade wizard executes are:
  • Export “New Customer Repository” to a .dat file
  • Truncate the repository tables
  • Import the new customer repository as “Siebel Repository”
  • Migrate Open UI manifest data from XML files to the database

The last step in the above list applies especially to customers who were already using (and customizing) Siebel Open UI in versions 8.1.1.9 or 8.1.1.10.

Once the upgrade wizard has finished, we have a real 8.1.1.11 development database, ready to rock’n’roll.

Summary

’tis but a patch doesn’t really hold true when it comes to upgrading to Innovation Pack 2013, even from previous patch levels of 8.1.1.x or 8.2.2.x.

Prepare yourself for a separate, somewhat lengthy multi-step upgrade project and read the documentation before you start and you are on the safe side.

have a nice day

@lex

A Variable Undefined or Browser Wars Reloaded

Over the years, I have accumulated a loose compilation of experiments, examples and demos in the several Siebel Sample Databases on my laptop. Recently, I applied the Innovation Pack 2012 to my Developer Web Client and Siebel Tools installations and tried some of the demos to see if Oracle holds true to their promise that good ol’ browser scripts still run.

One of those demos is how to use a combination of (“traditional”) browser script and server script to display a popup window with information about the record creator (full article here).

To my dismay, the demo did no longer work after applying patch 8.1.1.9 and running the Open UI client in Google Chrome. The popup window always displayed data from the same user record, regardless of the actual creator. However, the HI client in MSIE still worked fine. Of course I suspected that the two browsers could behave a bit differently.

After a while I spotted the flaw in my code. In the browser script I try to cater for different calls (different commands from different menu items) with a input property named User Type. The original code was like this:

var UserType = Inputs.GetProperty(“User Type”);
if (UserType == “”)
{
UserType = “Creator”;
}

Kind of a no-brainer. When the variable UserType is “empty”, assign a value of “Creator”. And obviously this was never a problem in IE (nonetheless very naïve, shame on me).


It took a while of googling and reviewing JavaScript expert discussions (like this one), an then I changed the code to the following (changes in bold type).

var UserType = Inputs.GetProperty(“User Type”);
if (UserType == “” || UserType === undefined)
{
UserType = “Creator”;
}

So now, if either the variable is really an empty string or it is practically undefined, the condition will be true. The === operator by the way compares type and value (read this for more info on == vs. ===).

After this change, the browser script also worked fine in Google Chrome with Open UI.

Screenshot is illustrative. Code is not safe for production use.

have a nice day

@lex

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569