September 19, 2015

Siebel PropertySet Demistyfied [Infogrpahic]

This is my first post in response to analysis of Google Analytics search reports. In this series I will look at search terms searched by Siebel developers on Google and try to answer them with infographics.

Recently someone landed on How to Siebel? by searching keywords on Google: "Difference between GetValue() and GetProperty()"

There is ample information available on property set methods in bookshelf. Here is my answer using infograph.
Siebel Property Set Methods


GetValue() method returns the value of the property set, in example above  output will be : "My Value"

GetProperty() method returns the value of the specific property, in above example GetProperty("Weight") will return "1500"

If you looking for advanced property set concepts and traversing methods, then I will recommend going through How to traverse property set @ SiebelUnleashed

To receive more articles like this please subscribe via email by submitting form below.

September 18, 2015

Remove tiny X icon from MVG and Picklist fields in Internet Explorer


MVG and Picklist fields of Siebel IP2013 shows a tiny X icon on right end, on clicking this icon data in the field is cleared. Due to awkward positioning user end up clicking it unintentionally. This behaviour is only available for IE browser.
X in Account Field
X in Currency Field


This was added by oracle in hope to improve usability, but it has received lot angst from end users. Instead of improving user experience it risks of losing data in case of miss click.

Luckily there is simple css solution to remove this icon. Following line in your custom css can remove this unnecessary usability trick from entire application.

input:focus[type="text"]::-ms-clear{display:none;}

Input text fields with this css looks amazing just as in chrome and firefox.

CSS fix for Pick list fields

Currency Field in Siebel Open UI

Hope it helps.

September 15, 2015

Interview with Neel @ siebelunleashed.com

Last month Neel author of siebelunleashed.com announced the biggest change of his blog and change in his career.

For many it was predictable but for someone like me it was kind of a shock. It raised several questions regarding Siebel future. What is causing experts like him to leave Siebel? Is Siebel really dead? What is the future of Siebel?

I decided to understand the situation more in detail and managed to interview Neel on his decision, and was amazed with his answers.

Neel answers gave a really good insight of the Siebel market as whole and given signs of Siebel future I would like share the analysis in my next post along with more facts.

Have you been in similar situation as Neel? Then please share your thoughts with us in comments below.




Here is the interview :


Jim : Why did you choose to move away from technical role when you are distinguished Siebel developer in community? With growth of Open UI  you could have had ample playground to play on.
Neel : Jim I did not choose to move away from the technical role, I choose to move away from hands-on technical role and believe me that was not an easy decision. This role allowed me to be in touch with technology but now I was just not restricted to Siebel whole CRM and more became my playground.

After the challenge of initial learning and implementing Open UI life started getting comfortable and I couldn't see myself writing PM/PR's for next few years. I knew this role will take me away from my comfort zone and thus helping me grow by increasing my comfort zone. Now, creating a Solution roadmap for million dollar CRM Proposal is no big deal

Jim : What were the top three reasons that made you switch? Is you current employer pushing you is one of them? or this decision is voluntary as  Siebel future is uncertain?
Neel : When I switched this role I had no doubt about Siebel's future. I believed that with Open UI it is just a matter of time people are going to lineup to upgrade and implement Siebel. So, Siebel's uncertainty didn't have anything to do with my switch. Yes, my organization or specifically my manager was one of the reasons for me to switch as he wanted to me get out of day to day churn and act as CRM Subject Matter Expert (SME). It seemed a logical next step to move towards proper architect or solution role and that's why I changed.

Jim : How are you finding the new technologies as compared to Siebel? Would you say Salesforce and MS Dynamics are technologically advanced than Siebel?
Neel : Salesforce and MS Dynamics are interesting and they are evolving. There is far less functionality available in both as compared to Siebel and they are far more restricted in terms of customization. So, technically they are inferior to Siebel and when I first started working on them I thought no way an enterprise application can be hosted on them.

