Friday, September 12, 2008

A distant past - Part 1 Siebel

When did the whole thing start?

Well, one of the answers is found in the vast archive of the Wayback Machine ---> http://www.archive.org. If you search for www.siebel.com you are taken back to the mid-90ies and a somewhat unpretentious website from 1996. Just in case the archive gets lost some day, I have preserved a screenshot of the 1996 siebel.com website myself.

A distant past - Part 2 or "It's still there"

Tom on TV

the Siebel Sample Database comes together with a sample file system, which reveals most of its parts when you navigate to the Administration - Document screen and the Literature view. The content there is intended to support the sample data such as products and their images but there are also some kind of random pebbles to be found by the more leisurous among you. Just some samples (SIA or SBA refers to the Siebel Industry Applications or Siebel Business Applications - formerly known as HORizontal - variety of Siebel CRM):

  • .mov files from a documentary about diabetes (SIA)
  • a graphic file showing 10 deutsche mark (SIA and SBA)
  • an 84 page prospectus for a fictitious company named Sycamore Networks (SIA)

and of course - because this is what this post is all about:

  • a TV ad featuring Tom Siebel (maybe 1998), to be found in the SBA sample database


So it is up to you to find the most interesting file and maybe post it here as a comment.

In case you do not have an installation of Siebel CRM 8.0 with the sample database at hand

Automating the Application Deployment Manager (ADM) packaging process

"Open the box, open the box!"

Introduced in version 7.7 of Siebel CRM, ADM (Application Deployment Manager) has been significantly enhanced in version 8.0. The purpose of ADM is to assist developers and administrators to deploy changes made to the Siebel Repository, the physical UI files, Actuate report files and – last but not least – the administrative data of a Siebel CRM application from one enterprise (e.g. development) to another (e.g. test).

Version 8.0 of Siebel CRM also introduces the Siebel Management Server and Siebel Management Agent. These java based modules are used for the packaging and deployment of the a/m changes.

This post covers the techniques to automate the ADM packaging process. It mainly focuses on command line utilites which can be invoked as part of a shell script.

1. Initialize the package / create folder structure using admpkgr

The command line utility for ADM packaging is admpkgr. It resides in the /mgmtsrvr directory of the Siebel Management Server installation.

For automation purposes, shell scripts can be used similar to the following:

call admpkgr init d:\ousea\mgmtsrvr\adm\packages\xyz_package_01

2. Export database types (administrative data) using srvrmgr

Bookshelf Reference: Application Deployment Manager Guide version 8.0: Creating ADM Deployment Units from Database Types Directly from Command-Line --> http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg7.html#wp1009283

To automate the export of administrative data objects such as LOVs, Data Maps, Responsibilites and many more (ADM natively supports more than 60 data types in version 8.0), the ADM Batch Processor server component (new in version 8.0) can be used.

Using the ‘start task’ command from a srvrmgr prompt works as expected for the ADM Batch Processor, however some issues have been reported with passing the parameters. Here are two versions to do it. The first one is passing the parameters using the ‘with’ clause. The second is setting the parameters and then restarts the component.

We are using an input file here, so the basic command would be as follows (note the /i switch):

\bin\srvrmgr /g /e /u /p /s /i ""

Sample input file for version 1:

start task for comp admbatchproc with admpath=\mgmtsrvr\adm\packages\xyz_package_01\database,admdatatype='EAI Data Map',admfilter='[Name] LIKE "XYZ*"',admeaimethod=synchronize,admprefix=XYZ_EAIDMAP

Sample input file for version 2 (which is safe especially for the admfilter parameter):

shutdown comp admbatchproc
sleep 60
change param admpath=d:\ousea\mgmtsrvr\adm\packages\xyz_package_01\database for comp admbatchproc
change param admdatatype='EAI Data Map' for comp admbatchproc
change param admfilter='[Name] LIKE "XYZ*"' for comp admbatchproc
change param admeaimethod=synchronize for comp admbatchproc
change param admprefix=XYZ_EAIDMAP for comp admbatchproc
startup comp admbatchproc
sleep 20

Here is an explanation of the parameters for admbatchproc:

