Monday, April 28, 2014

Siebel Open UI: Default Applet Override

One of the lesser known facts about Siebel Open UI - as of Innovation Pack 2013 which introduced database-stored manifest data - is that we can not only register JavaScript files (or web templates) with specific user interface objects but also create default entries for them, so the files will be loaded for each object of the same type. Something we could call a "global override".

Using a global override is superior to using the postload event handler which might soon become bloated with all the stuff you want to achieve on non-specific objects.

Recently, I had some time to investigate this feature a bit more closely. Some of my dear readers might remember the "See-Through Applets" which involves a double-click event handler. When a form applet is double-clicked, the labels are replaced with metadata from the business component layer. Another double click reveals the table and column names where the data is stored. The final solution I presented used a postload event handler.

You can find a detailed description of the see-through applets here and here.

Siebel form applet in "see-through" mode ;-)
So let's see how I adjusted the see-through applet code to work with a global override. The goal was again to enable the functionality on every form applet with a minimum effort.

1. Create a physical renderer extension

The first thing I did was to create a physical renderer extension file. Just the "normal" thing

2. Register the custom file as a default entry

Next, I followed the usual steps to register the file in the Manifest Files view of the Administration - Application screen.

In the Manifest Administration view, the big difference was to query for the seeded DEFAULT FORM APPLET entries in the UI Objects list and copy the existing entry for the Physical Renderer usage type.

Then I proceeded to add an expression and my custom file (as usual). Here is the result:

Click to enlarge
The Open UI framework will read all entries and ensure that the as-delivered files and the custom overrides are loaded whenever a form applet needs to be renderered.

3. Implement the double-click handler

Now I was able to migrate the code which defines the double-click functionality from my custom postload event handler to the new default physical renderer extension's ShowUI method. In fact I could comment out some lines as it was no longer necessary to establish a "connection" to the form applet. Another benefit of staying inside the framework ;-)

The ShowUI method of the override physical renderer. Click to enlarge.
4. Test

I retired (i.e. commented out) the code in the postload event handler and reloaded the browser cache and voil?, the same as before but without extraneous code in the postload event handler.

Summary

"Global overrides" or default entries are a great alternative to clogging your postload event with JavaScript code. At the time of writing, there are various seeded default entries for form, list and tree applets which you should copy to create your custom default entry. Future versions might see other default entries such as for views.

have a nice day

@lex

Siebel Open UI: Default Applet Override

One of the lesser known facts about Siebel Open UI - as of Innovation Pack 2013 which introduced database-stored manifest data - is that we can not only register JavaScript files (or web templates) with specific user interface objects but also create default entries for them, so the files will be loaded for each object of the same type. Something we could call a "global override".

Using a global override is superior to using the postload event handler which might soon become bloated with all the stuff you want to achieve on non-specific objects.

Recently, I had some time to investigate this feature a bit more closely. Some of my dear readers might remember the "See-Through Applets" which involves a double-click event handler. When a form applet is double-clicked, the labels are replaced with metadata from the business component layer. Another double click reveals the table and column names where the data is stored. The final solution I presented used a postload event handler.

You can find a detailed description of the see-through applets here and here.

Siebel form applet in "see-through" mode ;-)
So let's see how I adjusted the see-through applet code to work with a global override. The goal was again to enable the functionality on every form applet with a minimum effort.

1. Create a physical renderer extension

The first thing I did was to create a physical renderer extension file. Just the "normal" thing

2. Register the custom file as a default entry

Next, I followed the usual steps to register the file in the Manifest Files view of the Administration - Application screen.

In the Manifest Administration view, the big difference was to query for the seeded DEFAULT FORM APPLET entries in the UI Objects list and copy the existing entry for the Physical Renderer usage type.

Then I proceeded to add an expression and my custom file (as usual). Here is the result:

Click to enlarge
The Open UI framework will read all entries and ensure that the as-delivered files and the custom overrides are loaded whenever a form applet needs to be renderered.

3. Implement the double-click handler