But people are making beeline for them. The cost difference is so big that they are ready adapt their business processes according to the available functionality and features. Salesforce is circumventing its limitation through their App Store know as AppExchange and MS dynamics is following suite.


Jim : What are the most annoying things in Siebel that you hate? like new siebel support agreement or boundaries of Siebel configuration?
Neel : When I look at Siebel now then I realize how vast and complex it is as compared to other products out there. The architecture that they created more than 10 years ago is still valid.  So, I don't hate anything about Siebel now but there are couple of things that they can add to make it awesome such as new IDE Siebel Tools, support of REST services.


Jim : If you were given opportunity to change the direction of Siebel as product what will you change?
Neel : I wouldn't want to change the direction of Siebel but I would like to make it faster. If OpenUI would have been delivered alongside salesforce then things might have been different. They are moving towards merging On Premise and their Cloud offerings. Eventually it will be something like MS Dynamics offering where you will get choice of deploying same product either OnPremise or Cloud. One thing I would make sure to include quickly is support for REST based services as they are important for Web Base development and integration.


Jim: What are the best features of Siebel that you like?
Neel : OpenUI has to the best feature by far that I like in Siebel with only regret that it was at least 3-5 years late in arriving.


Jim : What will you suggest to a Siebel developer at this market state? If experience level of consultant is 5 , 8 or 10 years, would you suggest them to switch or stay put?
Neel : I believe the days where you could learn one skill and then use it for next 10 years are over. It doesn't matter at what experience level you are (5, 8, 10) you have make an habit of learning new skills.  Siebel jobs are going to be there for a long time but unfortunately I don't see many new implementation of Siebel. So, I assume that most of the jobs in future are going to be for maintenance projects something similar to Mainframe jobs. So, switching is person choice based on person's interest.

But if I have to recommend something apart of Siebel then I would recommend BigData instead of Salesforce as many might be expecting. BigData is an area that is evolving, exciting and challenging, it has great scope for at least next 5-10 years.


Jim: Have you closed all doors for Siebel? Or can there be a comeback in future?
Neel: I am trying to move towards an true architect role where you look at different technologies from 10000 feet and then try to put different pieces together to complete a jigsaw puzzle. So, Siebel as a technology is not out of picture but my hands-on days on Siebel are over for sure.


Jim :Finally, what do you think is the future of Siebel? I know you avoided this topic on your blog, would like to comment on it now? or share some of your thoughts or share any trend you have experienced on your blog?
Neel : Oracle's focus is more on  its Cloud Offerings. Oracle Sales people have been directed to sell On Premise solution only in certain cases such as where deal is of large size or a new customer account is being cracked otherwise they have been instructed to sell On Cloud CRM products. I came to know about this while dealing with Oracle Sales person for a Siebel Proposal (thanks to my new role). That makes me believe that they are trying to merge their Cloud & On Premise offerings. All the development in Siebel (Tools on web, New theme making the UI similar to Oracle Sales Cloud) seems to be also pointing to same.

If you look at market statistics customer are adopting cloud technology in masses. People are sticking to Siebel either because they are heavily invested or they believe other products don't offer what they need. Salesforce recently announced launch of their vertical clouds focused at industries such as Pharma, Media, Finance similar to Siebel Verticals. If they are successful in launching a quality product, that means customers concerns around functionality will be addressed and given the price difference it will be only matter of time before they move on.  Siebel was market leader because it came in ahead of its time but Oracle's cloud services are still playing catch-up. So, until and unless Oracle can expedite it's rollouts it will always be playing catch-up.

So, to conclude I believe Siebel as product might not exist in not so far future and Oracle will offer one CRM product with choice of On Premise and Cloud Deployment.
 


Please share your thoughts in comments below. And register your email to receive email updates.


- Jim

August 29, 2015

Top 10 most annoying features of Open UI!

I am back with another installment of #ShameOnOracle series. I have been doing talking with lot of Siebel users recently, Strange enough I got almost the same reactions when I asked user what they don't like about Open UI.


