יום חמישי, 30 בינואר 2014

Upgrade Notes: Siebel Innovation Pack 2013 - Part 1

Siebel Innovation Pack 2013 (aka 8.1.1.11 / 8.2.2.4) is available for a while now. During discussions with customers and students, almost every project wants to be on this release sooner or later. The reason for this might well be Open UI.

Regarding the version numbers, going from 8.1.1.x to 8.1.1.11 might well be "but a patch". But alas, this couldn't be further from the truth. In reality, installing IP 2013 "on top of" a previous 8.1.1.x version is more than a full upgrade than a patch.

Recently, I had the privilege of going a full round, upgrading an existing 8.1.1.0 (yes .0, but it could have been any version up to 8.1.1.7) installation to 8.1.1.11. In this two-part article, I would like to share my findings with you.

So this is what I had in front of me: A Windows machine with a Siebel 8.1.1.0 server, connected to an Oracle 10g database and also a SWSE/web server machine.

1. Download and create installers

First, I duly downloaded, extracted and created the 8.1.1.11 installers from Oracle's Software Delivery Cloud. I will not go into detail on this process.

2. Install Siebel Enterprise Server

The brand new, refurbished IP 2013 installers are quite a sight to behold:


As you can see, the IP 2013 installer offers a choice between "New Installation" and "Migrate Installation". If you have installed your previous version using Oracle Universal Installer (which is the installer of choice for Siebel Enterprise Server and SWSE since 8.1.1.8), the "Migrate" option is quite nice as the installer identifies the Oracle Home of the SES or SWSE and "migrates" it to 8.1.1.11. In fact, it simply renames the old home folder and installs in the same path.

If you chose "New Installation" you will have a brand-new SES directory in place. As we are talking about preparing for an upgrade, we need at least the Siebel Server and Database Server Utility directories.

To conduct the upgrade process it is not necessary to configure servers at this point, all we need are the binaries which the installer extracts to disk. If we chose "New Installation", of course we would have to set up a new enterprise later to actually run the new version.

2. Import Ancestor Repositories

Because Oracle no longer packages the ancestor repositories (i.e. vanilla repositories in their extracted .dat format ranging from the oldest to newest supported version) with the SES installer, we must also download and extract them from E-Delivery.

After the extraction, you will find a batch file (copydat.bat) which, when executed with the correct parameters as instructed, will run a checksum test and place the .dat files in the appropriate directory in the DBSRVR folder.


3. Install/Patch Siebel Tools

The IP 2013 IRM (Incremental Repository Merge) relies on Siebel Tools (as does any upgrade where a repository merge is involved). So we need a Windows machine with the latest version of Siebel Tools.

The IP 2013 patch is quickly applied to Siebel Tools. If a Developer Web Client is present on the machine, make sure to patch it as well.

Final page of the IP 2013 Tools patch.
3. Copy vanilla SRF

This step, when forgotten or overseen, causes much grief among developers. Siebel Tools must use the current (i.e. 8.1.1.11) version of the SRF file. Oracle ships the vanilla SRF files as a separate download on E-Delivery.

Simply download the archive, extract it and copy the SRF (language specific) to the OBJECTS folder of Siebel Tools (and Developer Web Client, if you need to). It is ok to replace the existing siebel_sia.srf.

4. Rename Siebel Repository

If you have ever conducted a Siebel upgrade, you will be most familiar with this task. Log in to the development server database using Siebel Tools and navigate to the Repository object type in the Object Explorer.

Delete any stray repositories which are not the current development repository (you might want to export them before to have a backup) and rename the "Siebel Repository" to "Prior Customer Repository". Check your typing twice before you log off Siebel Tools.

5. Verify Siebel Tools Parameters

As per the documentation, the following parameters must be set in the tools.cfg file before we start the IRM proper:

ServerDbODBCDataSource = SSD  default instance
SymStrPrefix = SBL_
EnableToolsConstrain = FALSE
DockRepositoryName = Prior Customer Repository

6. Run the Database Configuration Wizard

As we come closer to our goal, we now start the Database Configuration Wizard (the one installed by the IP 2013 installer) and enter the parameters for upgrading the database.
  • Siebel Database Operation: Uprade Database
  • Environment Type: Development
  • Upgrade Options: Upgrade Siebel Database Schema (upgrep)
  • Current Siebel Version: see text below screenshot

The screenshot above shows the Current Siebel Version dialog of the Database Configuration Wizard. As you can see, the prior 8.1.1.x versions (8.1.1.0 to 8.1.1.9 and 8.1.1.10 separately) are official ancestor versions. This is a big difference to how IRM worked in 8.1.1.10, where Siebel Tools was carrying all the burden.

As of IP 2013, the good ol' Upgrade Wizard will take care of importing repositories and will also invoke Siebel Tools to run the merge process.

Among the remaining parameters are the Siebel Tools installation folder, database user and table owner account as well as the ODBC data source to use to access the database.

