יום חמישי, 27 בפברואר 2014

February Repost: Upgrade Helpers

This is a repost from February 2009, seems that upgrading Siebel CRM doesn't go out of fashion anytime soon, especially with Innovation Pack 2013.

It appears that many of those Siebel consultants are busily upgrading and I think that timeframes are challenging as always ;-)

The following command line utilities are here to help you during the upgrade and save your precious time (you'll need it for other tasks ;-). Please note that the list below is not complete.

1. Log Parser

When Siebel Upgrade Wizard performs the Upgrade Database Schema (upgrep) and Upgrade Physical Schema (upgphys) and any other step against the database, it forwards the command line utilities' log files to a central directory, a subfolder of the Siebel Server's log directory. You can run the logparse executable from the command line and generate a nice and pretty html summary.




The logparse utility is also useful to summarize tasks not related to an upgrade such as a repository migration (notoriously known as dev2prod). You can easily automate it, archive the directory and keep it for later reference.

2. cfgmerge utility

So you merged your repositories? What about the Siebel Enterprise configuration data stored in the Gateway Name Server's siebns.dat file?

On your new Siebel 8.1 production server you will need your custom components as well as the nifty new components from Oracle (such as ADM, BIP etc.).
Using cfgmerge on the command line you can create an input file for the srvrmgr command line. You have to edit the file before you run it against the target enterprise.

The utility merges parameter based data for components that exist in both configurations. So if you want to use it for a custom component, you have to create a component with the same name in the target enterprise before you run the utility. The input file will then help you to update the parameter values.

The cfgmerge utility is also suitable for other tasks outside the upgrade process.

3. utleimdiff

This utility is provided to identify differences in EIM tables and their mappings between two repositories (usually Prior Customer Repository and New Customer Repository). During a recent upgrade project, I found that the utility behaves a little odd in 8.1.1. But it's worth to note that it exists.

If you feel that you need more information on a Siebel CRM upgrade and how to do it, please add a comment to this post. Oracle University offers a Siebel Upgrade Workshop on a private event basis.


Have a nice day


@lex

יום שני, 24 בפברואר 2014

Siebel Open UI: Alternating Row Colours

With a huge hat tip to fellow Siebelite Duncan Ford, here is a quick solution to show rows in list applets with alternating colours. Like this:


Duncan has provided the following CSS rules which, when added to a custom style sheet, do the trick. Totally without any JavaScript coding.

.ui-jqgrid .ui-widget-content:nth-child(odd) {
    background: #e4bf66;
}
.ui-jqgrid .ui-widget-content:nth-child(even) {
    background: #f9e6b7;
}
tr.ui-state-highlight {
    background:rgba(0, 0, 0, 0.2) !important;
}
.ui-jqgrid .ui-state-highlight, .ui-jqgrid .ui-widget-content .ui-state-highlight, .ui-jqgrid .ui-widget-header .ui-state-highlight {
    background:initial;
}

As you can see, CSS can distinguish odd and even children of a selection. I have seen quite a lot of jQuery code which accomplishes the same (and of course allows for a more dynamic colouring). But you can't deny the purity and simplicity of CSS.

Many thanks to Duncan for sharing this.

have a nice day

@lex

יום חמישי, 20 בפברואר 2014

Actuate Acquires legodo ag

In his Siebel Observer publication, Bruce Daley informs us about the recent acquisition of Germany based legodo ag by Actuate. For seasoned Siebelians, Actuate rings a lot of bells as it was the primary reporting tool integrated with many versions of Siebel CRM until Oracle replaced Actuate Reports with its own BI Publisher tool.



Actuate Corporation (NASDAQ: BIRT) has acquired legodo ag. Based in Karlsruhe, Germany, legodo develops software to allow organizations to tap into information stored in existing applications to create personalized customer communications.  More than 40,000 people have used the software in organizations like Deutsche Bahn, Deutsche Telekom, GEHE Pharmahandel, Lufthansa, Swisscom, Telenor, and Telefonica. The company has a catchy tag line - Now it's personal.

“The acquisition of legodo extends Actuate’s offering with tight integration to Siebel among other packages,” said Steve Jones, Co-Vice President and Co-General Manager of the Content Services Group at Actuate.

The legodo Customer Communications Suite accesses systems such as Oracle Siebel, SAP, Salesforce, Sugar CRM, and the Oracle Sales Cloud with preconfigured interfaces frequently bypassing the need to program. Connectors to SQL, text, and Web services are also available.

“Many companies have invested a great deal of effort and money in putting in place CRM systems to obtain detailed information about their customers,” said Marc Koch, formerly CEO at legodo. “But when it comes to using that information in communications to customers, this knowledge is often not utilized to provide a customer with a personal experience.”

Marc Kresin, formerly legodo’s CTO and Chief Product Manager, and Koch have joined Actuate as Director of Product Management, and as Director of Marketing, respectively, within the Content Services Group at Actuate. Both were consultants at Siebel Systems previously in their careers.

This post originally appeared on the Siebel Observer web site.

If you want to see legodo for Siebel CRM in action, here is a video.
Fellow blogger and friend Richard from OnDemand Education has posted his views on the acquisition here.

have a nice day

@lex

יום שני, 17 בפברואר 2014

Siebel Open UI: Contact Tiles and Images

One of the many new features in Innovation Pack 2013 for Siebel Open UI are different visual display modes for list applets.

Using tiles makes sense on mobile devices as they are easier to select by tapping. But also in desktop applications, tiles can make dull lists more visually appealing. The Contact List Applet for example comes with two new buttons which allow us to toggle between "Grid" (i.e. classic list) and "Tile" mode.

Below is a screenshot of the Contact List Applet in tile mode taken using the Siebel Sample Database.


Apart from the as-delivered fields such as full name, address, email address or phone number, the ability to store and display an image along with the contact data stands out. Alas, the sample database does not provide sample images...

In addition, it is not too obvious how to add an image (or a reference/link) to a contact record at first glance. After a bit of investigation and with a little help from my friend and fellow author Jan, here is a solution.

The initial problem seems to be that the new BC field named Image Source Path is not exposed by default in the Edit List template of the Contact List Applet in the vanilla Siebel Repository.

So let's go to Siebel Tools and ensure that the field is exposed as a list column in the Edit List template (note that it has to be the Edit List template, not the Edit Tile template).


The properties for the list column should be set as follows:

Field: Image Source Path
HTML Type: Image Control
Show In List: TRUE

After compiling the applet, we can launch the application and test. We can now use the new list column to add a URL to an image file to a contact record.

For example, you could pick a contact image URL from LinkedIn, like this one:
http://m.c.lnkd.licdn.com/mpr/mpr/shrink_100_100/p/1/000/025/1a0/0c62faf.jpg

After leaving the column, the image immediately displays, which distorts the list. But let's ignore this and switch to tile mode. Lo and behold, images are displayed just nicely.


User Preferences

With the new tile display, there are also some new user preferences which you will find in the Behavior view.

The Visualization preference allows you to select your preferred default visualization (Grid, Tile or Map) and the Default Scroll Speed preference controls the velocity of the tiles when you use the scroll icons.

Summary

With some small tweaks, we can bring the images on the new contact tiles to life.

have a nice day

@lex

יום חמישי, 13 בפברואר 2014

Siebel Open UI Manifest Expressions and System Preferences

Introduced in IP 2013, Manifest Expressions can be used to evaluate conditions whether a certain set of JavaScript files or a certain web template file should be loaded for a given user interface object.

Oracle ships some interesting standard expressions:

Some Siebel standard Manifest Expressions in 8.1.1.11
We can inspect those standard expressions by navigating to the Administration - Application screen, Manifest Expressions view.

Most of the standard expressions use either the GetProfileAttr() method or the new GetObjectAttr() methods to match the value of either a profile attribute or an attribute of an applet with a string.

My first impression was that obviously we can use Siebel Query Language to construct complex expressions. So I started experimenting...

One of my first experiments was built on the idea that it could be worthwhile having a central "switch" for enabling or disabling Open UI customizations. Here is the cookbook I came up with:

1. Create a System Preference

First, I navigated to Administration - Application - System Preferences and created a new system preference as follows:

System Preference Name
AHA Show Customizations
System Preference Value
TRUE

When set to "TRUE", the system preference should "tell" the Open UI framework to load customizations such as a custom physical renderer for an applet. When set to "FALSE", no custom files should be loaded.

2. Create a Manifest Expression

In the Manifest Expressions list, I created a new record as follows:

Name
AHA Show Customizations
Expression
SystemPreference("AHA Show Customizations") = 'TRUE'

As you can see, I resorted to the SystemPreference() method of the Siebel Query Language to get the value of my new system preference. The new expression would evaluate to "true" when the system preference has a value of "TRUE" and vice versa.

3. Use the expression

Finally, I have to employ the new expression with a user interface object. For my experiment, I associated the new expression with the Opportunity form applet which has been my victim for a while now.

Click to enlarge
As can be seen in the screenshot, I added a custom physical renderer to the Opportunity Form Applet - Child. I used my new expression and associated it with the custom JavaScript file.

As a result, the custom physical renderer should only be loaded when the system preference is set to "TRUE". A quick test proved that it worked as expected.

Here is the applet with the system preference set to TRUE:


Note the highlighted customizations (progress bar, slider and clickable account label).

And here is the same applet after setting the system preference to FALSE (and restarting the application):


As you can (or cannot) see, the customizations have disappeared; the applet is displayed in "vanilla" mode.

Summary

Open UI manifest expressions can be put to good use to evaluate almost any condition using Siebel Query Language.

Caveat

During my experiments, I found that not all Siebel Query Language "tricks" worked. For instance, I couldn't get InvokeServiceMethod() to work. If anyone wants to shed some light on this, please find the comments.

have a nice day

@lex

יום רביעי, 12 בפברואר 2014

Siebel CRM Patchset 4 for Innovation Pack 2013 Released

Yesterday, Oracle has released the 4th patchset for Siebel CRM Innovation Pack 2013 which provides cumulative fixes and features for Siebel 8.1.1.11 and 8.2.2.4.

The official version numbers are 8.1.1.11.4 and 8.2.2.4.4. (a feast for numerologists ;-)

As a frequent reader of this blog, you are aware that Oracle has started shipping monthly patchsets for the latest Siebel Innovation Pack releases.

As with all patches, the package is available for download on My Oracle Support.


The Readme document combines release notes and installation guide. Good old opatch is taking care of placing the new files onto your disk, so make sure you follow the instructions to avoid surprises.

Here are some areas which benefit from the patchset in terms of issues addressed:
  • Siebel Order Management
  • Open UI
  • Mobile Applications (connected and disconnected)
have a nice patch

@lex

יום שני, 10 בפברואר 2014

Siebel Open UI: View PRs - a Toolbar to quickly access Applets

by Jan Peterson

In a previous post we already looked at physical renderers for views. Today we look at an example that was in a similar form part of the first pre-beta demos of Open UI (yes - the version that was shown during OOW 2011 :-) ) - a toolbar of buttons where each button represents an applet.