Now I was able to migrate the code which defines the double-click functionality from my custom postload event handler to the new default physical renderer extension's ShowUI method. In fact I could comment out some lines as it was no longer necessary to establish a "connection" to the form applet. Another benefit of staying inside the framework ;-)

The ShowUI method of the override physical renderer. Click to enlarge.
4. Test

I retired (i.e. commented out) the code in the postload event handler and reloaded the browser cache and voilá, the same as before but without extraneous code in the postload event handler.

Summary

"Global overrides" or default entries are a great alternative to clogging your postload event with JavaScript code. At the time of writing, there are various seeded default entries for form, list and tree applets which you should copy to create your custom default entry. Future versions might see other default entries such as for views.

have a nice day

@lex

Friday, April 25, 2014

Looking for a Siebel Job?

In association with Bruce Daley's Siebel Observer publication, the Siebel Essentials blog now supports Siebel job seekers around the world with a simple submission form on the sidebar.


So if you are looking for a Siebel job, please fill in the form on the sidebar or here and submit it. The information you enter will be processed by the Siebel Observer. Bruce asked me to pass on the following message.



Are You for Real? 

Yes I am an actual person and not a brand. I am real and even have been quoted in the Wall Street Journal, the New York Times, and the Financial Times of London about Siebel. Much as I like software bringing people together is something I like even more. Back when I was a kid I was always introducing best friends to one another. After college I introduced a lot of future husbands and wives to each other. Now I am turning my attention to helping people with Siebel skills find openings.

Lately I have been thinking a lot about employment and believe jobs is an issue world wide. This is my attempt to make things easier for people to find the work they need to lead happy, secure, productive lives.  

Help me help you

I truly believe that through grassroots word-of-mouth marketing we've created the best job site for Siebel talent in the world. But that has only happened from people passing on this information to friends, colleagues, and former colleagues who are either actively looking for a new position or are currently employed and looking to move forward in their careers.

I'm always looking for new ways to improve the connections I make and welcome advice on how to make my efforts more effective. Drop me a line if you have any thoughts about how to do this, or the Siebel job market, or anything else I can help you with.

In the meantime use the form found here on Alex's site to help me help you.

All the best,

Bruce Daley
Editor, Siebel Observer

have a nice day

@lex

Thursday, April 24, 2014

April Repost: Requirements Analysis

Time for our monthly blast from the past. Below is a five year old article which I believe is timeless, especially in times of Siebel Open UI (scripting). Please enjoy...

(Note: Links have been slightly updated)
***

This is a follow-up post (and the first in a semi-series) on the scriptless Siebel challenge.

Question: Why is so much script code written in Siebel projects?