7. Run the Siebel Upgrade Wizard

Once you finish the Database Configuration Wizard (and have chosen to "apply configuration changes now", the Siebel Upgrade Wizard will appear on your screen, mesmerizingly spinning its globe and waiting patiently until you press the OK button.

Siebel Upgrade Wizard in action. Go, buddy!
Now, we have to be patient as there is a lot to do for the Upgrade Wizard. I have used the logparse command line utility (as I always do) at the end of the first round to produce this nice little HTML summary table:

Click to enlarge
As you can see the "upgrep" process is lengthy indeed. One of the most important steps is the import of three repositories in order to prepare for the merge:
  • "Prior Siebel Repository" (r811.dat; the vanilla 8.1.1.x repository)
  • "New Siebel Repository" (mstrep.dat; the new vanilla repository)
  • "New Customer Repository" (prior_custrep.dat; the current customer repository)
What is of particular interest is that the target repository ("New Customer...") is actually an exact copy of the prior customer repository. This is in stark contrast to major release upgrades where the target repository is a copy of the new Siebel standard repository.

So, while the globe is spinning, let's wait for the second part of the IP 2013 Upgrade Notes. Coming soon to a screen near you.

have a nice day

@lex

Documentation Link: Siebel Database Upgrade Guide 8.1/8.2 Rev. A

יום שלישי, 28 בינואר 2014

Game,Set, Match - Siebel

The battle for supremacy in CRM space is just getting more intense. Open UI has come up to rescue Siebel in arena where they were dislodged by a weak team.  Here is the Fortune article that takes a dig at history, what went wrong for the giant and how new bee scored.

A member of the founding executive team, Bruce Cleveland had a ringside seat for one of the seminal technology industry battles of the last decade - Siebel Systems vs. Salesforce.com. He shares his perspective and lessons learned and on what went right and what went wrong for the company.

Not too long ago, I was asked to speak to a class of MBA students at INSEAD. Before I began my presentation, I asked the students how many were familiar with Siebel Systems, where I had spent 10 years as one of the members of the founding senior executive team.
Only about a third of the class raised their hands. Seven years had passed since Oracle acquired Siebel, which created the customer relationship management (CRM) business, now dominated by Salesforce (CRM). I was the head of Siebel's products division when it was acquired by Oracle (ORCL) in 2006.
Six months after Siebel was acquired by Oracle, I joined InterWest Partners as an investor. And, since that time, dozens of entrepreneurs have passed through our offices to present their new software business ideas. The theme of the presentation typically goes something like this: "We are going to do unto [fill in your favorite large incumbent tech company] as Salesforce did unto Siebel Systems."
The basic premise is that Salesforce summarily dismantled Siebel through its revolutionary software as a service (SaaS) business model and took so much market share away that by 2005 Siebel was forced to sell to Oracle. The proverbial story of
"David defeats Goliath" played out in the high tech industry. It sounds like a nice tale, but it's little more than that. The facts are quite different.
Siebel Systems was founded in 1993 by Tom Siebel and Pat House. Within five years, the company went from little-known startup to a nearly $2 billion a year powerhouse, with 8,000 employees and a market cap of $30 billion. It was the leader of the CRM market. In 1999, Siebel Systems was recognized by Deloitte as the "Fastest Growing Company" in U.S. history, with 782,978% growth over five years.
By 2002, the company's top line had stalled, the stock had fallen to a fraction of its former stratospheric level, and on Sept. 12, 2005, Oracle signed a definitive agreement to acquire the company. The transaction was valued at a little more than $6 billion. On March 1, 2006, Siebel Systems no longer existed as an independent entity, a rather inglorious end to a once unassailable company.
Siebel started out developing enterprise sales software. And, these applications were responsible for Siebel's initial growth. However, Siebel also had developed call center technology. In 1998, Siebel made a key decision to acquire Scopus Technology -- a company in the call center market that was nearly as large as Siebel. That decision dramatically changed Siebel's revenue mix and propelled the company into hyper growth. Over the next three years, a significant amount of Siebel's revenue growth was due to the rapid conversion of the world's custom-built call centers to Siebel's call center applications. In fact, the Siebel call center product line was responsible for 70% of Siebel's revenues during the company's peak sales years.
However, in 2001, a global recession hit. Businesses began to cut back on expenses in all areas, but especially in IT. And, one of the industries most heavily affected by the recession was the telecommunications sector, Siebel's largest source of revenue. During the recession, enterprise customer relationship management projects across all industries were put on indefinite hold. The people who had been assigned to those projects were let go or reassigned to other projects.
SAP (SAP), Oracle, and IBM (IBM) suffered through the recession as well. But Siebel Systems' reliance on telecom wreaked havoc on its revenues overnight, and it stayed that way for three years with no end in sight.
Why didn't the recession hurt Salesforce? From 1999 to 2004, Salesforce primarily sold its software to small companies and divisions of larger companies across the U.S. that couldn't afford, or didn't want, a "complex" enterprise CRM system. The average seat count for Salesforce was around 24 per company. By contrast, Siebel sold into large enterprises with a complex product line and had 5,000 customers with 5,000,000 active seats, an average of 1,000 seats per customer.
With the recession in full swing, there were few IT workers in place to install Siebel applications. Salesforce needed no IT -- well, very little IT -- and it was able to fill a gap in the small and medium size business market segment that Siebel could not easily move into.
Siebel was optimized to sell to large companies and had on its roster a large, expensive direct sales team. Salesforce was built to go after the small and medium-size business market, with nimble internal telemarketing, and telesales teams. In 2005, Salesforce reported $176 million in revenue when Siebel recorded around $1.4 billion. Siebel was nearly eight times the size of Salesforce and could not easily change its business model.
Through 2005, the growth of Salesforce was primarily fueled by its uptake in the small and medium-size business market, while Siebel was dragged down by a drop in demand from large companies. Salesforce came out on the other side of the recession in 2006, filling the void Siebel left behind.
In the summer of 2005, Siebel's turnaround plans were interrupted by Larry Ellison's surprise offer to acquire Siebel Systems. Siebel's board approved the offer. The process of integrating the two companies left Salesforce virtually unopposed in the CRM market for the past eight years. As a result, Salesforce now has significant market share and recently entered the call center market with an offering called "service cloud."
While Marc Benioff didn't create this market, he did reimagine how CRM and other business applications could be delivered via a new type of business model -- software as a service (SaaS). For that, he deserves to be recognized and rewarded. So, what can companies competing in the market today learn from this history lesson? Business models are stubborn creatures. Once the "DNA" of a company -- the business model -- is set, it is very difficult to modify. Today, software companies that rely upon a perpetual license "do it yourself" model struggle to compete against the software as a service business model.
Always be adapting. No matter how successful your company currently is, you should always be willing to adapt to the market and competitors, despite how small or seemingly inconsequential they may appear. The moment you hear a senior executive stand up on stage or in a meeting and say something like, "We will win this market because we are smarter and bigger than everyone else," it is time to get nervous. Very nervous.
Diversity is your best shot at survival. It is critical that your company not rely on any one product or any one market for too long. The very thing that drives your success today may be your undoing in the future. Architecture is critical. Today, your product architecture may enable you to compete and win in the market but it will surely be a drag on your business in the future. Your ability to recognize when that is happening and to actually do something about it in time will determine whether your company survives.
Beware of the status quo. Large organizations thrive on status quo and attempt to kill anything that appears as though it may upset it. New products, new business models, new employees, new processes are all anathema to the status quo. Large organizations and Wall Street reward predictability and reliability; they abhor uncertainty and instability, the very things that innovation foments. This is why true "innovation" is seldom found nor survives inside the four walls of a large and successful incumbent. Today, it is becoming popular to create a chief innovation officer to foster internal innovation -- this reads well in annual reports to shareholders. But unless companies move innovation outside the legal, technical, and business constraints of the existing company and allow people to build businesses that may cannibalize and destroy the existing business of the parent company, these well-meaning efforts are doomed to failure.
The mythical story of "the David" Salesforce slaying "the Goliath" Siebel that has been propagated over the years may play well inside the halls of Salesforce or in various industry reports, but the truth is far more pedestrian.
Both companies were headed toward an eventual collision. But Siebel succumbed well before such an epic battle occurred, to a much bigger problem -- a global recession. And once Siebel was acquired, few of the people who made the company successful stayed at Oracle.
In another 10 years, I wonder which companies MBA students will be studying and discussing in their classes. Will Salesforce survive an impending transformation or will a new startup emerge with a new technology -- and perhaps a new business model -- that upends the unassailable CRM leader?

Used with permission as part of our syndication agreement with the Siebel Observer.

Siebelish View 
We don't completely agree with Mr Bruce where he states that Siebel has succumbed. Definitely it has lost some of his mojo but with Open UI coming big time it still has long way to go. Siebel still scores in effective ROI over large implementations for longer run(> 5 years).  Saas has its own implementation advantages but security still remains major concern. For short/mid scale companies it may be boon but over longer period the scalability and customization becomes issue. I have been lucky to have taste of both World and the flexibility which siebel gives is far superior than SFDC. From technical point of view, If one thinks the SFDC has advantage of cloud, that changes can be deployed on run time then Siebel also gives lot of features.  Workflows/DVM/Personalization/Runtime events if properly used can lead to non-srf change deployments.
I hope you have enjoyed the above article. Many thanks to Mr Bruce Daley for allowing above article on Siebelish.


The Death Match That Never Happened - Siebel vs. Salesforce

As a follower of news and articles revolving the Siebel world, you might have stumbled upon the Fortune article titled "Siebel v Salesforce — Lessons from the Death of a Tech Goliath" written by former Siebel Systems executive Bruce Cleveland.

Despite the somewhat misleading title which suggests that Siebel is dead (which it is clearly not), I enjoyed reading the article and following the discussion it spawned.

In the article, Bruce confronts the "nice tale" that David Salesforce defeated Goliath Siebel in the first decade of this century. Bruce argues, and I go 100% with him, that Siebel Systems was definitely on its knees between 2001 and 2004 due to a global recession but it didn't share the same market segment with the new player in the CRM SaaS market, Salesforce.com.

Image source: Wikipedia
I joined Siebel Systems in 2001 and witnessed how its upper management tried to avoid the unavoidable. Imagine, you have to go full stop from being the fastest growing company in history to actually laying off 40% of your workforce, giving in to the weak economy.

As we all know, Siebel Systems survived, albeit bruised and emerged from the recession with a renewed portfolio including
  • Sales
  • Service
  • Call Center
  • Customer Self Service
  • Partner Relationship Management
  • Marketing (now integrated with Siebel Analytics, the to-be Oracle BI flagship)
  • Loyalty
  • Product, Pricing and Order Management
  • Master Data Management
The above is an incomplete list but still constitutes a suite of functionality available in more than 20 industry specific flavors that most vendors can just dream of today. I believe it was the wisest decision of the Siebel management to keep investing in development during the recession. "Hit the road running" was a phrase often heard in those days.

With a portfolio like the above, seeing Siebel only as CRM or Call Center software would have been a mistake in 2005, and it is even more so today.

With good reasoning, Mr. Cleveland lays out why Salesforce flourished while Siebel's sales slumped. Primarily because Salesforce was picking up customers in the SMB market, a market which Siebel tried to reach with its MidMarket offering but failed because even the stripped-down product was too complex for SMBs.

Siebel CRM is in its very DNA an on-premise product, designed for the needs of the biggest of the big global corporations. Siebel was into the cloud (or SaaS) business before it was cool, with sales.com and some years later with the much more successful Siebel CRM OnDemand.

CRM OnDemand continues to be hosted by Oracle and I would rather compare Salesforce's success in the SaaS market to how Oracle does with CRM OnDemand and its recent Sales Cloud product (based on Fusion Applications). Comparing Siebel CRM on-premise to a cloud product is too much an "oranges vs. apples" situation and if you are serious about your expertise in the CRM market, you should know better.

The focus of Bruce's article is on what companies can learn from Siebel's struggle and Salesforce's success, which makes it even better from an educational standpoint.

If you want to join the discussion, please also read Bruce's follow-up article on his own blog as well as Dave Kellogg's analysis.

Bruce has taken the time to comment on Dave's post and shares some more executive insight into the history of Siebel and why some decisions were made.

Fellow Siebelite Richard has also published his take on the Siebel vs. Salesforce story.

If you want a blast from the past, an interview with Bruce Cleveland from Nov 2005, shortly after Oracle announced to acquire Siebel Systems is found here.

Summary

While many people still are under the impression that Siebel CRM is dead, my personal experience and contact with students, consultants and customers confirms otherwise. With an unmatched array of functionality and Open UI, Siebel is well equipped to stay. In the future we might see attempts to move Siebel to the cloud but in its DNA it is an on-premise product, and a good one to that. So please stop comparing it to cloud based software.

have a nice day

@lex

יום שני, 27 בינואר 2014

Siebel Open UI: Collapsible Applets Revisited


by fellow author Jan:

In a previous post we looked at how applets can be made collapsible by using the Default Applet Display Mode applet user property in Siebel Tools. In the following we look how we can use the same feature in a custom physical renderer (PR) without the need to change the repository (or SRF).

How ClientPMUserProp works

Let's investigate what happens when we add a value to the ClientPMUserProp applet user property:

First, Siebel passes all values that are in the list of the values of ClientPMUserProp to the client.

Next, the values are encapsulated in a property set of type apm which is read in the the Setup method of the Open UI proxy file pmodel.js and put into properties of the PM. As we can see the value of the user property Default Applet Display Mode is stored in the PM property defaultAppletDisplayMode.


Click to enlarge

The PM property defaultAppletDisplayMode is read in the method ShowCollapseExpand of the Open UI proxy file phyrenderer.js which is called from ShowUI. ShowCollapseExpand injects the code that enables the collapsing:
    Click to enlarge
    Make applets collapsible in the PR

    With the knowledge gathered from the proxy code, we only have to set the PM property defaultAppletDisplayMode in our custom PM/PR to make an applet collapsible "on the fly". In my example I set it in the PR - one might argue that it should be set in the PM:

    Click to enlarge
    As we set the property before  the call of ShowUI no other change is required.  If we set it after the call of ShowUI we can call this.GetPM().GetRenderer().ShowCollapseExpand() to inject it. Just be aware that you shouldn't call the method more than once as every call of ShowCollapseExpand adds a collapsing icon to the applet.

    Please note that the above is undocumented.

    Summary

    By setting the defaultAppletDisplayMode PM property we can make an applet collapsible without the need to perform any change in Siebel Tools.

    ***

    Thanks to Jan for this article

    have a nice day

    @lex

    יום רביעי, 22 בינואר 2014

    Changes in Oracle's Patching Strategy for Siebel CRM

    If you are following the various articles on Siebel Open UI on My Oracle Support (hopefully using the great Open UI Information Center available as Document 1511846.2), you might have stumbled upon Oracle Support Document 1535281.1 (Latest recommended maintenance pack for Siebel Open UI on Siebel Version 8.1.1.x and Version 8.2.2.x) which holds some interesting information regarding Oracle's strategy for releasing quick fixes, maintenance releases or patches for future Siebel versions.

    The biggest news is that from Innovation Pack 2013 (i.e. version 8.1.1.11 and 8.2.2.4) onwards, Oracle will provide monthly patchsets which introduce a fifth digit in the version number.

    Source: My Oracle Support
    So the January patchset for 8.1.1.11 is 8.1.1.11.3, as you can see in the above screenshot.

    The patches can be downloaded as usual from My Oracle Support.

    Bringing the new monthly patchset strategy together with the traditional version paths results in the following diagram:
    Example version path from Siebel 8.0 to 8.1.1.11.3
    Explanation:

    When a Siebel customer goes from an older major release such as 8.0 to a newer one such as 8.1.1, a full upgrade is required. Besides physical schema changes, the full upgrade always includes the notorious repository merge and subsequent conflict resolution and post-merge fixup which is usually measured in person months or even years (for larger projects).

    Once the newer release is reached, customers can apply patches or quick fixes without the need to merge repositories.

    Since 8.1.1.10, Oracle delivers innovation packs (one per year), the current being IP 2013. To reach an innovation pack level, customers must not only apply the patch but also run the Incremental Repository Merge (IRM) which is (as of 8.1.1.11) basically the same as a full upgrade, albeit a bit more automated. Still there might be conflicts to resolved and things could break and require fixing.

    If you are already on 8.1.1.11 (or 8.2.2.4), you can obtain the monthly patchsets which are just that, a patch. So there is no repository merge to do.

    Monthly patchsets replace planned 8.1.1.12 / 8.2.2.5 fix pack

    As announced in MOS document 1600520.1, "The new Patchset process will make redundant the planned release of Siebel CRM version 8.1.1.12 / 8.2.2.5 Fix Pack (FP) in early 2014." But, so the same announcement assures us, IP 2014 is still going ahead.

    have a nice day

    @lex

    יום שלישי, 21 בינואר 2014

    Book Review: Oracle Fusion Applications Development and Extensibility Handbook

    As announced in an earlier post, this is a review of the book
    Oracle Fusion Applications Development and Extensibility Handbook by Vladimir AjvazAnil Passi and Dhaval Mehta.


    Overall, the 500+ page oeuvre is a "must" for the aspiring Fusion Applications developer. Extending and customizing Fusion Applications can be challenging and should not be done without proper education. This book is a perfect companion alongside the training path offered by Oracle University.

    The first chapter is dedicated to the architecture of Fusion Applications with a strong focus on Fusion Middleware components such as WebLogic Server, Enterprise Service Scheduler and Enterprise Crawl and Search Framework.

    Chapter 2 introduces the various types of customizations such as personalization, run-time customization, application extensions and design-time customizations and extensions and doesn't shy away from Metadata Services (MDS), sandboxes and layers.

    A separate chapter on flexfields follows, which is much appreciated by all folks in Fusion ERP or HCM applications.

    The fourth chapter talks about security in Fusion Applications, of course introducing the various Oracle Identity Management modules such as Entitlement Server. It also explains the Fusion-style role-based access control (RBAC). It is also the first chapter which provides a step-by-step use case scenario (creating a superuser).

    Chapter 5 tackles run-time customizations with Oracle Page Composer which originates from Oracle Web Center and provides browser-based customization capabilities across all Fusion Application families. The chapter is satisfyingly full with examples and screenshots.

    The following chapter is on Application Composer and provides a good overview and (code) examples for typical customization scenarios.

    Chapters 7 and 8 change the tune and introduce customization with JDeveloper, which extends the book's topic range to on-premise installations of Fusion Applications. Both chapters take the reader on a roller coaster ride through JDeveloper and ADF. Especially useful if you want a closer impression how Fusion ADF applications work, but these two chapters will not make you an ADF developer.

    The ninth chapter directs our attention to Business Process Management (BPM) in Fusion Applications and very briefly introduces the BPM Proces Designer and its role in the HCM domain. The authors also position BPM against SOA, the latter being the more prevalent orchestration tool in the current release of Fusion Applications.

    Which brings us to chapter 10 which focuses on Oracle SOA Suite and its position in the Fusion Applications architecture. This is a much appreciated chapter as the functionality around SOA such as Approval Management is highly underrated.

    Chapter 11 talks about BI Publisher and shows how it can be used for reporting purposes in Fusion Applications.

    The 12th chapter goes deeper into the concepts of OBIEE and has a nice introduction to the pre-built .rpd file delivered with Fusion Applications. Oracle Transactional Business Intelligence (OTBI), a specialty of Fusion Apps is laid out in detail.

    The Enterprise Scheduler Service (ESS) is the topic for chapter 13. A nice worked example for a custom job is delivered with this chapter.

    In the fourteenth chapter, we learn how to create custom skins using the ADF skinning feature.

    The final chapter tackles the big topic of integration. It also introduces the reader to the Fusion Apps Enterprise Repository (OER) where developers find all available interfaces such as web services. A comprehensive example rounds up this chapter.

    Summary

    As stated above, this book will prove to be a valuable companion for Fusion Applications developers of all kinds, be it for cloud-based, on-premise or hybrid deployments.

    have a nice day

    @lex

    יום שני, 20 בינואר 2014

    Creating Links in Siebel Message Broadcasts

    Among the many changes and new features delivered with Siebel Open UI is the way how reports are delivered to end users. You might have noticed the following changes:

    After submitting a report, the application gets focus, so the end user can continue to submit (other) reports or use the application.

    When a report is complete, the user is notified by the message broadcast icon in the upper right corner. The message is implemented as a link, which allows the end user to download the report (see screenshot below).



    Recently, we discussed the new features around message broadcasts in Open UI and personally, I was quite intrigued by the possibility of creating a download link in a message. So I decided to do some research.

    When you take a closer look at the message which is automatically generated, you find it similar to the following:

    Click to enlarge
    Abstract: [D] ' Account List... ' report has completed.

    Message: BO: Report Administration; BC : Report Output BC; Field :  ReportOutputFileName;File Ext : ReportOutputFileExt; Id: 9SIA-89EK9

    As you can see the Abstract field value starts with [D] and the Message field value contains references to the following:
    • business object
    • an attachment business component within the BO
    • a field within that BC containing the file name
    • another field for the file extension
    • the ROW_ID of the file
    I admit that out of curiosity, I created a similar message myself, using [D] as the first characters of the abstract and referring to an attachment BC in the message. For my tests I used the Account Attachment BC and referenced an attachment I created for demo purposes.

    The abstract I used:

    [D] Click to download an attachment

    This is what my test message looked like:

    BO: Account; BC: Account Attachment; Field: AccntFileName;File Ext: AccntFileExt; Id: 9SIA-89EK5

    (The Id value is the ROW_ID of an actual account attachment file)

    I was delighted to see that I got a download link just fine and was able to download the account attachment

    Further research showed that internally, the GetFile method is used when you specify the message like shown above.

    Navigating to a View

    Now when we specify the message like the following, there's a different story to tell:

    BO:Account; BC:Account; View:Account Detail - Contacts View; Id:1-63Q9

    As you can see, we still specify the BO, (parent) BC and an Id (of the parent BC) but now there is a view reference.

    This will create a message with a link that allows the user to navigate to a view and open the record specified by the Id.



    Note that there is also a different icon displayed.

    Summary

    Welcome to the new message broadcast. Three little characters in the message abstract "[D]", change the tune and allow us to create download links for attachments and navigation links to views.

    have a nice day

    @lex

    יום חמישי, 16 בינואר 2014

    Siebel Open UI: Portlets Reloaded

    As described in an article earlier last year, Siebel Open UI enables us to display individual applets as "portlets" in any web portal. As of the early versions 8.1.1.9 and 8.1.1.10, this was supported but the functionality was to be considered "basic".

    As of Innovation Pack 2013, there have been some major enhancements around the possibility to display data from Siebel Open UI in external applications.

    In the following article, I would like to point out these enhancements:

    Standalone Applets

    One of the enhancements in IP 2013 is the ability to display applets in external web pages as "standalone" applets, that is without a surrounding view. However, we still have to establish the context to a business object, which we do via a new applet user property named Business Object.

    So in order to prepare an applet for display as a standalone applet, you must set that applet user property in Siebel Tools and compile the applet.

    Siebel Tools: Quote List Applet with Business Object user property.
    As you can see in the above screenshot, the Business Object applet user prop value is the name of the business object (Quote in the example).

    URL Options

    To expose a standalone applet in an external web page, you will have to construct a URL similar to the following:

    http://myserver/callcenter_enu/start.swe?SWECmd=ExecuteLogin&SWEUserName=SADMIN&SWEPassword=SADMIN&SWEAC=SWECmd=GetApplet&SWEApplet=Quote+List+Applet&IsPortlet=1&SWESM=Edit+List&KeepAlive=1&PtId=ALEX_BW

    And this is what I got in return for the above URL:

    Quote List Applet standalone in a web browser.
    Obviously, I have entered the minimalist phase of web design but I did this to demonstrate that you can pass the name of a UI theme as a parameter (see below list).

    Here are the SWE URL parameters you need to return a standalone applet (you also might want to refer to the official documentation):

    SWECmd=ExecuteLogin: needed when you don't want to resolve authentication with SSO or similar.
    SWEUserName=[username]: needed in combination with the above.
    SWEPassword=[password]: needed in combination with the above.

    SWEAC: Additional command to be executed
    SWECmd=GetApplet: Command to get a standalone applet (new in IP 2013)
    SWEApplet=[applet name]: Name of the standalone applet
    IsPortlet=1: Needed to specify the applet as a portlet.
    SWESM=[Applet Mode]: Name of the applet mode such as Edit List.
    KeepAlive=1: Avoid session timeout
    PtId=[Name of Open UI theme]: Internal name (e.g. GRAY_TAB) of the Open UI theme to use (new in IP 2013)

    Search Criteria

    Once you have the base URL working, you can enhance it by adding search criteria, as described in the bookshelf guide.

    These search criteria can be specified for fields in the applet BC or the parent BC using the following SWE URL parameter syntax:

    BCFieldN=field_name&BCFieldValueN=field_value

    where N is a sequence number starting at 0.

    To provide search criteria for the parent BC, you use the following:

    PBCFieldN=parent_field&PBCFieldValueN=parent_field_value

    Again, N must be replaced with a sequence number starting at 0.

    For example, after adding the following to my test URL, I got a list of quotes for a specific customer account:

    &BCField0=Account&BCFieldValue0=BBBC+Inc.

    Click to enlarge.

    As stated in the documentation, we should be able to use criteria with query operators like "This Name OR That Name" but I wasn't able to get it to work in my test environment. Also, I found it impossible to use wildcard characters.

    Displaying Views

    It is also possible to display an entire view with all applets or just a specific applet which is accomplished by using the well known GotoView command. The bookshelf example is as follows (just showing the part after SWECmd)

    SWECmd=GotoView&SWEView=view_name

    Server Parameters

    The Configuring Siebel Open UI guide specifies some new server component parameters which are meant to enable a secure channel to use Siebel UI artifacts such as applets or views programmatically in the context of other applications.

    These server component parameters are:
    • PortletAPIKey: a string which is used as a security token by the portlet requester.
    • PortletOriginList: a comma separated list of requester domains which are granted access to the portlets.
    • PortletMaxAllowedAttempts: the maximum number of attempts before access is blocked by the Siebel server.
    • PortletBlockedInterval: the number of seconds how long the access is blocked.
    The requester would be a script in the calling application. According to Oracle engineering, this would enable an external application to display a Siebel applet in its own context and trigger navigation without having to re-establish a session (which would happen using the SWE API described above).

    Summary

    With Innovation Pack 2013, more cowbell has been added to the already useful portal style integration which allows to display Siebel applets and views in another application's context.

    have a nice day

    @lex

    יום רביעי, 15 בינואר 2014

    Book Review: Oracle Fusion Applications Administration Essentials

    Recently, two books on Oracle Fusion Applications have been released:

    Oracle Fusion Applications Administration Essentials (this post)
    Oracle Fusion Applications Development and Extensibility Handbook (future post)

     If you happen to be on the "Fusion Path", you might find these worth purchasing (and reading of course). In this and another article to be published soon, I will provide a review of the new publications.

    Oracle Fusion Applications Administration Essentials by Faisal Ghadially and Kalpit Parikh.


    I found this book to stay true to its own abstract (quote from the book):

    "The book provides detailed how-to steps. However, it does this by ensuring that the high-level context and purpose of these activities are clearly understood. Our purpose in writing this book is to give you a jump-start to managing Oracle Fusion Applications from a technical perspective. Readers who have worked with other Oracle ERP products will find this is an insightful introduction to Oracle Fusion Applications."

    In fact, step-by-step procedures for example for installing Fusion Applications are laid out, but only from a high-level process perspective which makes it a good reference for those who want to gain an understanding of what it means to install and administer Oracle Fusion Applications.

    The first chapter provides an historical and architectural overview. It nicely lays out the middleware-centric fashion in which Fusion Applications are built.

    Don't expect too much from chapter 2, Fusion Application Installation. While providing a concise overview of the necessary steps, it doesn't go into detail.

    Chapter 3 introduces the Functional Setup Manager, the one-stop-shop for Fusion Applications administrators and doesn't stay away from talking about migrating setup files between environments.

    The fourth chapter takes care of the important topic of security, introducing Oracle Identity Management and the concepts of role-based access control in Fusion Applications.

    Chapter 5 is dedicated to the Enterprise Scheduler Service (ESS), another important component of the Fusion Applications architecture. Good to see it covered.

    The sixth chapter looks at monitoring and troubleshooting options, covering the audit and logging mechanisms of Oracle Fusion Applications as well as an overview of Cloud Control for Fusion Applications.

    The final chapter introduces management tasks such as stopping, starting, patching, backup, and recovery of Fusion Applications.

    Summary

    With a bit more than 100 pages, the book is lightweight in both the amount of paper as well as the content. However the content is presented in a clear and concise manner. If you find yourself in the growing group of technicians with exposure to Oracle Fusion Applications and need a jump-start, this book is for you. It will help you understand the concepts and makes decisions of further education and reading much easier.

    have a nice day

    @lex

    יום שני, 6 בינואר 2014

    GetService and theApplication() are Not Working In Browser Script In Siebel 8.1.1.11 (SIA)

    GetService and theApplication() are Not Working In Browser Script In Siebel 8.1.1.11 (SIA)

    SOLUTION

    Engineering Team is currently working on fixing these issues. In the mean while you can use the below work around.

    The work around requires changing a standard .js file from the Siebel Client framework.

    Files to be modified: $siebsrvr_location$\webmaster\siebel_build\scripts\applicationshadow.js

    Steps to apply the fix

     1. Replace the function theApplication() implementation in applicationshadow.js with the below change.

    Existing implementation of the function theApplication()
    function theApplication ()

    {

       if ( App() == null )

           return null;

        

       if(SiebelAppFacade != undefined && SiebelAppFacade.InterfaceSI != undefined && SiebelAppFacade.InterfaceSI.App != undefined)

           return App().GetShadow();

       else

           return App().shadow;

     

    }



    Implementation with Fix

    function theApplication ()

    {

       if ( App() == null )

           return null;

        

       if (IsOpenUI())

           return App().GetShadow();

       else

           return App().shadow;

     

    }

    2. Replace the function SWEAlert () implementation in applicationshadow.js with the below change

    Existing implementation of the function SWEAlert ()

    function JSSApplicationShadow_SWEAlert (text)

    {

       if (typeof (top._swescript) != "undefined")

       {

          top._swescript.SWEAlert (text);

       }

    }


    Implementation with Fix

    function JSSApplicationShadow_SWEAlert (text)

    {

       if (IsOpenUI())

       {

         window.SWEAlert (text);

       }

       else if (typeof (top._swescript) != "undefined")

       {

          top._swescript.SWEAlert (text);

       }

    }


    3. Replace the function JSSApplicationShadow () implementation in applicationshadow.js with the below change
    Existing implementation of the function JSSApplicationShadow()
    function JSSApplicationShadow (application)
    {
       if (application != null)
       {
          this._application = application;
          application.shadow = this;
          this._application.SeblTrace(2,"JSSApplicationShadow Initialized");
       }
      
       if(!IsOpenUI())
       {
            this.swescriptFrame = top._swescript;

       }
    }

    Implementation with Fix
    function JSSApplicationShadow (application)
    {
       if (application != null)
       {
          this._application = application;
          application.shadow = this;
          this._application.SeblTrace(2,"JSSApplicationShadow Initialized");
       }
       if (IsOpenUI())
       {
          this.swescriptFrame = window;
       }
       else
       {
          this.swescriptFrame = top._swescript;
       }
    }
    4. Restart the web server after applying the fix

    5. Clear the Browser cache and test.

    for more info

    https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=247346837178836&id=1604411.1&displayIndex=3&_afrWindowMode=0&_adf.ctrl-state=89vqlzbd_61

    8.1.1.11 Installation Fails when attempting to create a backup of the current Installation

    8.1.1.11 Installation Fails when attempting to create a backup of the current Installation

    Oracle provide a solution for this issue

    In the installation location ...\Siebel_Enterprise_Server\Disk1\install there is a file named oneclick.properties

    Open it into an editor and locate the line

    BACKUP_FOLDER=

    Please specify the location where the backup should be taken.

    The backup will be made to

    $BACKUP_FOLDER\$SIEBEL_ROOT

    e.g In Siebel is installed in /sblqa, and the BACKUP_FOLDER=/temp/backup, then the backup will be made to /temp/backup/sblqa

    The installer then needs to copy the contents of the existing installation to backup location specified above and then try to delete the contents of existing installation directory.

    Modify the backup command line to do a copy instead of a move command:

    e.g.

    #UNIX_BACKUP_CMD will be used in case BACKUP_FOLDER parameter has a non empty value. Do not change %SOURCE_ORACLE_HOME_LOCATION% and %BACKUP_LOCATION% in command

    UNIX_BACKUP_CMD=cp -r ORACLE_HOME_LOCATION BACKUP_LOCATION&&rm -rf ORACLE_HOME_LOCATION/*

    Save the file and rerun the install.