Patch Set 15.3/14.9 Skyrockets Performance!

This result deserves truly a big applause. Oracle development worked closely together with Microsoft engineers to boost Open UI performance. With IP15.3/14.9 a complete overhaul of the List Applet renderer has been delivered. This went into the release quite silent, with no notice in the patch set’s release notes. The improvements were focused to give a boost for Internet Explorer, but the improvement is evident for Chrome (hence other browsers, including Edge) too!

Without more wording, just have a look at the results! These results are just amazing. We can safely say that Open UI will come close or exceed what you have ever experienced with High Interactivity clients. Think of the improvement it will make on mobile deployments for tablets… Skyrocketing performance.

IP153-149Performance

– Jeroen

Siebel Open UI – First Encounter With Edge

Windows 10, exciting enough? The atmosphere around Windows 10 is quite positive if you read the many articles which have been written. So, yesterday I took up the glove and downloaded the Windows 10 .iso file and today I created my first Windows 10 Virtual Box image. Without any pain, smoother than you can imagine. Click, click, click, done!

After having played around a bit, I decided to copy my Demo Quick Start environment across. That is the local dedicated client environment I often use, when I do not need a beefed-up server virtual machine.

Of course, there was one major reason for doing this: taking Edge to the test. My Demo Quick Start environment was functional without any pain. Well, that means for Internet Explorer it was working immediately! Since Edge is the default browser, I reckoned removing the /b (browser) switch should be enough to launch Siebel using the Edge browser. Wrong.

Luckily Richard from the SiebelHub faced the same issue. And the simple workaround would be to open Siebel in either Internet Explorer (or Chrome), then launch Edge and copy/paste the Siebel URL in that browser. Et voilá, works like a charm (as workaround then). Do not close the other browser, otherwise the Siebel client will be closed too.

SyngergyUI_Edge

Next I installed Chrome as well on the virtual machine, and was ready to run my usual performance benchmark test. Expectations are high, because while browsing with Edge some web sites it seems to behave pretty well. Added to this those recent positive benchmarks for Edge.

My joy changed into disappointment quickly. In this test Edge did not outperform even its neighbor. Really, it just behaving very similar to Internet Explorer. That means sluggish. Alright, back to Chrome. Immediately you get that feel of ‘souplesse’ back. Could it be Edge is so sluggish because it has Internet Explorer running in the background? Or does Virtual Box has a dramatic influence? Definitely it requires some more testing, but initial signs are not favoring Edge. Unfortunately.

Win10EdgeIEChrome

– Jeroen

Siebel OUI: Windows 10 + Edge – Ultimate Replacement For IE?

The team at Anandtech.com have produced a nice & updated comparison between the Edge browser which comes with Windows 10 and the usual suspects, Internet Explorer, Chrome and Firefox. Using the most common benchmarks. While I personally have little trust in Sunspider for obvious reasons from the past, apparently Edge performs particularly well according to Octane 2.0 too.

anandtech

It will definitely take a while before enterprise customers will move to Windows 10. The good thing is that Windows 10 will ship with Internet Explorer as well as the Edge browser.

Although Edge is brand-new, according to the HTML5Test it is still quite a bit behind on the competition. So less innovation than expected? This requires digging into a bit deeper at a later moment.

Anyways, eager to upgrade my Windows 8.1 laptop to 10 in the coming days 🙂

– Jeroen

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

Siebel IP14 – Watermarking Those Query Assistant Controls

Never gotten remarks from a customer about those two “Query Assistant” controls, which are to a normal end-user less self-explanatory than a developer might think?

QA1

Putting some watermark text behind those controls should be easy. And it is. I did resort to a post loader solution. Although it could have been resolved with a Contron Plugin Wrapper (PW) too. But in this case, the code is so extremely light if written on a post loader… Why take the added overhead of a PW?

$("[aria-labelledby=QueryComboBox_Label]").attr("placeholder", $("[aria-labelledby=QueryComboBox_Label]").attr("aria-label"));

$("[aria-labelledby=QuerySrchSpec_Label]").attr("placeholder", $("[aria-labelledby=QuerySrchSpec_Label]").attr("aria-label"));

Really, there is nothing more to it. Just adding a placeholder and pulling in the “aria-label” attribute. The latter is already translated, so it solves any multilingual issues in one step.
After adding it to the Manifest Administration, this should be the outcome:

QA3

Grab the code here.

– Jeroen

 

Siebel IP14 – Getting Rid Of The “Case Sensitive” Watermark

One of my customers reported a Bug about the inappropriate display of the <Case Sensitive> watermark, is cases where fields got configured to allow case-insensitive queries. To be exact, this is the bug:

Bug 20601528 : OPEN UI: CASE REQUIRED PROMPT UNEXPECTEDLY SHOWN IN HOME PAGE SEARCH APPLET

Diving a bit deeper in the subject, in appears indeed that the Bug is yet unresolved. Although it seems on the surface a cosmetic issue, it could be confusing for end-users. All those years they have been allowed to query case-insensitive on a limited number of fields. Did the developers revoke that privilege?!

