Friday, October 31, 2014

Interview with Yassine Kabbaj of Siebel Private Cloud

Here at Siebel Essentials, we are always on the watch for interesting developments around Siebel CRM. A few weeks ago, a new company - Siebel Private Cloud - appeared on the internet. They offer Siebel CRM in the cloud, ranging from sandboxes to full production scale deployments without the hassle of installing, maintaining and securing a Siebel server environment.

An offering like this brings up a lot of questions, so we contacted Yassine Kabbaj, founder and CEO of Siebel Private Cloud and he was so kind to agree to the following email interview.


Siebel Essentials: What were the reasons why you founded Siebel Private Cloud?
Yassine Kabbaj: After 15 years of Siebel Consulting, I've decided to launch this project for the following reasons:
  • I believe Open UI will give a new breath to this market as it is heading up the right way and opening so many doors.
  • Too many resources are spent setting up and maintaining Siebel environments and my ambition is to provide time and cost effective reliable solutions to start with.
  • Consulting was a great way getting into and understanding IT business, but after a while, I felt I wasn't learning much anymore. It was time to look for new challenges.
SE: What are the offerings of Siebel Private Cloud?
YK: The following services are currently available:

Siebel Sandbox: Appropriate for evaluation, demo or training.
  • One dedicated virtual server for the database instance (Oracle Database 11g Express Edition)
  • One dedicated virtual server for Siebel (Gateway, Siebel Server, Siebel Web Server)
Siebel Development: Appropriate for development and testing
  • Dedicated root server for complete Siebel development environment
  • One dedicated virtual server for the database instance (Oracle Database 11g Express Edition)
    • Four pre-installed Siebel schemas (Development, Test, Acceptance, Training) 
  • Four dedicated virtual servers for Siebel (Development, Test, Acceptance, and Training)
  • Online secured VPN access
  • Daily backup
Siebel Production: Appropriate for Siebel production environments
  • Two dedicated root servers for complete Siebel production environment 
  • One dedicated virtual server for the database instance per dedicated root server (Oracle Database 11g Release 2)
  • One dedicated virtual server for Siebel per dedicated root server 
    • Pre-installed Siebel native load balancing over the 2 dedicated root servers 
  • Online secured VPN Access
  • Daily backup
Siebel Toolbox Server (coming soon):
  • SVN server for Siebel Tools source code integration. 
  • Mantis bug tracker.
  • Jenkins continuous integration system to manage, monitor and execute repeated Siebel jobs (compile, deployments, integration, testing etc ...). 
  • Big Data and Analytics integration
SE: Do your offerings include Oracle product licenses?
YK: Oracle Siebel and Oracle Database license keys are not included. Customers need to obtain license keys through the appropriate channel from Oracle.

Sitemap of the Siebel Sales demo application provided by Siebel Private Cloud.
Click to enlarge.
SE: Can you share some technical details for our readers on the hosting?
YK: Our data-center is located in Germany. It is fitted with redundant network, high-speed access to all internet uplinks, 24/7 monitoring, Juniper routing technology and 620 Gbit bandwidth. The minimum availability of the network is 99%. The servers come with high-performance Intel® Core i7-4770 Quadcore processor and the Haswell architecture.

We use the following software and technologies: 
  • Ubuntu 14.04 Server for Siebel DB 
  • Oracle Linux 5 Server for Siebel Servers 
  • Virtualbox for virtualization 
  • Hadoop and MapReduce for Big Data 
  • Pentaho for analytics
SE: Which Siebel applications are you offering?
YK: We offer all available Siebel applications.

SE: What about highly integrated applications like Siebel Marketing, Universal Customer Master, or Public Sector? How can customers manage the integration with Oracle BI, OEDQ or OPA?
YK: Our Siebel environments are connected via VPN. So basically integration with other applications is more a matter of the quality of the SOA architecture and integration best practices than the Siebel environment itself. In other words, if the pre-existing SOA architecture has been implemented in a loosely coupled manner, than the integration with the Siebel environment should go smoothly.

