Siebel 15 – Hey Where Did The Threadbar Go?

For the vast majority of Siebel implementations which rather focus on desktop-based deployment, the Tab-based Aurora theme will be the most convenient and efficient theme to use. Although the Synergy (or “simplified” UI) theme definitely looks way more sexy, if it comes down to end-user efficiency for typical call center use cases, efficiency is what matters most.

While test driving Siebel 15.0 these days, I found the Thread bar to be missing. That must have been an error wile tweaking the Aurora theme I guess. Although the Aurora theme has not undergone structural changes between IP14 and Siebel 15, they have been re-generated. Development uses LESS to generate the CSS.

 
Going into Google’s developer tools, the root-cause was identified rather quickly. The Siebel Toolbar was hiding it. A simple tweak to the Aurora CSS was enough as quick fix it. That said, any theme overrides should be done in an custom style sheet. Not in the out-of-the-box theme-aurora.css, which will be likely overwritten by a patch set.

Creating custom override rules as such, is extremely simple with Innovation Pack 14 onwards. Just create a custom css in the /files/custom folder. Administer it as Application / Theme / Platform Independent. Just make sure that it will load after the standard (theme-aurora.css, theme-sui.css, …) theme gets loaded. Because otherwise, well per ‘cascading style sheet’ principle, the custom CSS rules with not override the standard ones!

Next will have to do the necessary and raise a Bug.

– Jeroen

Siebel Open UI – Bringing Back The Context Menu

First a brief teaser about the subject at hand…

 
…It came ranking at third position in the infamous Siebel Hub’s Pyramid of Pains. Those Siebel High Interactivity features we are missing so dearly in Open UI. And true, this is one which I too would like to count. Though I understand perfectly fine the Siebel development team is not keen introducing features which do not meet the web standards based approach they remain focused on. Using a context menu is one of those debatable subjects, should a context menu belong to a web application?

2015-06-01 17_46_56-EasellyThat said, I reckoned to give it a shot. Why? Because the vast majority of the existing Siebel customer base are Call Center “type” of implementations. At least running on a desktop of some kind, with a mouse attached :-)

Where did I start? Well, just by fooling around with the Google developer tools. My initial idea was to mimic clicking the menu wheel button. Then trying to move the applet menu which would render to another position. I wasn’t looking forward having to deal with the complexities implementing a custom context menu from scratch. Please no. Why re-invent the wheel?

First of all, would the JQuery trigger() statement work against the menu’s element? Just a random applet on a random view.

2015-06-01 19_43_40-_new  3 - Notepad++

Guess what, the applet menu popped up. Hopeful start. Next finding the appropriate mechanism to capture the right-mouse button + some additional key. Just overriding the browser’s context menu by-default did not seem such a good option.  Rather have a key-mouse combination instead, to selectively switch between the regular context menu and the Siebel context menu. I opted for the “Alt” key and started off with the following piece of test code:

2015-06-01 19_54_38-_new  3 - Notepad++

Also, no problem here. Next step, experimenting with the JQuery’s .animate statement. Googling a bit showed that the usage is dead simple. Obviously I did not want a true animation to appear, rather just take the feature with a sub-second transition time, so the beholder of they eye would not witness any transition.

