Oracle XE is a a bit of beast, a pain in the proverbial to install and overkill for the purpose of a local Siebel database. However, it is at least an Oracle database and not a Sybase database, as it was in days gone by.
What this means is that it is possible to use Oracle tools to access and manipulate the data. Gone are the days of disql and it’s more than limited functionality. We can now access the local and sample databases using SQL Developer and other Oracle tools, such as import / export and data pump. I used this fact to my advantage, recently, to populate a fresh Siebel 16 server installation with demo data. This lets me use the full gamut of thin client apps, with useful data and users.
Terry Smythe’s Accounts!
Install the Sample DB
First up, we need to install the XE sample using the Tools or Client installers. All straight forward (as of 16.2, anyway) and you’ll be left with an XE Service that’s running and listening on localhost, port 1521.
Reset the System Password
We now need to get access to the system account, so that we can mess around. Bring up a command prompt and enter:
connect / as sysdba
alter user system identified by system;
This will reset the “system” password. Note that SADMIN and SIEBEL use the equivalent value for logging in.
Export the XE Sample Data
You can use Oracle Data Pump (impdp / expdp) to do this, but I found it to be a bit of a hassle – my target is an RDS instance on Amazon, so I’d have to push a load of files up in order for data pump to suck them in. As it is, I used the old fashion import / export (imp / exp) commands in XE to do the job.
First up, we don’t want all the data from sample – we really only want “S_” tables and we want to exclude the Repository tables. As such, I selected out the tables I wanted directly from S_TABLE:
SELECT NAME FROM SIEBEL.S_TABLE
WHERE TYPE <> 'Repository'
AND NAME LIKE 'S_%'
ORDER BY NAME ASC
I then saved this to a text file (tables.par) and modified this to work as a parameter file input into the “exp” command:
I then initiated an export from my XE database. Note that the exp command can be found in the Tools installation folder, <TOOLS>\oraclexe\app\oracle\product\11.2.0\server\bin:
exp SIEBEL/SIEBEL@SAMPLE_XE BUFFER=16384 FILE=C:\Oracle\Exp\Sample.dmp GRANTS=N TRIGGERS=N CONSTRAINTS=N STATISTICS=NONE PARFILE=C:\Oracle\Exp\tables.par
This took roughly 15 minutes to complete and I’m left with a “.dmp” file of around 4GB in size.
Import the Sample Data into Oracle Server
You can probably guess the next step – using the “imp” command to import the data into my Server Oracle instance. The process is much the same as for export – the main point of note here is that we want to explicitly ignore errors. Even though we’re pushing sample data into a “clean” Siebel Database, there’s still a load of seed data in there that we don’t want duplicated. By ignoring errors, the indexes will keep duplicates out while allowing the whole process to complete without terminating:
imp SIEBEL/SIEBEL@TARGET FROMUSER=SIEBEL TOUSER=SIEBEL BUFFER=16384 FILE=C:\Oracle\Exp\Sample.dmp IGNORE=Y PARFILE=tables.par
Create our test users
Now that we have all the sample data in the server DB, we must create some users to match the thousand or so S_USER records that have been created for our use across the sample system. Again, I put Oracle’s own tools to good use and created a SQL script in SQL Developer:
SELECT 'GRANT CONNECT TO ' || LOGIN || 'IDENTIFIED BY ' || LOGIN || '; ' || 'GRANT SSE_ROLE TO ' || LOGIN
WHERE LOGIN NOT IN ('SADMIN', 'SIEBEL', 'GUESTCST', 'GUESTERP', 'LDAPUSER')
Execute this script and users will be created. Be careful to exclude any users you don’t want to affect (SIEBEL and SADMIN being the main ones) as the script will reset their passwords. You can find a list of relevant test users for each Siebel vertical in this Bookshelf Guide.
Login as Casey Cheng!
It’s what you’ve always wanted, right? Fire up Siebel Call Center and login as CCHENG. Ah, memories!
Now sit back and enjoy perusing the sample data from the comfort of your full Siebel installation.
Well, it was only a matter of time before I ended up working with Siebel again!
I’ve been introduced recently to Amazon Web Services – AWS to you and me. So this is what Cloud Computing is all about! I’m utterly gob-smacked by the power of this platform, the stuff you can do and the speed at which you can do it.
I was tasked with building a Siebel 16 installation using AWS and it is amazingly straight forward. Not to mention incredibly cost effective, compared to using physical hardware and on-premise virtualisation.
I thought I’d share with you the process of spinning Siebel up “in the Cloud”!
First up, my architecture involves two AWS instances – an RDS instance for the database and an EC2 instance for the Application and Web Servers. Using RDS, I’m able to spin up an Oracle Enterprise Edition 12c database in less than 10 minutes. It’s literally a few clicks and you’re done – no more slaving away with OUI, downloading files and the installation and configuration process. AWS captures parameters from simple web pages and does the rest – lightening fast. AWS will even keep my Oracle installation up to date, automatically applying minor patch updates during a maintenance windows that I can define.
So, I have a database instance up and running. I then spin up a new Windows 2012 R2 server. Again, the process is ludicrously quick. I choose from a number of types that have varying RAM, CPU and bandwidth allocations, allocate C and D drives with 60 and 120GB respectively and click a button. Less than 10 minutes later, I have an RDP file to download to my laptop that allows me to connect to the new server. I then jump on to Oracle eDelivery and download the Siebel installation media – I’m getting speeds of nearly 70MBs (that’s mega BYTES, not BITS!) and download the full Siebel installation in under 15 minutes. I unzip the media and backup the installation files to Amazon’s storage offering, S3.
I download and install a Java SDK, Oracle 12c 32-bit Client and SQL Developer then set up my TNSNAMES. I then run SNIC to extract everything and prepare my Siebel installation media and kick off my Siebel installation. Within another couple of hours I have a fully functioning Siebel environment.
While this is all pretty much “installing Siebel on a remote server”, the real benefit comes of now saving my Siebel Server installed as an Amazon Machine Image (AMI). This will allow me to VERY quickly spin up new Siebel 16 server environments for whatever I need – training, dev environments, the list is endless.
I’ve always been a bit of a cynic when it comes to “Cloud” computing but AWS has got me converted. This stuff is HUGE and it is AWESOME – with this stuff, server rooms are sure to become a thing of the past.
Siebel Innovation Pack 16 (AKA Siebel IP16 or just Siebel 16) has hit Oracle eDelivery! I kicked off a download of the installation media over the weekend and have been chipping away with the installation over the last couple of days.
Nothing exciting to report at the moment, as I’ve successfully patched up my Siebel 15 installation across the Server, SWE, Tools and Web Client. A couple of quick notes, until I get around to testing out the new functionality:
- Downloads from Oracle Software Delivery Cloud (AKA Oracle eDelivery) have been greatly improved, thanks to the use of Akamai Download Manager. Akamai lets you queue large downloads (Siebel 16 is 75GB in total!) and resume any that have failed. I left Siebel downloading over-night to be met with a full set of ZIP files in the morning
- You are now, very directly, asked to accept Oracle’s ‘Oracle Standard Terms and Restrictions’ agreement. Make careful note of the text here, if you’re setting up and using a ‘trial’ environment such as I am. Oracle have provided guidance on the use of it’s software outside of licensed customer environments.
The installation wizards offer nothing new but, progress bar insanity aside, everything has installed smoothly.
My next challenge is to install Siebel Tools on XE and enable the new Siebel Composer functionality. XE is proving to be an interesting challenge, as my base Siebel Server box already uses Oracle XE as the Siebel Server database. When I attempt to enable XE on the Tools instance installed there, I get an error: presumably because XE is already installed. I guess I’ll have to set up a separate Windows 8/10 WM to get a local Siebel Tools instance installed.
As soon as I have the process of installing Tools with XE and enabled the new funky functionality, I’ll post up a new article.
Watch this space!
I’ve recently implemented a very interesting requirement using my old favourite, the Virtual Business Component (VBC). VBCs are great and allow you to build your own recordset beneath a virtual BC definition that behaves (almost) exactly like an old fashioned BC.
The steps to create a VBC are easy peasy:
- Create a new BC record, in Siebel Tools, specifying the class ‘CSSBCVExtern’. Call it ‘OLI – User Sessions VBC’
- Create a User Property on your new BC, called Service Name. Give it a value, ‘OLI – User Sessions BS’
- Create a couple of fields in your VBC: ‘CC Alias’ and ‘OM Login’, both as DTYPE_TEXT
- Create a new Business Service called ‘OLI – User Sessions BS’:
- You’ll need an ‘Init’ method:
function Init (Inputs, Outputs)
// Initialise the VBC row property set
Outputs.SetProperty("CC Alias", "");
Outputs.SetProperty("OM Login", "");
- and you’ll need a ‘Query’ method:
function Query(Inputs, Outputs)
// Init the 'Session' VBC
var oSessionBO = TheApplication().GetBusObject("Server Admin - Sessions");
var oSessionBC = oSessionBO.GetBusComp("SA-VBC Session");
// Query for OM Sessions
SetSearchSpec("CC_ALIAS", "LIKE '*ObjMgr*'");
var bIsRecord = FirstRecord();
// Get field values
sUserLogin = GetFieldValue("OM_LOGIN");
sOMAlias = GetFieldValue("CC_ALIAS");
sUserLogin = sUserLogin.toUpperCase();
if (sUserLogin != "SADMIN") // Would have this in SetSearchSpec, but it's ignored by the class underlying 'SA-VBC Session'
// Create new child instance
psSessionRec = TheApplication().NewPropertySet();
// Populate the new child instance
psSessionRec.SetProperty("CC Alias", sOMAlias);
psSessionRec.SetProperty("OM Login", sUserLogin);
// Append 'record' to output PS
bIsRecord = NextRecord();
- Create a new Applet and a new View using the Tools Wizards
- Add the view to a new or existing Screen
- Add the view to a Responsibility
- Job done!
I really, really like VBCs – you gain a lot of control over what you’re bringing into a record set.
Note you’ll need to set the ‘AdminRoles’ configuration parameter on Server Manager and set NSAdminRole in gateway.cfg and namesrvr.cfg, if you want users other than those with ‘Siebel Administrator’ Responsibility to see the results of your hard work!
The limitations and quirks of Siebel Tools continue to drain my will to live the life of Siebel. I recently had the joys of debugging a Siebel Workflow process that was generating a SQL error – don’t you love that the Workflow Simulator ignores the /S switch on the debugger command line options? Setting the SIEBEL_LOG_LEVEL environment variable will over come that but doing so requires restarting Siebel Tools AND the Web Client as well as generating huge log files for both siebel.exe and siebdev.exe.
I wrote a small C# tool years ago to interactively enable (and disable) SQL debugging on a running Siebel Developer Web Client instance. I’ve updated it with some small UI changes and made it available on the Siebel Store.
I eagerly await the arrival of Siebel CRM Composer, which will probably be the IDE of our dreams… Until then, I continue to work around the limitations of the aging, decrepit Siebel Tools.