SE: How will you support customization?
YK: Our service packages are based on Siebel environment templates. Unless it is absolutely necessary, we highly discourage our customers to customize their environments in order to avoid complexity and the resulting maintainability issues. Although it is impossible for our templates to cover all the situations, we constantly try to provide a complete solution able to answer all the potential Siebel business needs in a reliable efficient and cost effective way. We provide full support for Siebel configuration development integration and migration which his is discussed on a case to case basis with our customers according to their specific needs.

SE: Do customers have full Siebel Administrator responsibility to manage their applications and servers? 
YK: Indeed, customers have full Siebel administrator responsibilities to manage their applications and servers. It is their own responsibility to set their own limitations according to their resources' skills.

SE: With the announcement of Oracle to bring Siebel Tools to the web in a future version, will you support it when it arrives or is it too early to tell?
YK: Unless we hit a real blocking issue (which a priori should not happen), we will definitely support Siebel Tools to the web when it arrives.

SE: Could customers use the Siebel Open UI API to create custom themes and JavaScript files (and upload them to the web server)?
YK: Yes, the Siebel web server is co-located with the Siebel application server and the developers have access to the appropriate folders and resources.

SE: What kind of backup plans do you offer for your customers?
YK: Siebel servers are virtual machines which allow daily snapshots (or more frequently if needed). Virtual machine snapshots are used for recovery and implementation rollback. Siebel databases are backed up daily but as virtual machines they can also benefit from the snapshot recovery and rollback feature. More generally, we try our best to help and support our customers and to adapt environments to their specific needs.

SE: Will you offer upgrades to future Siebel versions?
YK: The upgrading to future Siebel versions is indeed a service that we offer.

SE: What message do you have for the Siebel community?
YK: Siebel has not had its last word!


Many thanks to Yassine for this interview and good luck with Siebel Private Cloud.

have a nice day


Thursday, October 30, 2014

PacktLib Plus: 5 Free eBooks or Videos

As you might know, Packt Publishing offers PacktLib, an easy-to-use subscription for ebooks and videos. With this offer you get one free download per month.

When you subscribe to PacktLib until November 4th, you can get even more for your money: PacktLib Plus

With PacktLib Plus you get additional five eBooks or videos (worth up to $150) for free in the first month.

Don't miss this offer. Click here to find out more.

have a nice day


Monday, October 27, 2014

Siebel High Interactivity Clients and IE 11 Enterprise Mode

With a bow to the good people at ec4u expert consulting, I am pleased to present in this article a white paper they put together on a feature of Internet Explorer 11 which is known as Enterprise Mode.

In times where IE 8 is the last version that is officially supported by Oracle, customers who have - for whatever reasons - decided not to migrate to Siebel Open UI in the near future and stick with the ActiveX based High Interactivity client, IE 11 Enterprise Mode is the 'silver lining' and allows them to provide end users with modern versions of both Microsoft's operating system and browser.

Please note that this article is a replication of the ec4u white paper and makes no statement whatsoever about Oracle's support policies. Please always contact Oracle Support if you have doubts or questions regarding supported platforms for your Siebel deployment.

Having stated the above, here is the article provided by ec4u:


1. Functionality

Enterprise Mode for Internet Explorer 11 solves compatibility issues that occur with older Web apps.
For example:
  • Enterprise Mode replicates the Internet Explorer 8 user agent string, to express applications which use browser detection.
  • For ActiveX controls, that query the browser version, Enterprise Mode imitates Internet Explorer 8 responses.
  • Some older Web apps use CSS expressions to position buttons or other items. Because these and other features were removed in Internet Explorer 11, Enterprise Mode brings them back.
2. Manually Activate Enterprise Mode

To activate and deactivate Enterprise Mode manually for websites it needs to be activated in the Group Policy Editor:
  1. To open the Group Policy Editor press the Windows-Key + R, enter “gpedit.msc” to the dialog and confirm with enter.
  2. In the Editor Window navigate to User-Configuration > Administrative Templates > Windows Components > Internet Explorer.
  3. Scroll down to “Let users turn on and use Enterprise Mode from the Tools menu option”, open the entry with double-click and activate it.
  4. Additionally enter an URL, where reports about the usage of the Enterprise Mode will be saved.