admpath = Location for resultant export files
admdatatype = Name of Data Type (as in Application Deployment Manager screen)
admfilter = Filter to be applied on the data type. For example, '[List Of Values Parent(UDA).Value]="NM"'
admeaimethod = One of three methods: upsert, synchronize, or custom
admprefix = Prefix for the name of exported XML file

3. Export repository changes using consoleapp.exe

Bookshelf Reference: Application Deployment Manager Guide Version 8.0: “Using Consoleapp.exe to Create Repository Deployment Units” --> http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg22.html#wp1012566

The command line utility consoleapp.exe (in the Siebel Tools bin directory) can be generically used to invoke business service methods within a Siebel application from the command line (headless, i.e. without rendering a GUI). The ADM framework provides a bunch of business services which are used mainly for reloading the various caches or – in this case – for exporting repository changes.

In a shell script example, one would use consoleapp.exe to call the “Siebel Tools Export Support for ADM” business service as follows to export the “XYZ New Order for Account” Workflow:

\bin\consoleapp "\bin\enu\tools.cfg" ENU SADMIN "Siebel Tools Export Support for ADM" "Export:Repository=Siebel Repository,Object_1=XYZ New Order for Account,Type_1=Workflow Process,ExportFile=\mgmtsrvr\adm\packages\xyz_package_01\repository\XYZ_WF_1.sif,DescriptorFile=\mgmtsrvr\adm\packages\xyz_package_01\repository\XYZ_WF_1_des.xml,ExportCount=1,LogFile=d:\temp\adm.log"

If this is your first exposure to consoleapp.exe, it might feel a little weird. Here is the syntax:

consoleapp.exe "" “:"

An alternative way to use consoleapp.exe according to bookshelf is to use an xml input file. I have not yet had the privilege to test this in real life, however. The syntax is as follows:

consoleapp.exe /f inputfile.xml

Caveat ---> http://en.wikipedia.org/wiki/Caveat: Make sure that the descriptor file name is exactly spelled like the export file name, having .xml (instead of .sif) as the file type and des as the suffix. Example: ExportFile=XYZ_WF_1.sif, DescriptorFile=XYZ_WF_1_des.xml.

4. Export file types using OS utilities

Files, such as web template files (.swt), must also be copied into the respective package directories. Since there is no dedicated utility provided by Oracle, the shell script would refer to classic file copy utilities. The following is an example for Windows xcopy:

#copy all web template files changed since June, 1st 2007 to the webtempl directory
xcopy \WEBTEMPL\*.swt \mgmtsrvr\adm\packages\xyz_package_01\file\AppServer\webtempl /D:06-01-2007

5. Delete empty subdirectories using OS utilities

It is best practice to delete empty subdirectories to increase processing time and decrease the amount of warnings during packaging and deployment. This would be accomplished using classic OS utilities. The following is a windows example:

rd \mgmtsrvr\adm\packages\xyz_package_01\File\AppServer\reports\enu

6. Generate the package descriptor file using admpkgr

Now it’s time for admpkgr again. As in step 1, it can be used in a shell script with the ‘generate’ option as follows:

call admpkgr generate \mgmtsrvr\adm\packages\xyz_package_01

7. Validate the package using admpkgr

Here is a windows example how to call admpkgr from a shell script and direct the output to a log file:

call admpkgr validate \mgmtsrvr\adm\packages\xyz_package_01 >> "d:\temp\admpkgr_out.txt"


Summary

The ADM packaging process is multifold, and various command line tools come into play when you want to automate it, namely admpkgr, srvrmgr, consoleapp.exe and OS file system manipulation tools.

Business Process Solution Library Siebel

Here I go again

If you have been involved in Siebel CRM projects over the past years, you might have come across some business analyst who mentioned the Siebel Business Process Solution Library (BPSL), which has been released as part of the strong business process strategy together with Siebel CRM version 7.5 in 2002.

Teaching the approach to analyze your business processes and align them with the out of the box functionality BEFORE you start customizing the hell out of your CRM app during the Business Analyst courses ---> http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getlppage?page_id=213&path=SCRM&columnNumber=3*, Siebel instructors all over the world were challenged to position the library NOT as a complete encyclopedia of all business processes that you can do in Siebel applications. To be honest, this would be a ridiculously small library given the vast functionality of Siebel CRM.