Interesting enough, in normal views the behavior is correct. If a certain field is configured for case-insensitive searches, the watermark <Case Sensitive> would not be absent. Just on Home Page views containing Search Applets, the issue is present.

CaseInsensitiveSearchApplet

After some considerations, I choose to solve this with a Control Plugin Wrapper (PW), which would be fit-for-purpose. Since a PW has a global scope, as it is administered as “Application” / “Common” – we would need to add some simple conditional logic. The PW should only trigger if both the Applet Name for the control would match and the Case Sensitivity mode of the control would be “Case Insensitive”. Otherwise, the PW should do nothing.

CIControlPW

Next, I needed to attach the PW to different types of possible controles such as Generic Fields, Picklists, MVG controls… Basically replicate the same statement.

CIControlPW2

I found that the BindEvents events, provided the appropriate timing for my code. Initially I tried ShowUI, but that event apparently triggered too early. Removing the watermark? Just a simply removing the placeholder attribute. The placeholder is a standard HTML5 feature.

CIControlPW3

And well, that’s that. No more, no less.

Grab the complete source here. Simply add it to Manifest Administration under “Application” / “Common” and Bob’s your uncle.

– Jeroen

Siebel IP14 – Enance Checkbox Behavior using Control Plugin-wrapper

A couple of previous posts have already demonstrated the good use of the IP14 Control Plugin-wrapper framework. Today again another simple use-case to demonstrate its potential.

In Open UI it turns out that selecting (or better changing) the value of a check box can be cumbersome. Especially if you want to quickly modify its value in a list applet. Form applets are just fine. Most important of all you need to quite correctly point your cursor on a relatively small area. Further the element containing the check box needs to have focus too, before you can change it.

Experimenting a bit I created a new control plugin-wrapper.

 .

Of course starting-off some solid boiler plate code…!

Implementing the AttachPW event

The usual set-up of a PW requires the implementation of the AttachPW event. This event basically defines for what type of control such as a Dropdown, MVG or Link it should act upon. From the Bookshelf you can get the available controls including the constant value Siebel works with internally. For a Check box this appears to be “SWE_CTRL_CHECKBOX”.

The AttachPW conceptually acts like a bouncer in a bar. It decides if the control’s behavior will be overridden or not. The bouncer will return true, what will make the PW control events to execute. By returning false, well nothing will happen.

PWCheckboxFrom a development perspective, creating plugin-wrappers should be considered carefully, since they could have a widespread impact. A simple typo or a statement which throws an (unhandled) error could make your whole Siebel application could be negatively affected. Further, since the effect of a plugin-wrapper is more or less global, we should refrain from too heavy or process-expensive code.

The AttachPW event allows us to prevent execution of override code, in case this is either not required or would potentially not work at all given the context a certain control type is rendered within.

In this example, I just bluntly return “true”, it passes.

Implementing the ShowUI event

Next, the actual code. All within the ShowUI event.

To get the control’s element is simply done by using the GetEl() method on the object. Following that we need to find the gridcell in the list applet to which the Check box is tied. By testing whether we actually received a value element we select upwards the DOM the closest gridcell.

If that results in a valid element, we can attach a double-click even to it. Whether you use JQuery style or otherwise to bind an event to an element is irrelevant. I opted for JQuery style.

Finally, to make things not more complicated than necessary, I simply simulate and end-user click, again in JQuery style. For that one can use the “trigger” method.

The Out-of-the-box Siebel code will process the event further and “Bob’s you uncle”!

PWCheckbox2

Enjoy and grab the full content here.

– Jeroen

Siebel IP15 – What will be in it for you?

Oracle published recently the Statement of Direction for Innovation Pack 2015.

Innovation Pack 2015 for Siebel CRM 8.1.1 and 8.2.2 Statement of Direction / Planned Features (Doc ID 1963908.1)

As with any Statement of Direction, well it is, a Statement of Direction and intended to outline Oracle’s general product direction. It is intended for information purposes only.

That said, I hear you thinking. Innovation Pack 2015, has Innovation Pack 2014 not been just released a few months ago? Yes, that is right. Definitely Oracle is keeping a very steady pace with regards to development and releases of Siebel. To what extent customers can follow this speed, that is another question of course.

Siebel CRM Composer

Maybe the most appealing item on the IP15 Road map might be the “Siebel CRM Composer”, which at Oracle Open Week 2014 got presented as “Run-time Configuration, No More SRF”. The “Siebel CRM Composer” has been labeled as “Developer Preview”, so not for production use.

So Siebel CRM Composer will…

  • …provide the ability to define business requirements visually in a user friendly way, allowing for a more creative and simplified deployment cycle for functional upgrades and providing an optimized user experience.
  • … allow for multiple instances of application functionality to be created and these can be edited, tested and placed into production via the web based administrative user interface with no downtime.
  • … be able to control the migration of metadata in the Siebel upgrade process, making it even easier.
  • … will obviate the need for proprietary web templates.
  • … will provide capabilities to improve performance for high latency web based use scenarios.