To use Enterprise Mode, Internet Explorer must be restarted. In a new Internet Explorer Windows navigate to Menu > Tools > Enterprise Mode.

3.1 Turn on Enterprise Mode and Use a Site List

Before you can use a site list with Enterprise Mode, you need to turn the functionality on and set up the system for centralized control. By allowing centralized control, you can create one global list of websites that render using Enterprise Mode.

Enterprise Mode works on Internet Explorer 11 running on Windows 8.1 Update, Windows Server 2012 R2, Windows 7 SP1, or Windows Server 2008 R2 with SP1.

3.1 Activate using Group Policy
  1. Open the Group Policy Editor.
  2. Navigate to  Computer-Configuration > Administrative Templates > Windows Components > Internet Explorer.
  3. Activate “Use the Enterprise Mode IE website list” and type the location of your Enterprise Mode IE website list.

3.2 Turn on Enterprise Mode Using the Registry
  1. Open the registry editor, e.g. regedit.exe.
  2. Navigate to registry key HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseMode (Use Enterprise Mode for current user) or registry key HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseMode (Enterprise Mode for all users on the PC).
  3. Edit the site list registry key to point to where you want to keep your Enterprise Mode site list file (e.g. “SiteList” = http://localhost:8080/sitelist.xml).

3.3 Create a site list

A site list can be created with any text editor. But the Enterprise Mode site list manager is the most comfortable way to do this. Microsoft offers the site list manager for free on

Add a Website to the Compatibility List
  1. Start the Enterprise Mode Site List Manager
  2. Click on “Add” to append new websites to the list. Pick Enterprise Mode if the site should use the new, modified browser configuration or pick Default IE if it should use the latest version of Internet Explorer. “Save” the current website to the list.
  3. Via File > Save to XML the site list is generated and can be saved.
Add multiple websites
  1. Start the Enterprise Mode Site List Manager 
  2. Via the menu got to File > Bulk add from file and choose a TXT- or .XML-File, that contains websites, you want to add to the site list. 
  3. Example TXT-File (You must separate each site using commas or carriage returns.):

The Enterprise Mode Site List Manager creates a XML-File as shown above. The version number is generated automatically and should not be changed manually. To update the site list, import it to the Enterpriser Mode Site List Manager. There you can make your changes and provide them by saving the list to XML.

To provide the Enterprise Mode site list for the users, store it on their local computers or to a network share. It is important, that the location of the site list is stored in the registry key.

Thanks again to ec4u for providing this information.

have a nice day


Thursday, October 23, 2014

Bye bye INFA, Hello ODI

We have come a long way from Siebel Analytic Applications, the grandfather of OBI Apps to Oracle BI Apps 11g. The former became Oracle BI Apps 7.9.x and - as most of my readers will be aware - uses Informatica products for ETL.

Since Oracle launched the 11g version of OBI Applications which use Oracle's very own (ex Sunopsis) Data Integrator (ODI), rumors about the demise of the 7.9.x branch could never be fully squelched.

At OpenWorld 2014, Oracle finally sent the message of focusing solely on OBI Apps 11g, leaving customers using the 7.9.x versions with the option of staying within support but not receiving any updates or migrating to 11g and ODI.

On the Business Analytics - Proactive Support blog, we are informed that Oracle has published a Statement of Direction on My Oracle Support which is indeed worth reading when you are involved with Oracle BI Applications.

Let me quote from this document:

"Oracle will continue to support the 7.9.6.x product series according to the Oracle Lifetime Support policy located at including certifications of databases, operating systems, and enabling 3rd party technologies. However, Oracle will no longer develop new content for this series, nor extend the 7.9.6.x support or any series based on an ETL architecture with Informatica.

Oracle and its Systems Integration partners will provide engagements and limited migration tools to enable customers that wish to migrate forward to the 11g series to do so. As these tools become available, they will be provided on the Oracle Technology Network."

So with moist eyes we witness the end of an era and the rise of a new star: Oracle Data Integrator. If you find yourself in need of training, Oracle University has a new course out already.

have a nice day


Monday, October 20, 2014

Unsung Siebel Command Line Heroes: dataexp

When it comes to getting data out of and into a Siebel database, usually the first tools that come to mind are Siebel EAI business services like EAI Siebel Adapter or Enterprise Integration Manager (EIM). While EIM and EAI provide the richest functionality and are popular for good reason, sometimes we just need to transport some records in a table from one Siebel database to the other.

Such scenarios are often found when it comes to working with non-production environments, such as test instances where we quickly want to establish test records and the like.

In this small series, I would like to discuss two command line utilities that have been around ever since (probably since the very early Siebel versions), namely dataexp and dataimp. In this article, we introduce dataexp and in the next we take care about dataimp.

The seasoned Siebel veteran might have seen dataimp being used heavily during Siebel seed data import, while installing or upgrading a Siebel database.

Siebel bookshelf doesn't mention these utilities very often but for 'backup' scenarios (such as for LOVs here). It is important to note that dataexp and dataimp are low-level flat-file tools that are used internally in Siebel CRM and the general recommendation is NOT to use them for purposes other than simple flat-file data backups. So for example if you want to move your account or contact data from production to test, you better use EIM or EAI.

Some years ago, this humble writer was tasked with migrating data from the Siebel sample database to a server environment (aka 'Sybase to Oracle') and I found solace in using dataexp to extract the data from the sample DB and dataimp to import it into the server database.

Exporting data from a Siebel database using dataexp

You can find the dataexp (and dataimp) command line utilities in the BIN folders of Siebel Tools or the Siebel Server. First let's fire up dataexp without any arguments to get a list of mandatory and optional input arguments.

Obviously /U (Username) and /P (Password) are required as per the argument list, and I think it wouldn't work without specifying /C (ODBC Data Source) and /D (Siebel Table Owner).

Furthermore, you'll need /F to define the path of the export file (if you don't accept the default).