In contrary, the BPSL describes - that is at least mho - common best practice approaches to business processes which are (of course) supported in Siebel out of the box.

However, the BPSL has had a rich (including integration with Corel iGrafx and IBM Rational Requisite) but also difficult past and finally has emerged again on metalink3, Oracle's support portal for Siebel CRM customers. So if you have access to metalink3, you also have access to the link below.

Link to BPSL on metalink3 ---> https://metalink3.oracle.com/od/faces/secure/km/DocumentDisplay.jspx?id=554746.1&h=Y
(credentials needed)

*Note: The current Business Analyst training does not teach the BPSL.

Close to the Standard Siebel

"Once bitten, twice shy"

If you have the opportunity to observe some of the Siebel CRM projects (or any other standard enterprise software project) across the globe, however small or large they may be, there is a familiar pattern:

  1. Phase of enthusiasm
  2. Learning phase, along with the assurance to "stay close to the standard"
  3. Pilot phase during which most of the requirements become clear (and complex)
  4. Land of oblivion (where the first thing to be forgotten is the promise of 2.)
  5. Regression to coding (believing that writing custom code can solve all problems faster and easier than standard functionality)

These are some typical phases (hope you also note the satirical aspect) that a typical project goes through.

However, we are talking about standard software, which means frankly that the customizing developers at the customer site find themselves in a race against time and hundreds of developers in the Oracle offices who are determined to create another splendid version (Siebel 8.1 is just around the corner these days).

So when a project has matured and all requirements are solved, the upgrade project typically comes next. And it is during the first attempts to upgrade the more or less customized application to the newest version when the whole thing seems to blow up (# 5. of the above list being reason #1 for the blow-up in most cases).

So we can add to our list

6. a phase of frustration
7. the vow to stay closer to the standard after the upgrade, which is immediately followed by
8. the requirement to upgrade the application (which is complex)
9. The land of oblivion... - we had that before ;-)

To cite a customer: "What does 'close to the standard' mean? How can we solve our very complex requirements if we are not allowed to add custom code? How can we customize the applications and remain upgradeable?"

The answer to the first question: "Thoroughly observe and clearly understand the standard functionality and metadata and when you implement solutions, let your developers behave the same way the developers at Oracle do."

Let's elaborate on this using the Siebel CRM Repository as an example.

Since Siebel 7 was brought on the market in 2001, we can observe that any new module (e.g. Siebel Loyalty in 7.7, Customer Order Management in 7.8), however complex its functionality may be, can be dissected into the following:

1. The basic objects

Metadata objects like applets, business components and tables which allow users and EAI processes to create, read, update or delete data needed for the new module. The Siebel Essentials ---> http://education.oracle.com/pls/web_prod-plq-dad/show_desc.redirect?dc=D46318GC10 or Core Consultant Course ---> http://education.oracle.com/pls/web_prod-plq-dad/show_desc.redirect?dc=D49247GC10 teaches how to create and modify these objects and how they refer to each other.

The following is a chart familiar to those who benefited from these courses



Summing up, we can say that adding or modifying objects of these 10 basic types is "close to standard" because this is exactly the way how the standard application is created.

OK, we now have nice views and applets and they allow us to read and manipulate data. But how does the additional functionality come in here? The answer is:

2. Business Services

These are metadata objects which (since Siebel 2000) serve as globally accessible capsules of functionality (i.e. code). So whenever an Oracle developer is asked to implement some functionality that is not available in the current application, he or she will write code and place it in the repository as a business service.

This is in fact the answer to the second question: You are indeed allowed to write custom code, but you should have it written as a business service" and - being a loyal Oracle University instructor - I would add "And your developers can learn how to do this in the Siebel Scripting Workshop."

A quick look at the current standard Siebel CRM repository (SIA 8.0) reveals a rich library of more than 1000 highly reusable and well-documented (along with many not-at-least-documented - keep your fingers off those) business services.


List of business services in Siebel Tools

OK, so we now have the data access and reusable services, but what if I need to call these services one after the other and combine them with my custom code. This leads us to the 3rd ingredient of standard Siebel CRM applications:

3. Workflows

Siebel Workflow allows developers to combine classic Siebel operations like creating or updating records with standard or custom business services along with decision logic and exception handling. Siebel Workflow is highly scalable and tests have proven a very high performance (outdoing scripted code by factors).

The tool of choice of Oracle developers to orchestrate reusable services into, yes, yet another service (that's what a workflow really is: just another service which you can call from literally anywhere) is Siebel Workflow.

Open the list of standard workflows in Siebel Tools and see for yourself. The current version (SIA 8.0) comes replete with more than 1000 standard workflow processes for literally any kind of functionality such as pricing, integrating with SAP, marketing or customer-facing processes such as quote-to-cash or forgotten passwords.


Example for a standard workflow

Summary (= Answer to the third question and I will make this short):

Focus your customizing investment on the 10 basic objects, business services and workflow and your project is close to the standard and therefore easily upgradeable.

Oracle Master Data Management - Siebel

a closer look

These days I am reading a white paper ---> http://www.oracle.com/dm/08q3field/mdm_detailed_technical.pdf on Oracle Master Data Management (MDM). A customer is interested in training on MDM and I wanted to find out what role the Siebel Customer Data Integration (CDI) and Universal Customer Master (UCM) solution and Oracle BI EE (formerly known as Siebel Analytics) play in the Oracle MDM offering.

You can download the technical white paper on the Oracle Master Data Management website ---> http://www.oracle.com/master-data-management/index.html.

The paper is in fact helpful to help us define the problem areas of existing IT infrastructures, the half-baked solutions that lack the power to combine operational and analytical data into a single view of the customer. It also defines the ideal information architecture and gives a nice overview of the Oracle products (yes, including Siebel CDI, UCM and Oracle BI EE) available to build or buy an MDM solution.

The N² problem

It starts with the N² (n square) problem that occurs when data synchronization between transactional applications is accomplished with code. IT managers all over the globe experience this on a daily basis.




Enterprise Application Integration

Of course there is a more elegant solution established over the last decade which is usually described as an information bus or hub-and-spoke topology, supported by Enterprise Application Integration (EAI) technology.



Service Oriented Architecture

EAI has recently evolved into serice oriented architecture (SOA) where interfaces can be called from an application's service layer independently of the programming language or software platform. SOA is more than just synchronizing data, it also supports business process orchestration across separate systems.



Data Quality

So when your IT infrastructure has evolved to SOA, you will find that the old saying "garbage in, garbage out" is more true than ever before, because data quality is crucial to successful business process integration. So the paper concludes that an MDM solution that really deserves this name must also embed data quality solutions.

Data Warehousing, Business Intelligence and Reporting

Most companies today have established data warehouses and ETL processing that pulls data from the transactional systems into the DW. And most of them have invested in Business Intelligence tools to analyze the billions of records that they store in the DW in order to drive business decisions.

So far so good.

But the following should make us think twice:

  1. Company A rolls out the new CRM system.
  2. A few years later, the analytical CRM project is started
  3. Shortly after the first pilots, the data quality project is launched.

So the BI system suffers from the poor data quality of the transactional systems. Garbage in, garbage out again.



An ideal information architecture

The paper boldly announces the ideal information architecture which brings the MDM system into play as a central instance which enables metadata and data cleansing and forms the base source system for ETL.



Building an MDM solution using Oracle Products

Today, after uncounted strategic acquisitions, Oracle is able to support the ideal architecture with its software stack. So let's look at the architecture from a software perspective.

  • Oracle 11g with RAC for the Database
  • OWB for ETL and Profiling
  • ODI for ETL and Data Migration
  • Master entity data models
  • ESB for integration
  • BPEL PM for orchestration
  • Portal for the user interface
  • IdM for managing users
  • WS Manager for managing services
  • BI EE for analytics
  • JDeveloper for creating or extending the MDM management application.

Oracle utilizes these technologies to build its MDM Data Hubs. Customers who want to build their own MDM solution should use these components as well.

Summary

MDM can be seen as an approach to solve the common IT problems like ever increasing data volume, poor data quality and lack of business insight.

Oracle offers a variety of products to build a solution and also offers pre-built MDM applications like Oracle Customer Hub and Oracle Product Hub.

Siebel CRM is represented by the Siebel CDI and UCM applications and by Oracle BI EE (formerly known as Siebel Analytics).

So to get full grips to an MDM solution, there is a lot to learn and a lot to gain.

have fun

Siebel Server System Alert Notification

E-mail for you...

Triggered by an inquisitive mind, I have recently tried out the System Alert Notification Feature ---> http://download.oracle.com/docs/cd/E05553_01/books/SystAdm/SystAdm_ConfigServer22.html#wp1014907 of the Siebel Server. This feature has been introduced in Siebel 7.7 and allows server components to notify administrators via e-mail when error conditions occur.

The following describes the setup procedure for a simple test scenario.
The scenario assumes that you have an SMTP server up and running as well as a Siebel Enterprise Server installation.

1. Configure the System Alert Profile

You can use the preconfigured System Alert profile with the alias "AdminEmailAlert".
Navigate to Site Map > Administration - Server Configuration > Enterprises > System Alerts.
In the Alert Parameters list, set the parameters according to your environment. You can do it in the GUI or if you prefer the srvrmgr command line here is a template for an input file:

change param AdminEmailAddress=user@localhost.com,
FromAddress=server@localhost.com,
SMTPServerPort=5025,
SMTPServer=localhost,
Message='This is a message from your Siebel Server: '
for named subsystem adminemailalert


click to enlarge

2. Enable notification for a server component.

Let's try it with the Workflow Process Manager:

Navigate to Site Map > Administration - Server Configuration > Enterprises > Component Definitions.
Query for the Workflow Process Manager component definition.
In the Component Parameters list query for *otification* to find all parameters related to notification.

Set the parameters as follows:

Notification Handler = AdminEmailAlert (the name of the system alert profile you modified in step 1)
Notification Action on Task Ex(it) = 1 (Note: this is an advanced parameter, to set it in the GUI, click the Advanced button)

Here is an input file template for srvrmgr:

change param NotifyHandler=AdminEmailAlert,
NotifyOnTaskExit=1 for compdef wfprocmgr


To verify you can use the following command:

list advanced params %otification% for compdef wfprocmgr


click to enlarge

Be a good boy/girl and shutdown and startup the Workflow Process Manager

3. Test

For testing reasons you can simply start a job with no parameters for the component.
Navigate to Site Map > Administration - Server Management > Jobs and create a new job record for the Workflow Process Manager.
Do not enter any parameters and click Submit Job
Press ALT+ENTER to refresh the list. The job will soon change its status to "Error".
Check the e-mails for your test account. Voilá:


click to enlarge

4. How it works

Any component which has the notification enabled as in step 2 will call the Siebel Administrator Notification Component (alias: AdminNotify) on the Siebel Server it resides on. So it is crucial, that this component is in an online state.

Summary

Notification e-mails can be sent from any Siebel Server component to one or more e-mail accounts (comma separated list). The setup is straightforward. Watch out for the advanced parameter NotifyOnTaskExit which has a default value of 0 (zero, no notification) and has to be set to 1.

Siebel Essentials Blog is funny and interesting

office humor, eh ;-)