Well, that was the idea. The .animate routine accepts coordinates to instruct where to animate a certain DOM element towards. Just by inspecting the DOM I found that once clicking the menu button identified in this example by the selector $(“#s_at_m_5″), the actual menu appearing would be identifiable by $(#s_at_m_5-menu”). And the event parameter passed by JQuery would provide using e.pageY and e.PageX the needed target coordinates where the mouse pointer was located at the time the .mousedown event occured. Nice.

2015-06-01 21_26_58-_new  3 - Notepad++

So, at the point the context menu started appearing more or less where I expected. More or less because there was a strange Y-axis offset. Interestingly enough when logging the coordinates, these turned out to be correct. But the .animate would give an offset of exact 150px . I can live with that, did not care for now to research this particular point deeper.

2015-06-01 17_30_19-My Accounts_ 3 Com

Because I want to suppress the default context menu from the browser, some additional logic was needed. Googling a bit revealed the simplicity of the solution.

2015-06-01 21_39_45-_new  3 - Notepad++

But what to re-instantiate the default functionality again? Simply the opposite of binding to the “contextmenu” event, unbinding the event.

2015-06-01 21_45_57-_new  3 - Notepad++

Things are looking great so far, time to build an actual applet physical renderer. Starting of as always from solid boiler plate code. Really, it saves you loads of time. Much better than copy/pasting from a previous file.

First of all I had to deal with the simple stuff of making use of dynamic selectors instead. Since I found the menu button and the menu itself (which essentially is a list of links) are created by Siebel using the Applet’s Id being respectively $(“#s_at_m_5″) for the button and $(“#s_at_m_5-menu”) for the menu itself.

Using a straight-forward regular expression (straight-forward here means, I Googled it instead of re-inventing it) I was able to substring this number from the applet’s full Id.

While further building the PR and testing it along, I found that it did not work that well. Inconsistent. Sometimes the default context menu did not get suppressed, sometimes the applet menu showed up but did not animate, sometimes the default context menu did not get re-instantiated, sometimes a mix of these… I believed this to be a timing issue. Therefore setTimeout to the rescue. Maybe there is a better alternative like using the stopPropagate to prevent any events from bubbling up the DOM tree. For now I did not really care to research this further, as I found inserting two setTimeouts did the job.

Code wise this became the end result.

2015-06-01 22_08_11-_Z__Client_PUBLIC_enu_23044_SCRIPTS_siebel_custom_SiebelContextMenuPR.js - Notep

For now I just build it as stand-alone physical renderer for list applets. No big deal to create one for form applets too. Obviously if this should be application-wide behavior we would need to override the respective DEFAULT LIST RENDER and DEFAULT FORM RENDERER physical renderer files instead. An interesting previous post on this subject can be found here, while discussing rendering navigation buttons as glyphs instead of the ugly out-of-the-box sprite.

This concludes this post. I am looking forward to comments, suggestions and improvements. An issue I was yet unable to tackle is that the first time I request the Siebel context menu, it shows up in its original location. Doing a second “Alt” + “Right mouse click” fixes that. Other small deficiency is that sometimes you will see the applet menu flickering in its original location before showing up at the cursor’s location.

The complete PR can be grabbed here.

– Jeroen

 

Siebel 15 – Siebel CRM Composer Webcast Demonstrating Responsiveness

Direct from product development another glance at the Siebel CRM composer! Richard and @lex from the SiebelHub have also produced initial recordings of their first experiences.

This webcast from the Oracle Siebel CX team further drills into some of the technicalities of the CRM Composer. It demonstrates the migrated Web Templates and how they can be modified. Further the demonstration shows how to leverage a new profile attribute “Viewport:width” which allows more dynamic expressions to either show or hide content such as complete applets or controls depending on the actual size of the browser window.

I played a bit with this feature. As I imagined the value of the profile attribute is captured once you logon to Siebel. That means that re-sizing your browser’s window will not dynamically change the Viewport:width value. This could have unwanted effects in case you would for example open your browser not in maximized mode. In that case responsiveness would kick-in and potentially hide content. Once you think about maximizing the browser, well you’re stuck with the previously set Viewport:width.

Also a scenario where one would re-size the window will not change the outcome of any expressions where Viewport:width is used. Maybe the implementation which sets the Profile Attribute will change for Siebel 16? Might not be a bad idea I guess. At least I will address it with product development.

Further, Oracle produced a pretty descent Bookshelf document. And watch this: in the typical “Oracle” style. The traditional “Bookshelf” style has gone. Get it here: Siebel CRM Composer Developer Preview Guide

– Jeroen

Siebel Application Management with Oracle Enterprise Manager Cloud Control 12c!

These days many enterprise-grade Oracle databases will be managed by Oracle’s Enterprise Manager (OEM) flag ship product. Though the management of databases has been the breeding ground for OEM, OEM is certainly not limited to managing databases. Actually most of Oracle’s technologies and applications can be managed through OEM, as OEM essentially is an amazing platform and very open to extensibility. This includes customer extensions. All you need is a good knowledge of Python.

Oracle has been delivering and expanding the depth and breadth of what is known as the “Siebel Application Management Suite” over the years.

OEM_Siebel_1

Oracle likes to distribute the capabilities of Enterprise Manager across the following four pillars. In this post I will briefly discuss the first two pillars, in a follow-up post I will make note of the latter two.

OEMOverview

Discovery & Application management…

Would allows insight in the actual health of the managed applications. OEM provides a single platform to manage and monitor many Siebel Enterprises. It will provide typical monitoring & alerting capabilities. A Siebel Application object manager suddenly died taking with the crash 30 or so user. Alright, the component would certainly have recovered itself, and spawned a new multi-threaded process. But in a non-monitored scenarios, this fact would be often remain unknown. Until an affected end-user would raise its hand maybe. But would it not be great to be alerted in such a unwanted situation? By that I do not necessarily mean over-flooding an administrator with emails or sms messages. Pretty convenient rules preventing such over-flooding can be administered for monitored events. E.g. a repetition of incidents within a short interval for a specific object manager on one server could mean a priority 1 incident accompanied with an sms. A sporadic crash of a less critical component could be just visualized on the dashboard.

True, Siebel natively possess out-of-the-box capabilities introduced in Innovation Pack 2013, to investigate crashes. But that really is more a feature or troubleshooting, rather than monitoring and alerting.

SiebelDiag1

The Siebel Management pack is being extended all the time by Oracle. But customers might want to create their own extensions too. Wanting to visualize those Communication Inbound Receiver issues, where suddenly a certain Mailbox does not get polled anymore? A relatively simple plugin could be hand-crafted checking the /incoming folder for .idx files which have become stale. And really, that is no rocket science! Want to be alerted when a certain Siebel Process ID starts consuming over 1 GB and like to see a possible trend? Again, this would pertain a customer extension. But no rocket science needed neither.

Next, APM…

Application Performance Management. This is where one of the most complex acronyms within Oracle is hidden: RUEI. Real User Experience Insight. Truly amazing tool which is capable of non-intrusive introspecting HTTP traffic and gather brilliant insights. This is what RUEI does, it monitors you HTTP traffic at the switch within your data center. It basically uses the SPAN port and the RUEI data collector selectively consumes the HTTP traffic. Since RUEI is Siebel aware it understands what end-user activity got produced and how long it took end-to-end to produce a response on the user’s browser.

There is this little side note. For Siebel High-interactivity there is absolutely no added client-side software required. Though for Siebel Open UI a tiny additional Javascript needs to be included per Siebel Manifest Administration. This allows the Siebel OUI client to inject a bit of additional information in every HTTP request to further fuel RUEI, so it can even better report than before. RUEI_OEM

Further, it can do “wild things” like reporting based on geographical location of the user. So really, enabling to see that a user in Australia experiences less performance than on average versus a user based out of Singapore. Just to mention a few characteristics of RUEI. And well, OEM integrates the RUEI Dashboard within its single source of truth. Nice?RUEI_OEM2

Further, RUEI allows (within defined periods in which is captured data in its warehouse) to re-generate end-user trails. A user call the help desk with a specific incident, but cannot explain nor recall what lead to a certain behavior? RUEI allows to identify the user and show what activities the user carried out. Not sure to what extent organizations are really open for such a feature. Would RUEI become too big of a brother, watching over once shoulder? That said, it can be done.

This completes for now this post.

– Jeroen

Testdrive Siebel 15 with Bloomspire! Expires June 5th

TestDriveSiebel15BloomspireFirst glance on Siebel 15 without going through the hassle of downloading Gigabytes of software and setting-up a playground Siebel environment? Try out Bloompire’s offer to Testdrive Siebel 15. Expires June 5th.

Try Siebel IP 2015


Starting now until 5 June 2015, test drive Siebel IP 2015 for FREE by completing and submitting the form below.

Thank you for requesting access to our IP 2015 evaluation environment.  You will receive an email shortly with instructions to login.

This environment is running on our Siebel Environment Service.  For more information about this service, please visit us here: http://www.bloomspire.com/siebel-environment-service-about/.

Please be aware that this free evaluation will only be available until 5 June 2015.  If you’d like continue to use it with a paid subscription, please contact us at sales@bloomspire.com.  

Siebel – Please Don’t Loose My Attachments!

One of my customers recently showed me that using the most straight-forward scenario one could think of, would make them loose attachments in Siebel.

What is the issue? Once you would attach a new file in Siebel you will typically use the “New File” button, which brings up the browser’s File Browser window. You select an attachment, and save it back to Siebel. Easy.

But guess what, if you do not force focus on the “Attachment Applet” but immediately click on the “New File” button, you will still be shown the File Browser. You select your file, and save it back to Siebel.

You’d guess. Although the UI makes you think the attachment is there, it will not be committed to Siebel unless you force focus on the Attachment applet. That could be a simple click on the applet, or filling out some attachment related fields which implicitly forces focus.

AttachmentIssue

Supposedly many customers will potentially hit this issue. But then data loss in production is one of the hardest issues to tackle… Apparently it did not yet get reported to Oracle Support yet. Well, now it has and will be tracked under:

Bug 21119217 – ATTACHMENT NOT SAVED UNLESS ATTACHMENT APPLET IS GIVEN FOCUS

This Bug will quite definitely be fixed soon per patch set. The issue applies to Siebel 15 as well, unsure whether it applies to IP13 (I did not take the time to test it).

Since my customer could not wait until a definite fix from Oracle, I created simple fix for the time being. Done by means of a postload. Not ideal, but since it pertains extremely light script…

It attaches a function to every element with class “siebui-ctrl-file”, which makes it to trigger a click on the button’s parent element once the button is clicked. This forces focus on the Attachment applet, hurray!

AttachmentFix

The file can be downloaded here.

– Jeroen