From the reactions I have created this list of Top 10 most annoying features of Siebel Open UI:

  1. No vertical scroll in list applets.
  2. No hour glass for system processing.
  3. No popup multi-line text areas.
  4. MVG lost shuttle applet.
  5. Attachment drag and drop doesn't work.
  6. On the fly attachment update is not supported.
  7. Product configurator is slower than HI product configurator
  8. Screen real estate is not utilized properly in 8.1.1.9 to 8.1.1.14, lot of blank spaces left on UI.
  9. Keyboard shortcuts doesn't work properly.
  10. Document title is not static.

Please be mindful that these list of issues faced by end user at my current customer only and does not represent all users of Siebel Open UI. Issues presented here might not look like an issue to you personally or your customer.

Did you receive same reactions anywhere? Please feel free to share your feedback or solutions in comments below.

#ShameOnOracle

August 27, 2015

HTML Attributes doesnt work in Siebel Open UI

HTML Attribute Property of applet controls is a standard interactivity application's property which allows to set HTML attributes so that javascript can directly refer that element using document.GetElementById() or GetElementByName()

From Tools help:
"
HTML Attributes (O) -  Specifies to add HTML tag attributes to the HTML tags that the Standard Interactivity client creates when it displays the control. For example, If you set the HTML Attributes property to size=30 for a text box, then the client creates the following tag: <input type = text size=30 . . .>
"

However this trick is not available in Open UI as Open UI is considered to be HI application. Enhancement request has been created by oracle to consider this in future releases.


Solution:

In absense of this attribute property, developers have to scan through the elements using syntax like :

To access control of applet use following in PR layer:

this.GetPM().GetControl ("First Name");

or following to access the applet's wrapper.

var appplet_wrapper = "#s_" + tihs.GetPM().Get("GetFullId") + "_div";

 After getting access to the applet wrapper one can use jquery find method to extract controls of the applet.

 Hope it helps.

August 26, 2015

Migrating Open UI Manifest data between environments

Siebel Open UI manifest records created in Administration - Application> Manifest Administration, and as per IP 2015 there is no way provided by siebel to migrate the data created to higher environments.  Manifest BusComp are not available in ADM export out of the box.

This limits the siebel automated deployments and introduces manual intervention step.

Searching on support web reveals that Oracle has accepted the system limitaion and created a BUG for it in 2014 however no update has been provided till yet.


From Oracle

"
The manifest is now stored in Repository tables and therefore would be migrated with the rest of the Repository.
With the way Open UI Manifest migration is implemented, there does not appear to be a SIF export; yet, it migrated with the Siebel repository. Thus, it seems there is no way to generate a SIF for the manifest data.  Siebel Tools Object Explorer Screen shot that lists the S_UI_* tables and shows project name: "Repository Table" that proves dev2prod will migrate these.

Customer requested an enhancement on being able to incrementally migrate Manifest information without doing a full repository migration, such as using a .SIF file.
"

Bug created :  BUG 19469254 - OPEN UI MANIFEST MIGRATION BETWEEN ENVIRONMENTS IN .SIF FILES




Solution : 

The only way available now is to manually keep track of the manifest changes and import them through UI with every release.

To make it a bit easier to identify the custom records one search with : [Record Source] = 'Customer'

This will return only the custom created manifest records.

#AnotherBug

August 25, 2015

Open UI just doesn't work!

I recently met a group of people who basically vented out their first reactions on Siebel Open UI. Group consisted of both technical staff and non technical end users, thus I was able to validate and confirm issues.

At the end of discussion I was left with long list of things that doesn't work in Open UI. On researching support web, picture became more appalling.

Following is the list of very basic things that just don't work in Open UI, and sad part is that Oracle is not acting on them at all.