Possible answers (not a complete list, add your own...):
  • Developers are used to write code (we have been coding since Siebel 99, haven't we?).
  • Workflow, Business Rules, etc are nice but they are difficult to learn/manage and we don't have time to evaluate solutions.
  • Architects and developers don't know that alternatives exist.
As we all agree, the best time to avoid writing custom code in standard enterprise applications is design time. So it's the responsibility of the business analyst or technical architect to design a code-free solution for a given requirement.


Back in the Siebel days (and also today in Oracle days) we spent a lot of time and effort to develop and deliver trainings for business analysts. During these trainings we teach a process based approach to gather and analyse requirements. A business analyst or technical architect involved in a Siebel CRM project needs many skills. Analytical thinking, process orientation and a strong knowledge of the product features is key to a successful design phase.

You might want to read more about business process analysis here and here.


Starting with the high-level process, the business analyst should collect the information and requirements for each step of the process. As the requirements become more detailed, they have to be analyzed whether the standard application ("vanilla", "out-of-the-box") meets those requirements.

We can depict a process for analyzing requirements as follows:



You can minimize the amount of script code dramatically when you apply this simple decision process to any functional requirement.
  1. Evaluate whether the requirement can be met by using out-of-the-box (OOB) functionality.
    Examples: Export data to Excel (List Applet), modify the tab layout (User Preferences), save records as a template for others (Quick Fill Templates), predefined queries to name but a few.

  2. If there is no OOB solution (a gap situation), there is a high probability that you will find an administrative way to modify the application behavior.
    Examples: Audit Trail, State Model, Activity Templates, Business Rules, Data Validation Manager, Personalization, Runtime Events and everything else you can manage using the administrative screens.

  3. There are still many requirements left which you can meet by declaratively configuring the application using Siebel Tools.
    Examples: Create/modify applets, views and screens; set default values; define user properties; create workflows, etc.

  4. The (possibly very small) remainder of the requirements can be met by adding the missing functionality by writing script code. The best possible place for your code are business services. Applying industry best practices and using standard business services wherever possible limits the amount of script code that you will have to manage.
have a nice day


@lex

Wednesday, April 23, 2014

System Activity Object - Email Activity of new business Component


This might be a common knowledge that Siebel creates an activity record when you send an email out using F9 functionality. You can see these activities either in Communication Screen” –>Communication List View (shown below). It shows you the body of the email, attachments and details like who sent the email out and to whom the email was sent.
image
You can also go to Activities Screen – Activity List applet ->All Activities view and query for activities of type Email – Outbound (shown below) and see the similar details.
image
Now what is interesting is that if you send these emails out from Opportunity, Service Request or Accounts view Siebel automatically populates corresponding Id of the record resulting in creation of relationship with the communication (activity record) and the source record from which communicationwas initiated.

image image
This happens behind the scenes and you don’t really have to do anything to make it happen. Now if you wanted same thing to happen in case email was being sent from a custom Business Component then you would have to understand how it happening? As the the title of the post says it happens through “System Activity Object”.
Go to your Siebel Tools and open the Options –> Object Explorer to add “System Activity Object” to your visible object list and you would see something like this
image
Now, All you need to do is add you custom business component and provide the id field that you would like to store based on which your relationship will be derived as shown below
image
You can use 6 Id fields available to you and store additional data corresponding to that entity including the Contact Id , Account Id tied to that particular entity which allows you to show relatedcommunication under contacts and accounts.
I would like to thank “Ankush Sood” for providing idea for this post. Questions and comments are welcome. I hope this helps!!

Monday, April 21, 2014

RIP Siebel Management Server (and Agent)

It is with mixed feelings that I share with you Oracle Support document1640801.1. Titled "Siebel Management Server Support Statement of Direction - Siebel CRM Innovation Pack 2014" the short article announces the de-support of the Siebel Management Server and Siebel Management Agent as of IP 2014.

The typical answer I get when I talk to Siebel admins and developers is that they "installed it once" or "must use it for ADM". Overall, the management infrastructure - developed before the Oracle acquisition by Siebel Systems and first shipped with Siebel 8.0 by Oracle - did not get much love from the community.

Personally, I assisted some customers in setting it up, mainly for ADM (Application Deployment Manager) purposes, and I also dedicated a chapter of my first book to it. The configuration process was complex to say the least.

As some of you might remember, the management server also included the Siebel Diagnostic Tool which was soon to be sunsetted as of version 8.1.1. Here is a nostalgic screenshot:


Pulling SARM data through the management agents and aggregating it in a browser console was certainly a good idea but Oracle is promoting its own Enterprise Manager and Realtime User Experience Insight (RUEI) to be more up to the task of performance monitoring and diagnostics.

In the aforementioned article, Oracle also announces to provide a replacement for centralized migration of customizations with Enterprise Manager.

In the meantime, customers can still use the "light-weight" variants of ADM, that is using manual or workflow-backed processes to export and import the data.

have a nice day

@lex




Thursday, April 17, 2014

Little Helpers: Clear Cache Browser Extension

Among the uncountable browser extensions for Google Chrome, there are many which prove useful for the weary Siebel Open UI developer.

One of these extensions should stand representative for them all, and I really use it a lot.

The extension is simply called "Clear Cache", and this is exactly what it does. What I particularly like are the options which allow total control over what part of the browser cache is wiped out and whether to reload the active tab right away.


I also configured a keyboard shortcut, so I can tell you, I am saving a lot of clicks while working on my Open UI scripts.

What is your favorite extension for Open UI related work? Drop it in the comments.

have a nice day

@lex