glad that humorous posts fresh up the discussion, I found that my post on staying close to the standard in Siebel CRM projects has been cited on another blog site ---> http://siebelunleashed.com/staying-close-to-standards. It is very good to see that there are now several blogs on Siebel CRM to be found on the internet (please see the blog roll on the left).

Register Business Services in Siebel 8

gotcha!

Whenever you wish to use an external script such as browser script (which IS external because it runs in the browser) to call a method of a Siebel Business Service, you have to declare this Business Service so that the application accepts the call.

This is a security feature which has been introduced in Siebel 7.5.

Because otherwise any script kiddie could inject javascript code into the Siebel Web Client ---> http://siebelunleashed.com/internet-explorer-address-bar-and-siebel-browser-script/, call any Business Service and wreak havoc.

Most of you are familiar with the odd entries in the applications .cfg file

ClientBusinessServiceN = Name of the Business Service
(where N is a sequential number)

However, during some upgrades to Siebel 8, things went bump in the night ---> http://www.pitt.edu/%7Edash/bump.html.
That is, their browser scripts didn't work anymore, and adding the line to the .cfg file didn't help either.

Here is the solution, and it is in fact related to the year-long effort to get away from text files to configure server components. So since Siebel 8 you have to declare the Business Services which you would like to call from external scripts as an Application User Property.