In our example, clicking the button will collapse all other applets (which is slightly different to the OOW 2011 demo where the corresponding applet was floating to the top):

Click to enlarge
The code structure of the PM is essentially the same as in the previous example:

Click to enlarge

Most of the logic resides in SetRenderer:
Click to enlarge
First, we create two buttons - one for collapsing all applets and one for expanding all applets.
Afterwards, we iterate through all applets and make sure that they are collapsible - a trick we looked at in a previous post.

Afterwards we create a button for each applet. The button-text is the label of the applet. As a small gimmick we add the number of records in the applet to the button-text. Pressing the button calls the method CollapseApplets which will collapse all applets but the applet linked to the button.

Finally, we inject the different buttons into the view.

In summary, View PRs allow to easily add additional UI features to views. In the example we create a toolbar which simplify access to applets in complex views.

have a nice day

Jan

יום חמישי, 6 בפברואר 2014

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

יום שלישי, 4 בפברואר 2014

How to set your custom theme as Default theme

In Siebel Open UI, user can change theme from their user preferences.  If they did not choose any thing a default theme will get loaded. By default that is "Gray Tab".

Suppose you created a new theme called "Golden Tab" and you have to make it by default, Otherwise we have to force our clients to change their theme from their user preference and that is not recommended.
You can change this thing by using some tool level change.