So a first test command looks like the following.

dataexp /U SADMIN /P SADMIN /C ouisandbox /D SIEBEL

In the above example, the ODBC data source name is 'ouisandbox' which should be replaced by an existing ODBC data source for your target database.

If not specified, the dataexp utility will prompt you to enter the path to the export file (default is dataexp.dat) and then will prompt you to specify the name of a table to export. After entering a table name, the data will be exported to the .dat file and the utility prompts for the next table. If you stop providing table names, the utility will exit.

In the example in the screenshot we exported the S_OPTY and S_OPTY_X tables to a file named test.dat.

If you dare to open the .dat file, you will see a veritable mess of readable and binary data. The utility exports all columns of the table by default in binary format (see below). Not for the faint of heart, and certainly not anything you would want to edit.

So let's explore some of dataexp's specialized options or arguments:

File Output Format

The /T argument allows us to specify the output format (see above for the default (b)inary output). Other options are (c)ompressed or (t)ext.

So this command line will result in a text output file which is much more readable (and editable, at your own risk of course).

dataexp /U SADMIN /P SADMIN /C ouisandbox /D SIEBEL /F d:\test.dat /T text

The (c)ompressed option will render a file that is in fact compressed and much smaller in size.

Where Clause

The /W argument - when set to Y - will instruct the dataexp utility to prompt for a where clause which you can use to apply a filter to your source data, so you don't export all rows.

At the prompt, provide a WHERE clause including the 'WHERE' such as the following example.


We Like Table Names

The /K argument - when set to Y - allows you to use the % wildcard while specifying the table name. So for example you can enter S_OPTY%X to define all extension tables for S_OPTY as the source.

Using an Input File

If you want to automate the export process, the /I argument comes handy. A valid input file for dataexp is a text file which contains a list of table names (one table per line). For each table you can specify a WHERE clause. Inspecting the seed_locale.inp file which you find in your Siebel folders yields a good example what an input file can look like.


The default log file is dataexp.log but you can change the path using the /L parameter. The /Q parameter allows to set the logging interval (default is -1, which probably means only log at the end of the process and if you use a value of 1 it turns out to write to the log file every second, slowing down the process considerably).

Reset System Columns

When we set the /S argument to Y, then the following columns will have default values in the export file (not in the source database of course).