Migration ---> http://siebel.ittoolbox.com/groups/technical-functional/siebelupgrades-l/new-tasks-for-siebel-80-upgrades-1420925 is rather easy, because they have the same syntax as in the .cfg file.

As you can see in the screenshot below, also PDQDisabledViewN made it into the Application User Props.

Siebel Query Language - an Example

Romeo and Julian...

About the Siebel Query Language

First of all, it abbreviates to SQL which is kind of funny, of course it has nothing to do with SQL.
Just like you can get more out of a spreadsheet application like Excel when you are familiar with its internal functions and syntax, you can get much more out of Siebel CRM if you are familiar with the Siebel Query Language.

Where is it used?

The answer to this question is very interesting, it is used almost everywhere when you define expressions. It is available in both Siebel Tools and the Siebel Web Client and since version 8.0 both the developement environment and the Web Client (that one since 7.0) sport an expression designer.


Expression Designer in the Siebel Web Client
click to enlarge




Expression Designer in Siebel Tools (since 8.0)

Here is a probably complete list of areas where you can use the Siebel Query Language:

Siebel Web Client
  • Predefined Queries
  • Conditional Expressions for Personalization Rules
  • Conditional Expressions for Runtime Events
  • Data Validation Manager rules
  • Data Map Editor
  • [Update] iHelp branching expressions

Siebel Tools
  • Calculated fields
  • Pre-default and post-default values for fields
  • Field Validation property
  • User properties
  • Expressions in Siebel Workflow and UI Tasks

Where is the reference?

The Siebel Query Language is documented in the Personalization Administration Guide ---> http://download.oracle.com/docs/cd/B40099_02/books/PersAdm/PersAdmfunctions.html#wp89966 of the Siebel Bookshelf.

An example:

The following is an example for a predefined query. The task is to filter the list of contacts so that it displays only persons that have their birthday in the current month.

Working with date fields can be tricky and you just can't type something like *June* in a date field. This is where the date functions ---> http://download.oracle.com/docs/cd/B40099_02/books/PersAdm/PersAdmfunctions8.html#wp61252, also known as julian functions come into play.

Our first choice would be the JulianMonth() function. This function takes a date field as a parameter and returns the julian number of the current month which is for example 80660 for August 2008. So the nerds among you will have quickly calculated ---> http://aa.usno.navy.mil/data/docs/JulianDate.php this back and month #1 is of course January of 4713 BC.

If we want to query for persons who have their birthday in the current month, then the JulianMonth() function alone is not helpful because the return value for August 1968 is different from August 2008, so we need a way to extract the month number (1-12) from the date. This can be accomplished by multiplying the julian year number (6721 for 2008) by 12 and subtracting it from the julian month number.

So the equation is: # of current month = JulianMonth(Today()) - JulianYear(Today())*12

This equation will be the base for our query in Siebel CRM. So basically if we want to match the Birth Date field of a Contact with the # of current month, the query goes as follows:

JulianMonth([Birth Date])-JulianYear([Birth Date])*12 = JulianMonth(Today()) - JulianYear(Today())*12

Creating the predefined query:

Usually you can enter even complex queries directly in any control or list column of the applet (in query mode) but there are restrictions in field length and data type. So here is a way that always works.

Navigate to the Contacts List and save the current query (even an empty query would do).


click to enlarge

Navigate to Site Map -> Administration - Application -> Predefined Queries and retrieve your previously saved query.

Replace anything that might be between the two double quotes after 'Contact'.Search = with
JulianMonth([Birth Date])-JulianYear([Birth Date])*12 = JulianMonth(Today()) - JulianYear(Today())*12

So finally it looks like this:


click to enlarge

In the Household Contact view you can enter some birth dates and run your test in the contact List. I have added the Birth Date field to the Contact List Applet to verify.



List of contacts with a birth date in August
click to enlarge

siebel.exe switches - siebel