In order to do that please follow the steps.


1. Using Siebel Tools, navigate to "User Preferences" BC.
2. Update the calculated value for field "Behavior/DefaultTheme" to "<custom theme>"
3. Update the Predefault value for field "Behavior/DefaultTheme" to "<custom theme>"
4. Compile the changes and re-test the behavior

You will need to remove the user pref file (spf) file to make the changes take effect.


יום שני, 3 בפברואר 2014

Siebel Open UI: View PRs - Sort 'em out

Thanks to Jan again for this guest article

***

In prior releases of Open UI most configurations were limited to a single applet. Presentation Models (PMs) and Physical Renderers (PRs) could be reused for different applets but - apart from CSS changes - there was no documented way to provide changes outside of applets or enable configuration that spawned more than a single applet. Most of the time such changes ended up in the (undocumented) postload.js.

A feature that didn't make it into the first release of IP2013 but ended up in the first patchset are PMs and PRs for views  (I am pretty sure that I saw this documented in the release notes of patchset 1 - unfortunately I am unable to find the note - please drop me a note with the link if you have the URL at hand).

In case you are unfamiliar with the new concepts of patchsets have a look at Latest recommended maintenance pack for Siebel Open UI on Siebel Version 8.1.1.x and Version 8.2.2.x [Document 1535281.1]  which states:

 "For Siebel CRM version 8.1.1.11 and 8.2.2.4 (Innovation Pack 2013, also known as IP2013), Siebel Open UI fixes will no longer be shipped in monthly quick fix (QF) format but be part of the monthly IP2013 patchsets. For IP2013, regular fixes (including Siebel Open UI fixes) will be shipped as part of monthly bundles called Siebel IP2013 patchsets. These fixes also, are cumulative, meaning the fixes included in IP2013 Patchset 1 will be included in IP2013 Patchset 2".