CREATED="1980-01-01 00:00:00"
LAST_UPD="1980-01-01 00:00:00"

As you probably know, '0-1' is SADMIN's ROW_ID.

Multiple Files

Using the /M parameter - set to Y - we can split the output in multiple files. This one goes together with the /N argument which defines the maximum file size in bytes. If you specify /N, the minimum number of bytes is 2000000.

As a result, you will find multiple output files if the minimum file size is exceeded. They will have a suffix with the file number such as in export.dat.001 and so forth.

Undocumented Arguments

For the following arguments there is not much information available, so let's consider them for internal use.

/R Read consistency (Default: N): Probably dealing with dirty reads.
/G Use Repository definition (Default: N): Probably used with /Y to read repository metadata
/Y Repository Name (Default: Siebel Repository)


The dataexp command line utility can be put to good use for simple flat-data backups from single tables. Again, please heed the warning that this is NOT fully documented and should NOT replace your usual toys for integrating Siebel with other applications. Rather, see it as a Siebel-to-Siebel tool which is mostly used internally.

have a nice day


Thursday, October 16, 2014

Five Timeless Rules for Successful Siebel Projects

While the near and not-so-near future for Siebel CRM is truly exciting, with so many new things coming up to learn and write about, it is worthwhile to sit back and browse the archives.

Five years ago, after OpenWorld 2009 (!), I cross-posted an article from the Oracle Customer Experience blog (formerly known as CRM Product Marketing blog).

This is what I wrote back then:

Stating the obvious...

After all these years, thousands of Siebel CRM implementation projects and so much experience of thousands of experts in the field, I can't believe that there are still many Siebel CRM projects which ignore one or all of these five simple rules for a successful Siebel CRM implementation (Credits to Divya from the CRM Product Marketing Blog):
  • Standardize on tools and languages
  • Keep customization to a minimum (yes a MINIMUM)
  • Involve end users
  • Communicate with others who have done it before
  • Implement regional or online training for end users
Remember: These are recommendations from companies who successfully implemented Siebel CRM.

What can I say, some advice is timeless. So if you are just in the process of reviving your Siebel CRM project with Open UI, better stick to these rules.

have a nice day


Tuesday, October 14, 2014

Siebel CRM Patchset 12 for Innovation Pack 2013 is Available

Last Friday, Oracle has released patchset 12 for Innovation Pack 2013 marking one year since the inaugural release.

A quick glance at the Readme document (aka Installation Guide) puts this patchset into the 'lots of bugfixes' category, just like the previous one.

have a nice day


Monday, October 13, 2014

Oracle OpenWorld 2014: Strategy and Roadmap for Siebel CRM

Two weeks ago, at Oracle OpenWorld 2014, Oracle held several sessions which focused on the future of Siebel CRM - the world's most complete CRM, as we call it. Our friend and fellow blogger Richard was at the premises and shared many exciting articles (and screenshots) with us.

Now that the dust and excitement has somewhat settled, it's time to reiterate Oracle's statements.