Please share your views in the comments below.

  1. Scrolling through list applet does not work with keyboard shortcut.

    When you get a list applet displayed in Open UI and before you click on any data row you navigate with the keys <CTRL>+<ARROW-DOWN> the focus will jump to the next record.But the previous record is still highlighted.
    Oracle raised couple of bugs for it, but didn't provided any fix for IP2013

  2. Drag and Drop of attachment does not work in IE9 and IE11 in IP2013 however it works in other browsers.


    Open UI Product Management recommends :
    ..."Drag and drop will not work in any IE version in Siebel 8.1.1.10 release and below. The biggest issue here is that IE8 and IE9 simply don’t support standards based drag and drop in HTML5. For IE10 there is a defect in a third party being used to provide this functionality. The third party has resolved the issue and it will be included in a future Siebel release. We would not encourage customers to upgrade the third party themselves, but rather they should wait for the next Siebel release when a fix will be made available"....
    In one of the SR oracle has gone one step further and recommended to change the browser.

  3. Open UI doesn't show hour glass while running query.

    This has been reported to oracle by many customers and since earliest open UI release, still oracle hasn't provided any fix yet.
    Steps to replicate:
    1) Log Into Open UI enabled siebel application
    2) Navigate to Accounts > All Accounts View
    3) Select the field to be searched using In Line Search(dropdown on top of list applet)
    4) Query for a field which can take some time to return records
    5) hourglass not shown and user doesn't know whether the system is querying or not!

  4. Vertical scroll is not present in open ui list applets.


    Siebel HI List Applet
    This one is the annoying thing of open UI. I don't understand why oracle has gone ahead picked up jqgrid for designing list applets. Grid is not capable enough to handle the large amount of data thus vertical scrolling is difficult to implement. This is also the reason of bad performance of Open UI client.

  5. Text area fields in open UI does not pops up.

    This is the second most annoying thing for an experienced HI user. Suddenly after upgrade Siebel losses it's popout text areas and no solution was provided till date. I have seen long time wasted to resolve this thing by many developers.
We all know list of issues with Open UI doesn't end here. I will create another list of Top 10 annoying things of Open UI to share it with you.

Till the time if you any problem that was just rejected by oracle to fix and think that should get slot in top 10 the please share it in comments below.

#ShameOnOracle

July 18, 2015

How to pass arguments by reference in Siebel?

Yes! it is possible to pass arguments by reference to Siebel functions. This technique is not documented in bookshelf and most of developer use this unknowingly while passing true or false to CanInvoke property in WebApplet_PreCanInvokeMethod Event of applets to make controls active or inactive.

Lets see how it works.

Nothing special needs to be done by calling function, only change made is in callee function in declaration of arguments by prefixing & ampersand just like &CanInvoke in PreCanInvokeMethod.


 Lets see an example :

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
if(MethodName == "PassByReferenceTest")
{
var privatePS = TheApplication().NewPropertySet();
privatePS.SetProperty("test","something");
subFunction(privatePS);
TheApplication().RaiseErrorText(privatePS.GetProperty("test"));
return(CancelOperation);
}
return (ContinueOperation);
}

function subFunction (&parameter)
{
parameter.SetProperty("test","TestSuccesful");
}


Above script declares a new property set and sets value of a process property to a string("something"), which is over written("TestSucccesful") by subFunction by directly accessing it through the memory pointer.  When business service is executed RaiseErrorText whill print "TestSuccesful" instead of "something".

 
This trick will potentially save you memory allocation and speed up you code a bit. Please be mindful that this code is just an experiment and should not be used in production environment without proper testing.


Happy coding :)

July 02, 2015

Not all control paths lead to a return statement. (SBL-SCR-00128)

Not all control paths lead to a return statement. (SBL-SCR-00128)

  This issue was fixed in version 8.1.1.7, but has been reported re-occurring in IP2014 patchset 3, it is caused due to product defect. This can cause interruptions in full compile of srf.

While compiling srf, if any script which has try catch block which has return statement in try block and does not have return statement outside catch, then this error will interrupt the srf compilation. 