View PM and PRs significantly mitigate the need to add code to postload.js. In the following we look at an example that enable two things in the vanilla view Contact Summary View:
  1. Making all applets in a view resizable
  2. Allowing to drag&drop applets without loosing a grid layout.


Creating a View PR follows the same steps as creating an Applet PR:

First, we create the PR code proper and save it in the custom folder. Kudos to Duncan Ford who wrote the first version of this View PR. 
    Click to enlarge
    As bookshelf doesn't contain any reference to View PRs (yet?) I spent a bit of time looking at the different events. So far I found four methods that are called:
    1. Init: the first method that is called. In the example, we use a complex looking CSS selector to identify the bottom four applets in our view. Afterwards we flag them with a class and and unique id and apply the JQuery-method sortable to the applets. This allows to drag and drop the four bottom applets in the view.
    2. Setup
    3. SetRenderer: In the example we iterate through all applets in the current view and apply the JQuery-method resizable to them which allows to dynamically resize all applets. SetRenderer is the first method in the chain in which GetAppletMap returns a list of applets. In Init and Setup the method returns an empty array.
    4. EndLife - called when a user navigates to a different view. It seems that it gets called twice.
    5. None of the methods seem to provide any predefined behavior but are just empty hooks. As an interesting matter of fact, ShowUI, BindData and BindEvents -as used by Applet PRs - are not called for View PRs. In case you are intested in the details have a look at the proxy file pmodel.js which defines the root class for View PMs.
      Using the new manifest view we need to register the custom .js file and link it against a view. Apart from selecting a type View instead of Applet in the UI Objects applet there is no difference to the process described in Siebel Open UI Manifest Administration Changes in IP 2013.

        Click to enlarge
        Playing around with the example it is obvious that the code is not production ready:
        1. It is possible to resize applets in a way that make them unusable.
        2. Changes are not persistent - refreshing the view makes all changes void. However, it should be simple to store the information in cookies as explained in Siebel Open UI Tab Layout: Sort 'em out - Part 2
        In summary, View PRs and PMs open up a new range of configuration options and significantly reduce the need to add code to postload.js. Documentation is essentially non-existent at the moment but using the knowledge from applet PMs and PRs it is easy to create PMs and PRs for views.

        have a nice day

        Jan