Something completely different this week! I’ve been a bit of computer spod for most of my life, and it all started with a 48K ZX Spectrum home computer. My dad bought it in the early 80s and I took to writing games and keying in code listings from the likes of Your Computer and Your Sinclair. As a big fan of emulation and retro-computing, I’ve obviously acquired a Speccy simulator to relive the good old days.
Now, last week I was discussing the “Monty Hall Problem” with my missus. For the uninitiated, this is a probability problem that is often described in the context of a US game-show, where a contestant picks one of three doors. Behind one of these doors is the star prize, a car, with the other doors concealing a pair of undesirable goats. In the game, once the contestant has chosen a door, the host, the titular Monty Hall, reveals, at random, one of the goat doors and asks the contestant: “Do want to stick with your original choice or choose the other door?”. The Monty Hall problem suggests that the contestant has a 1 in 3 (33%) chance of winning with their original choice yet a 2 in 3 (66%) chance if they choose to swap. As such, the contestant should always choose to swap to have the best chance of winning the car. The problem can be proven mathematically, using Bayes Theorem, but is a fascinating problem to simulate using a simple computer program.
Combining these two interests, then, I’ve written a simulation of the Monty Hall Problem in BASIC on my simulated ZX Spectrum.
The solution is also available as .tap and .z80 files, which are available at the bottom of the listing. Next steps? To implement as a Siebel Workflow of course! 🙂
10 REM Monty Hall Problem
20 REM Iain Ollerenshaw 2018
50 REM initialise counts. S = Swap, R=Stick
60 LET s=0: LET r=0
70 REM Get number of interations
80 INPUT "Num of iterations: ",t
90 FOR i=1 TO t
100 REM Initialise doors
110 DIM d$(3)
120 LET d$(1)="G"
130 LET d$(2)="G"
140 LET d$(3)="G"
150 REM place the car
160 LET c=INT (RND*3)+1
170 LET d$(c)="C"
180 GO SUB 360
190 REM Pick a door
200 LET d=INT (RND*3)+1
210 PRINT "I:";i;"+ D:";d;" C:";c;" R:";d$(d)
220 IF d=c THEN LET r=r+1
230 REM Monty reveals a random goat
240 LET m=INT (RND*3)+1
250 IF m=d OR m=c THEN GO TO 240
260 REM player changes doors
270 LET n=3*(m=1 AND d=2)+2*(m=1 AND d=3)+3*(m=2 AND d=1)+(m=2 AND d=3)+2*(m=3 AND d=1)+(m=3 AND d=2)
280 PRINT "I:";i;"* ND:";n;" C:";c;" R:";d$(n);" M:";m
290 IF n=c THEN LET s=s+1
300 REM prevent Scroll? message
310 POKE 23692,100
320 NEXT i
330 PRINT "Stick: ";r;" of ";t;" (";r/t*100;"%)"
340 PRINT "Swap: ";s;" of ";t;" (";s/t*100;"%)"
360 REM print the doors
370 PRINT d$(1);":";d$(2);":";d$(3)
Download .tap file
Download .tzx file
I’ve been around Siebel for nearly 20 years now. Yes, I know I don’t look old enough, but that would be the fresh Scottish air. Siebel has evolved over that time but never to any sort of degree that truly made life better for a Siebel developer. Now, with the release of IP 2017, and just in time for me to move away to do other things, Oracle have given us a game changer: Siebel Workspaces and the SRF’less World.
The clear goal, though a goal that’s not quite achieved, of Web Tools in IP 2017, is to allow configuration of the Siebel Application through the thin client UI. For simple changes, this is largely successful, though Oracle has a lot of work to do to do away with Siebel Tools altogether.
Here’s a walkthrough of the steps to add a new field and expose it on an applet, just to show you how neat Web Tools can be.
- Log into Siebel Web Tools
- Click the “Workspaces” icon in the top right
- From the “Main” branch, click “Create” to create a new Workspace instance, giving it a name and a description
- Close the Workspace window, with the big “X” in the top right
- Click on “Business Component” and query for “Contact”. Note that, now you have an active Workspace, everything is now editable in Web Tools
- Click “Fields” and add a new field:
Name: OLI Life After Siebel Flag
- Now go to “Applets” and query for “Contact List Applet” and click “List” then “List Column” and add a new record:
Name: OLI Life After Siebel
Field: OLI Life After Siebel
Display Name String Override: Life After Siebel?
HTML Icon Map: CHECK
HTML Type: CheckBox
- Go to “Applet Web Template”, click on “Edit List” and click the “Edit” button
- Drag our new list column to placeholder 540
- Our changes are done – easy peasy!
- Now to publish the changes
- Go to the Workspace page again
- Select your “In Progress” workspace and click “Version” – now this is actually called “Checkpoint” in Siebel Tools but it doesn’t the same thing
- Give the checkpoint a name and click the “Version” button
- You’re ready to deploy the change!
- With your “In Progress” Workspace selected, click the “Submit” button then click the “Deliver” button
- Give the delivery a name and click “Deliver” – Web Tools will do its thing!
- Now get into your Siebel application, Siebel Call Center in my case
- Navigate to “Site Map”, then “Contacts” and finally “Contact List”
- Behold your new field – all without an SRF or server restart in sight!
Web Tools is finally on the right path to deliver agility in Siebel development. It’s very clunky in places and you’re still bound to Siebel Tools for many tasks. However, this is a massive leap forward and I can’t wait to see what IP 2018 brings in this space.
A couple of people have asked me recently about the inactive “Edit Web Layout” menu item in Siebel Tools. Well, that functionality is gone – web templates are no longer stored locally in files, but in the database, and so the ability to access this function in Siebel Tools has simply been deactivated. However, all is not lost – “Edit Web Layout” is still available, but you’ll have to access that function through the new Web Tools.
To make matters even more entertaining, that function is not enabled by default nor is it enabled automatically via any of the Patch Sets currently available (up to 17.6 at the time of writing). However, 17.6 does dump a little gem into your Siebel Server BIN folder for you to stumble across, if you happen to read the entire contents of the “Known Issues” section of the patch release notes. Here’s a quick summary of what you have to do, in a Windows environment, to work around “Bug Id 27113012”:
- Install the latest Patch Set (17.6 is what I’ve been using) to your Siebel Enterprise
- Open a command line and change directory to the Siebel Server installation BIN folder (e.g. <SIEBEL_HOME>\ses\siebsrvr\bin\)
- Execute the batch file named “EditWebLayout.bat”
- After executing the batch file, you will be prompted to enter the following information:
Full path of ODBCSQL: <Siebel Server BIN Location>
ODBC Data Source: <ODBC DataSource Name>
Table Owner Name: <Table Owner User - 'SIEBEL' in most cases>
Table Owner Password: <Table Owner Password>
TBLO Name: <A cryptic one this. The batch file gives some garbage about ORAPQ100, or some such. I just used the table owner again, 'SIEBEL'>
Repository Name: <Repository Name - '"Siebel Repository"' in most cases. Yes, you have to put the quotes around it or the batch file will fail>
- Check the output of the command in the log file, EditWebLayout.log, and you’ll see that a bunch of seed data has been loaded
- Clear the browser cache and re-login to the Web Tools application
- Navigate to your Applet then Applet Web Template
- You’ll see an “Edit” icon in the bottom right (cunningly, the tooltip says “Preview” – great job, Oracle!)
Here’s the “Edit Web Template” button
- Click this and you’re back on familiar(ish) ground
And… edit away!
Some wee observations:
- Why do Oracle insist on disabling functionality before they fully implement an alternative?
- Why do Oracle still find it so difficult to deliver repository and seed data fixes, outside of horribly written, unintuitive, manually executed batch scripts that I have to hunt in their obscure documentation to find?
Ho hum, I guess this sort of hack-around is what we’ve come to expect and accept from Siebel releases these days.
I’ve put together many tools and apps over the years, mostly to help me learn the C# language, but also to help me on my quest to get the most out of Siebel. The Siebel Store was an experiment in “commoditizing” these tools and my code, and it hasn’t really worked very well given the nature of what we expect (i.e. everything for free) and how niche developers work together as a community (through mutual sharing).
In the true hacker spirit, therefore, I’m making all the tools completely free to download from now and for ever more. Simply head on over to the Software Store and choose your downloads – you don’t even need to be a registered user. I’m giving away:
Siebel Performance Log Analyser
Quickly see poorly performing SQL in your client or server SQL logs
Siebel Error Log Analyser
Quickly and easily identify critical “SBL” errors in your log files
Dynamic dedicated web client logging – and yes, it supports Siebel IP 17!
Advanced Microsoft MSMQ queue management in one handy app
I hope these tools help you on your own journey’s towards Siebel greatness!
Now that the Siebel 17 installation is complete, we can start the logical configuration and deployment process. It’s at this point you’ll want to apply any Patch Sets or whatever – just remember to shutdown the containers for the AI and Enterprise (via the applicationcontainer\bin\shutdown.bat script) and stop the Gateway service.
Before starting with the logical deployment, quickly check the regional settings on your host, if you’re running Windows. This must be set to “English (United States)” or the deployment process will fail. Oracle are fixing this under bug 27348563.
The Siebel Management Console is where all the activities take place. Think of this as an abstraction over the old configuration batch files, the shortcuts for which used to be installed in your start menu. There’s an order to the deployment tasks, so let’s go through them one by one.
Deploy the Enterprise
- First up, create a Siebel Fileshare folder somewhere on the host. I used “D:\Siebel\siebel_fs”
- Start the deployment process by navigating to the Profiles > Enterprise tab on the left side of the Siebel Management Console (hereafter referred to as SMC)
- Clone the sample profile and give it a name, for example “siebel_enterprise_profile”. The clone button is the one with two squares overlapping
- On the first tab, set the primary file system to the absolute path of the fileshare folder that you created. For example, “D:\Siebel\siebel_fs”. Enter the SADMIN username and password in the authentication section
- On the next tab, enter your database platform details. See an example from my Oracle Database Server below:
- On the next tab, select the “Gateway” authentication profile that you created when first logging in to the SMC
- On the last tab, you can leave the encryption type field unchanged
- Now submit the profile
- Now click the Deployment tab on the left of the SMC, and click the “+” button to create a new deployment action. Click the “Enterprise” item
- Select your Enterprise profile, give it a name, and select the “Deploy” radio button before submitting the activity
- After a great deal of whirring and clunking, your new Enterprise will be deployed into the ZooKeeper keystore and made available within the Gateway. You’ll also see a file system structure in place, a Gateway service and an ODBC datasource
Deploy the Siebel Server
Deployment of the Siebel Server is more of the same.
- Start the deployment process by navigating to the Profiles > Siebel Server tab on the left side of the SMC
- Clone the sample profile and give yours a name. For example, “siebel_server_profile”
- Enter the SADMIN username and password and the GUESTCST username and password, as you setup in your database
- Pick which Component Groups you want to enable and leave the port numbers as is
- On the last tab, leave everything as is. You’re all set to submit the profile
- Now click the Deployment tab on the left of the SMC, and click the “+” button to create a new deployment action. Click the “Siebel Server” item
- Select your Siebel Server profile, and enter your FQDN and HTTS port number. For example, “SIEB17.siebel-tech.com:9021”
- Give your Siebel Server a name, pick your languages and you’re ready to submit your Siebel Server deployment
- With a bit of luck, you’ll find a Siebel Server Services awaiting you!
Deploy the Application Interface
There’s a bit more to do to deploy the Application Interface, the replacement for the Siebel Web Engine.
- Start the deployment process by navigating to the Profiles > Application Interface tab on the left side of the SMC
- Clone the sample profile and give yours a name. For example, “ucm_appinterface_profile”
- You don’t need to worry much about what’s here, but you’ll want to specify the GUESTCST password as you defined it during the database setup
- Pick your object manager and specify your REST response base URL. For example, “https://SIEB17.siebel-tech.com:9011/siebel/v1.0/”
- On the second tab, give the application a name, for example “ucm” and choose the object manager. I’ve gone for “ucmobjmgr_enu”. Update the anonymous GUESTCST user password as before
- The third and forth tabs can remain unchanged. Simply submit your profile
- Now click the Deployment tab on the left of the SMC, and click the “+” button to create a new deployment action. Click the “Application Interface” item
- Specify the FQDN and HTTPS port number again. For example, “SIEB17.siebel-tech.com:9021”
- Select your profile and give the new AI a name and description before submitting the deployment
- You should see green lights all around!
You can now access your Siebel 17 user interface using your host plus the name of your AI profile. For example, “https://sieb17.siebel-tech.com:9011/siebel/app/ucm/enu”