A lot of potential by the wording. But to what extent and depth remains a secret for now. Questions such as:

  • …how a concurrent development environment will be implemented using CRM Composer like we know today using check-in/check-out. Will a similar process remain, but simply by checking-out to the server database instead of a local database?
  • … what depth in terms of objects which are traditionally configured through Siebel Tools will subject to the CRM Composer?
  • … how will it support agile & parallel development be enabled? Similar to how ‘tagging’ and ‘touching’ objects is currently implemented in Tools since Innovation Pack 2012?

Certifications

Besides a number of new certified platforms, also a separate document has been published which makes it essentially easier to review than having to struggle with My Oracle Support’s Certify 😉

Systems Requirements and Supported Platforms /Certifications for Siebel CRM (Doc ID 1499842.1)

Open UI Look & Feel

Some words about a new theme. Likely an extension of the Aurora theme which got delivered with Innovation Pack 2014. I dearly hope Oracle doesn’t keep changing the look & feel of Siebel as drastically as with the introduction of Aurora. Don’t understand me wrong, I like the simplicity of Aurora and IP14 delivered a far better UI & underlying theme for customers to serve as starting point to brand and customize to their own wishes. Plus it became to a certain extent responsive too. But for customers who have started their OpenUI journey prior to IP14, it can be considered for end-users a significant change, requiring change management. With IP14 Oracle discontinued and no longer ships the legacy themes from the past. That might be considered a potential challenge for customers moving away from IP13.

The new theme will be quite certainly along the lines of the Alta Theme, which John Bedford blogged about a while back.

Siebel Charts

Oracle will ship a JQuery charts framework, which by its definition is a client-side plugin. Like there are different Open source as well as commercial alternatives. The interesting bit of course is how Oracle will integrate this within the OpenUI framework. A JScript based charting framework will take its data from data within the DOM. That means that working with larger sets of data can easily become costly in terms of resources, especially since all this data would need to flow through the business object layer, the SWSE with the added overhead. Thinking about that, this statement started to make me wonder:

“Ability to create charts powered by the Oracle 12c Database, providing the ability to aggregate complex chart data across millions of rows”

Will the charting solution be more that just delivering a JQuery charting framework? Maybe a special means of lean-and-mean(er) fetching data sets from the server? Interesting topic!

Industry specific innovations

And then there are a number of industry specific innovations to mention:

  • Pharma Mobile Disconnected enhancements
  • Consumer Goods Mobile – Disconnected Direct Store Delivery Mobility
  • Communications – Product Promotions Process Simplification
  • Public Sector – Responsive Web Design Portal enhancements
  • Clinical – Training Planning and Tracking

Siebel IP14 – Get OpenUI boiler plate code instantly

Duncan Ford created these cool OpenUI boiler plate creators. They really come in handy to start of OpenUI endeavors. It gives you immediate access to the available event handler for your presentation model, physical renderer or control plug-in wrapper. It did save me precious time already. Coding from scratch, a typo is quickly made. Not with good boiler plate code to start with.

PWWrapper

IP14 – Manifest Administered View Transitions

To be honest I was a bit disappointed that we could still not control the View Transition through manifest administration. Although we can with IP14 default a theme by either manifest administration or object manager parameter the out-of-the-box View transition defaults to… well “null”. And really setting it to “Fade In” will make the overall user experience so much better! Alright maybe tweaking (lowering) a bit the transition times which default to .5s. Or set the transition time to nearly zero in which case the Fade In transition prevents you seeing “moving parts” in the view while you navigate around.

behaviortransition

I wrote a brief article about how View Transitions work when this became available in IP13. It is quite a nifty feature. Well, I guess it would have been better if Oracle would have seeded the shipped “Fade In – Fade Out” transition as the default for earlier mentioned reasons. But then still you would have to cater for upgrades where one would ideally as much as possible maintain user preference settings.

So I thought – along the lines of Theme defaulting using manifest administration, could we do the same for View transitions too? And yes, we can. And it turned out to be so damn simple too.

For that I created a new Transition called “Manifest Controlled” for which you simply have to create an LOV entry for Type = PAGE_TRANSITION.

transitionlov

behaviortransition2

Next I created a separate fadeinout.css which contains the Fade In Fade Out classes. To make life easy I just copy-pasted it from the theme-aurora.css.uncompressed which comes with IP14. I modified it such that the language independent value I created for the LOV is referenced by the four classes. Again, to understand how View Transitions work look at my previous post.

transitioncss

Finally administering the custom fadeinout.css in the Manifest Administration does the trick. To keep things simple for now I just added it to the exiting “Theme” which also enables loading the theme-aurora.css itself. But you will ge the point. I do not see real use cases to use expressions actually. Just to ensure that every user has the “Fade In Fade Out” transition by default. And… if the user decides otherwise, the user preference will simply override.

transitionmanifest

Voilá, you have a Manifest Administered transition 🙂

– Jeroen