...and siebdev.exe too ;-)

siebel.exe, as we all know, is the engine behind the non-zero-footprint flavour of Siebel applications, namely the Mobile Web Client or the Developer Web Client. Some call it fat client, some call it dedicated web client, depending mostly on the year when they first heard about it. Discussions whether the Mobile Web Client is a different installer than the Developer Web Client and whether the Developer Web Client is the same thing as the fat client often reach religious depths.

The installer places a bunch of shortcuts in the windows start menu which usually follow the syntax of

/c

So /c is a mandatory switch because any Siebel applications consists of the very same executable along with a different configuration file from which it reads the rest of its knowledge.

In order to please the more inquisitive among you, find below a complete list of switches that you can use with siebel.exe. If you know of any other switch, please inform us.

Typical switches (used in shortcuts)

/c Path to .cfg file (required), directory path defaults to \bin\enu
/d Datasource (as in .cfg file), defaults to local
/l language (optional, language pack must be installed), defaults to enu
/u Username (optional)
/p Password (optional)
/s Path to spool file (optional, to spool all SQL generated by siebel.exe)

Extra switches

/b Path to Browser executable (optional, for multi-browser testing of customer or partner (SI) applications)
/h Debug Mode (used with Siebel Tools for debugging)
/ctsim (often confused with /ctisim, which does not work ;-) CTI Simulation mode (used for demo)
/editseeddata allows modification of seed data, often referred to in maintenance release guides

And now for siebdev.exe:

siebdev.exe is the engine behind Siebel Tools, which is the only application that does not run in a browser window. However, Siebel Tools is defined in the Siebel Repository and the siebdev.exe works just like the siebel.exe. That is, it reads a .cfg file and an .srf file (the file that newbies usually try to compile to during their first steps with Siebel Tools).

So siebdev.exe accepts most of the switches that siebel.exe does, namely /c, /d, /u, /p and /s.

But there are some additional switches, used in conjunction with the "classic" ones. They have been passed along from consultant mouth to consultant ear for eons before they found their way into the documentation.

/bv runs all validation rules for the entire repository, so take your time
/batchimport automates the import of .sif files
/batchexport automates the export of objects to .sif files
/bc allows to run batch compilation
/tl language (typically used with /bc for multiple language deployments)
/applybatchpatch is used for applying batch patches, or patches in batches.

Have a nice day

Client Side Logging - Siebel

books at bedtime

If you read technical blogs, you get the impression that these guys don't have a life and if they sleep at all, they sleep with the Siebel Bookshelf under their pillow.

I can confirm it is not that bad. However, rtfm ---> http://www.acronymfinder.com/RTFM.html is always a good thing and it sometimes reveals features that are quite helpful.

This post tries to shed some light on the Client-Side Logging or High-Interactivity Siebel applications. You can read the full documentation in the System Monitoring and Diagnostics Guide ---> http://download.oracle.com/docs/cd/B40099_02/books/SysDiag/SysDiagClientSideLogging.html#wp1004801.

Client-side logging for high-interactivity applications writes information to a local log file.

It is useful to close the gap in monitoring that existed in earlier Siebel versions, which means you can now

  • capture browser activity data for troubleshooting, such as when a Siebel Web Client stops responding or fails
  • Log individual user or global session information for a specific Siebel Server
  • Debug the source code using JavaScript
  • Trace the sequences of operations

You can enable Client-Side Logging either by setting the SEBLCL_TRACEMODE environment variable on the client machine or setting parameters for the object manager component on the Siebel server like in the following example:

change param
ClientSideLogging=True,
ClntTraceMode=1,
ClntLogFileSize=50,
ClntLogArchiveCount=5,
ClntLogDirectory=D:\SiebelLogs,
ClntTraceUnicode=true
for compdef SCCObjMgr_enu

Once enabled, log files are created in the given local directory of each client. Let's look at a typical file's content.


click to enlarge

So each entry in the file shows which area it belongs to along with the log level, timestamp and - most notably - a SARM id, which allows you to correlate the client file content with SARM files from the server components.

So it is possible to trace a complete client session from the the click in the browser to the operation in the database connector layer of the object manager.
All Rights Reserved