To resolve this disable the "Deduce Types" scripting option in Siebel Tools as shown below.

June 30, 2015

How to change color of screen tab in Open UI?

I think this configuration should available out of the box in Siebel. Never the less I am happy that it is possible to customize the View PR layer in Open UI to change the colors of view bar of specific views.

In this example we will see how can we change the view bar background conditionally using Open UI View level PR customization.

This is how grey tab theme looks out of the box for Manifest File view :
 
Open UI Manifest File View

And this is how Manifest Administration view looks with Open UI PR Customization:

Open UI Manifest Administration View

May be savvy developers would like to have pale yellow for read only views or red for administration screens???


Part 1 : Create CSS class
This customization requires extending the theme in theme.js and creating new class to add different color. New Class should look something like :
custom-theme.css
When this class is associated with any control, it will change the background of the element to transparent and change the background color to blue.

Part 2: Create View PR Customization 
Now the task left is to find the view bar element in the DOM and assigning the class, this can be done with these two commands:

            $("#s_sctrl_tabView").addClass("custom_viewbar");
            $("#s_sctrl_tabScreen").find("li.ui-tabs-active[role='tab']").find("a").addClass("custom_viewbar");

Additionally we need to handle the browser resize event and reassign the class on change of size of browser. Sadly resize event is not passed on the View level PR as described in bookshelf and it has to be done with help of jQuery bind function. Code handling resize event looks like :

        $(window).bind("resize", OnPRResize);

At last we need to handle the cleaanup in the EndLife event of jQuery bind and the class allocation.

$(".custom_viewbar").removeClass("custom_viewbar");
$(window).unbind("resize", OnPRResize);

The final code of PR looks like:


if (typeof(SiebelAppFacade.testPR) === "undefined") {
    SiebelJS.Namespace("SiebelAppFacade.testPR");
    define("siebel/custom/testPR", ["siebel/viewpr"],function () {
    SiebelAppFacade.testPR = (function () {

    function testPR(pm) {
                SiebelAppFacade.testPR.superclass.constructor.apply(this, arguments);
    }
    SiebelJS.Extend(testPR, SiebelAppFacade.ViewPR);

    testPR.prototype.Init = function () {
        $(window).bind("resize", OnPRResize);
        SiebelAppFacade.testPR.superclass.Init.apply(this, arguments);
    }

    testPR.prototype.ShowUI = function () {
        SiebelAppFacade.testPR.superclass.ShowUI.apply(this, arguments);
    }

    testPR.prototype.BindData = function (bRefresh) {
            SiebelAppFacade.testPR.superclass.BindData.apply(this, arguments);
    }
    var OnPRResize = function OnResize(){
            $("#s_sctrl_tabView").addClass("custom_viewbar");
            $("#s_sctrl_tabScreen").find("li.ui-tabs-active[role='tab']").find("a").addClass("custom_viewbar");
    };
    testPR.prototype.BindEvents = function () {
            SiebelAppFacade.testPR.superclass.BindEvents.apply(this, arguments);
    }
    testPR.prototype.EndLife = function () {
        $(".custom_viewbar").removeClass("custom_viewbar");
        $(window).unbind("resize", OnPRResize);
        SiebelAppFacade.testPR.superclass.EndLife.apply(this, arguments);
    }

    testPR.prototype.Setup = function () {};

    testPR.prototype.SetRenderer = function () {
                $("#s_sctrl_tabView").addClass("custom_viewbar");
                $("#s_sctrl_tabScreen").find("li.ui-tabs-active[role='tab']").find("a").addClass("custom_viewbar");
    };

    return testPR;
    }()
    );
    return "SiebelAppFacade.testPR";
    })
}

Part3: Configure Manifest
Now when this PR script is associated to any view in Open UI Manifest, view bar color and screen tab color of that view will change to blue.


Hope it helps, if you like this article and would like to see more articles like this please leave a comment or +1