Siebel CRM is at the Center of the Cloud (and it's not Alone)

An image says more than a thousand words. The following is taken from an Oracle presentation.

Personally, I think that this is the most important diagram for Oracle Applications customers at the moment. Oracle, their customers and partners are on their way of bringing decade-long investments in gargantuan on-premise deployments of eBusiness Suite, JDEdwards, PeopleSoft or Siebel CRM to the ever so promising cloud.

And the reality is that for most deployments of huge enterprise-class applications with millions or even billions of transactional records and up to several hundred of interfaces, you cannot just 'pull the plug' and move everything to the cloud.

So naturally, Oracle sees their Applications Cloud as a co-existence and enhancement option for existing investments in on-premise applications. And that means a bright future for Siebel CRM.

A Roadmap for Endurance and Agility

This is the roadmap diagram shown to customers at OpenWorld on various occasions.

Click to enlarge.
Yes, it says 2022+, so there's a commitment from Oracle of delivering yearly Innovation Packs and monthly fixpacks for the next 8 or more years.

Innovation Pack 2014

The imminent innovation pack for this year will bring a lot of new features and enhancements and here on Siebel Essentials we will certainly cover them all once the product is generally available. Some highlights to watch out for (remember this is a roadmap and not final features, the lists below are not meant to be comprehensive).

Siebel Open UI Features expected for IP 2014
  • New single theme (responsive web design) for all applications (desktop and mobile). The message is "Create a view once and deploy it across desktops and tablets".
  • Sidebar (hamburger) screen menu
  • List column lock (freeze)
  • iHelp
  • Flowchart editors (Marketing, Loyalty, Smart Scripts, iHelp, etc.)
  • Hierarchy diagrams
  • (Oracle) map renderer
  • Calendar enhancements
  • Edit and save attachments inline
  • Expression Editor
  • Refurbished Quote and Order screens
  • Product Configurator administration views
  • New communications panel
We've come a long way, haven't we?
What to expect for Siebel Mobile Applications in IP 2014

For Siebel Mobile Applications, the Open UI enhancements listed above mean actually a lot:

Everything that you missed in IP 2013 or before because Siebel Mobile Applications used different renderers (based on jQuery Mobile which will be NO LONGER used in IP 2014) is coming back because now there's a single theme for ALL applications. So this will be soon available on a tablet near you, regardless of what application you're running.

  • MVG (Shuttle)
  • Search
  • Date Picker
  • Signature Capture
  • ...literally everything you have on the desktop, you will be able to use on the tablet.

Besides those already good news, Oracle plans to publish a new mobile application for Financial Services and a container app that allows better access to the device.

In addition, there are several enhancements planned for Mobile Disconnected Applications.

Other Features expected for IP 2014

  • CRM Desktop for Service and Financial Services
  • New OUI installers for Mobile/Developer Web Client and Siebel Tools
  • Simplified IRM process

2015 and Beyond

As demonstrated by Oracle last week, Siebel CRM is headed for the cloud in earnest. This was the slide that made the audience hold their breath.

No more SRF, no file based configuration, no web templates. That's what it says. So it seems to be almost certain that there will be a time without Siebel Tools as we know it and the object manager will read all configuration metadata from the repository in the database.

When we log in to Siebel Web Tools (I made this name up) some day from now and relish in the web based IDE, will we miss the Siebel Tools fat client?


The Siebel CRM sessions at Oracle OpenWorld 2014 clearly demonstrated Oracle's commitment to the world's most complete CRM product. For the Siebel-believers that is expected and very good news. And for those who want to see Siebel CRM dead...well, it's here to stay, get over it.

If you want to check out the presentations from OpenWorld for yourself, you can find them on the Oracle Learning Library (OLL).

have a nice day


Thursday, October 09, 2014

Speech To Text Awesomeness in Siebel Open UI - Part 2

Welcome back to the second and final part of our speech to text tutorial (complete with awesome fonts).

In the first part, we created a custom PR for the Contact Form Applet and put all the Font Awesome files in the right places.

Today it's time to tackle the PR code in earnest. Remember we want to achieve the following:
So let's open our primordial physical renderer and implement the following code inside the ShowUI method:

Click to enlarge (yeah I know, it's just a screenshot)
Grab the full code here.

Let's walk through the code line by line:
  • First, we 'get' the GetControls property to initialize the controls variable with the current array of applet controls.
  • Then we obtain a handle on the JobTitle control as the JobTitleControl variable.
  • The if block helps us to verify that the JobTitle control exists and that the browser supports the HTML5 Speech Recognition API with this code:
    if (JobTitleControl && 'webkitSpeechRecognition' in window) {In case the window object does not 'know' of the webkitSpeechRecognition method, the code within the if block is not executed (i.e. nothing happens).
  • If we have speech recognition, we do the following:
    • Get the value of the name attribute of the JobTitle control (i.e. the Id) and use it to create a jQuery selector.
    • Create a new DIV element with the class attribute set to s2tbutton fa fa-microphone. The fa (Font Awesome) class is necessary that the DIV displays a microphone icon.
    • Now we create a webkitSpeechRecognition object using the line
      var recognition = new webkitSpeechRecognition();The object has various methods, one of which allow to set the code for the language to be interpreted. In our example we set recognition.lang="en-GB" to interpret the spoken text as British English.
    • Using the onresult event handler we can define a function that is invoked when the recognition process ends. But first let's stay outside this function as it is not invoked yet (this happens when a recording ends).
    • Next we add a custom class to the JobTitle control to allow custom styling.
    • Then we use the jQuery append method to add the button DIV to the control's parent element.
    • Finally we define a click event handler on the button which does two things:
      • Start the recognition (this will cause the browser to display an 'allow/deny' prompt to the user).
      • Toggle the button class to allow some animation.
    • Let's look back at the onresult event handler function and imagine that speech recognition has ended. Then we do the following:
      • Toggle the active class on the button (to end the animation)
      • Get the transcript (the recognized text) from the event object (quite a stretch)
      • Execute the SetFormattedValue method on the PM, passing the JobTitle control object and the recognized text as follows:
        that.GetPM().ExecuteMethod("SetFormattedValue", JobTitleControl, transcript);After consulting with fellow author Duncan Ford and the Siebel Open UI development team, this is the right way to "set a field value". The SetFormattedValue method triggers all the right spots in the framework. Remember, we should stay away from interacting directly with the BC.
      • The rest is just for fun and plays back the recognized text with a default synthesized voice:
        var msg = new SpeechSynthesisUtterance("Did you just say: " + transcript + "?");window.speechSynthesis.speak(msg);
As you see in the example code, there are some class references, so let's add the following CSS rules to a custom style sheet:

/* Text 2 Speech */
.s2tbutton {
    position: relative;
    right: 13px;
    top: 2px;
    font-size: 8pt;
    cursor: pointer;
    text-shadow: 0px 0px 7px rgba(255,0,0,0.9);
    color: red;
    -webkit-animation: throbber 1s .165s infinite steps(3);
    width: 120px!important;
    text-transform: capitalize;

@-webkit-keyframes throbber {
    0%   {color: #000;}
    33%  {color: #f00;}
    100% {color: #000;}

The s2tbutton class controls the appearance of the idle microphone button.
The rule defines a red shadow and font color. Using the -webkit-animation property  we define a 'throbber' animation that has a 1 second duration and loops ad infinitum through three steps. The steps are defined using the webkit-keyframes "at-rule", so that the color goes from black to red and back. Thanks to Duncan for this cool animation.

The s2tinput class controls the appearance of the JobTitle control which we make a bit wider and apply capitalization to the text (because the speech recognition actually returns lowercase text).

Finally, let's fire up Google Chrome for a test.

The screenshot shows the Siebel client after clicking the microphone button (which is 'throbbing'). The browser prompts for allowance or denial.

Once we click the Allow button we can say the text, for example "Vice President"

A few moments after we stop speaking, the recognized text (not always exactly what you've said, but this time it's ok :) is set as the new field value.


What started as a simple demo with one line of code (that got deprecated) became a veritable journey into HTML5 speech recognition and synthesis. We added some (font) awesomeness to it by using a scalable icon which we animated with CSS.

For real life scenarios, I think that especially mobile users would benefit a lot from speech input, even more for longer text. It would also be interesting to explore all the options of the speech API such as allowing the user to select the spoken language or displaying the text as she or he speaks.

have a nice day


Monday, October 06, 2014

Speech To Text Awesomeness in Siebel Open UI - Part 1

If you have been following the various articles in the Siebel Open UI realm over the past two years you have probably seen a demonstration of speech recognition to provide field values via the device microphone.

The example code with this demo boils down to one line like this:

$('input[name="' + controlInputName + '"]').attr("x-webkit-speech","x-webkit-speech");

The above code is adding the x-webkit-speech attribute to a text input control so that we can simply click or tap a microphone icon and start speaking. Note that only Google Chrome supported this feature. Supported? Read on...

As you also probably know, this humble writer and his fellow authors are working on the Siebel Open UI Developer's Handbook (to be released early 2015). Of course, we aim to provide as many working examples as possible and the speech-to-text demo is something we have on our list.

However, while creating the demo code for the book we found to our dismay that the x-webkit-speech attribute is deprecated. Bummer...

HTML5 Rocks

This is where HTML5 (and any browser that supports it) comes to the rescue with the Speech Recognition (Web Speech) and Speech Synthesis API. Support for these APIs is currently limited to Google Chrome and Apple Safari browsers.

So we set out to give speech recognition in Siebel Open UI another chance and are happy to provide a working solution using the HTML5 APIs. In this and the following post we will describe how to use the following ingredients to create a custom physical renderer for a form applet:In 

Let's get started with a screenshot:

The highlighted microphone icon (in the Job Title control) is all the user can see. Tapping/clicking the icon will cause the browser (again: only Chrome or Safari support currently support this) to prompt the user that the web page wants access to the device microphone. After allowing that, the user can talk. Once she or he finishes talking, the field will be updated with the recognized text.

In the remainder of this first part we will lay out the foundation in terms of creating and registering a boilerplate PR and downloading the necessary files for Font Awesome.

1. Create and Register a Boilerplate PR

We assume a certain familiarity with Open UI at this point, so all we do here is create a new custom physical renderer file in the siebel/custom folder from a template.

  • We suggest that you name the file ContactSpeech2TextPR.js.
  • If you use the Siebel Essentials PR Template, continue by replacing all occurrences of 'PRTemplate' with 'ContactSpeech2TextPR'.
  • Next, ensure that the call to SiebelJS.Extend looks like the following to have a proper extension for a form applet:

SiebelJS.Extend(ContactSpeech2TextPR, SiebelAppFacade.PhysicalRenderer);

At this point, the PR does not do much apart from printing messages to the console (at least that's what our template does), but that's ok for now.

Next, we register the new file in the Manifest Files view:

Off we go to the Manifest Administration view and associate the file with the Contact Form Applet for the sake of demo.

Finally, log off and on again and verify that the PR is loaded (look at the JavaScript console for the log messages if you're using the Siebel Essentials template).

If you are already a Siebel Open UI veteran, you might well be annoyed by this level of detail here. Here at Siebel Essentials we aim to please juniors and seniors alike. So if you can't wait and want to jump ahead, here is the complete example PR (with full speech recognition and synthesis). Note that you also need Font Awesome files and some custom CSS, so reading on is recommendable.

Prepare for Font Awesome

Font Awesome is an open source icon and CSS toolkit which provides hundreds of vector icons. The benefit of using scalable font icons instead of image files becomes clear when you consider different zoom levels, the amount and size of files to be downloaded and whether you want to be old-school or just cool ;-)

For "ninja-style" testing you can include Font Awesome in any web page (including Open UI) with one line of JavaScript like the following:

$("head").append('<link href="//" rel="stylesheet">');

Of course the above will require that your browser can reach the public internet. For a real-life Siebel production environment, we will be better off if we download the source files and put it on our own Siebel web server. Here is how to accomplish this:

  1. Go to Fort Awesome and download the latest source archive.
  2. Open the archive and extract the font-awesome.css file to the PUBLIC/%Language%/FILES/custom folder. Do not use the minified version (some editing is necessary so we better use the original file).
  3. Create a FONTS folder in PUBLIC/%Language% (Note: This folder will be present in future Siebel versions, so you probably only have to do this only if you're on IP 2013).
  4. Create a custom sub-folder within the FONTS folder.
  5. From the Font Awesome archive, extract all font files to the PUBLIC/%Language%/FONTS/custom folder.
  6. Edit the font-awesome.css file and replace all occurrences of '../fonts/' with '../../fonts/custom/' to comply with the placement of files in the Siebel PUBLIC folder.
  7. Edit the custom theme.js file (that you hopefully have at this point, if not look here for a start on custom themes) and add a reference to the font-awesome.css file similar to the following example:

    { css : {  fa: "files/custom/font-awesome.css"

Note that this applies to IP 2013. There is a high probability for future posts on custom themes in IP 2014...
Repeat the above step for any standard and custom theme you might be using.

Quite a stretch for a small icon but now we have the full power of Font Awesome at our fingertips.

Please also visit the next part where we will actually bring all the pieces together to capture your beautiful speaking voice in the Siebel database ;-)

have a nice day