October 09, 2015

Searching Calculated Fields and performance



 Originally posted on blog.notesonsiebel.com on April 3rd, 2007

The other day I was asked whether it’s possible to search calculated fields. The simple answer is yes – as can easily be tested. The complete answer’s a little more complex: query the wrong calculated field and the application will hang, CPU resources off the scale. So how can you predict what calculations are going to cause you problems?

When you execute any query, Siebel converts the user’s logical instructions to SQL. It doesn’t always do an optimal job, but you can usually be sure that most of the effort will be pushed to the database server. The problem with calculated fields is that certain functions don’t have standard cross-platform SQL equivalents.

The IIf function, for example, will never be translated to native SQL. When your field calculation contains an IIf statement, Siebel will write SQL to return a superset of data. The Siebel object manager is then left with the job of paging through the results, evaluating the calculation for each row. Needless to say, if the incomplete SQL returns a large dataset, this ain’t going to be fast.

In any particular example it’s worth eyeballing the SQL to confirm where the calculation is happening, but you can definitely expect problems with the following functions:

IIf
IfNull
ToChar
Right

Unfortunately, there’s no configuration way to prevent searching on an unpleasant field. If you’re running into problems then you’ll have to hit the PreQuery event with some scripting…

Changing the Local Database Password



 Orignally posteed on blog.notesonsiebel.com on March 29th, 2007 by stuandgravy

Users forget their passwords – that’s just the way it is. Without picking on anybody, certain users (cough sales guys cough) are particularly prone to this. And more often than not, they’re remote users who’ve not synchronised their local database for a week and desperately need their updates.
As with the server database, there’s no way to retrieve the current local database password. Password hashing algorithms are repeatable, but not reversible – sensibly enough. It is possible to change the password to something new though.

Connect to the local database, then run these SQL commands:

grant connect to USERNAME identified by PASSWORD
grant connect to SIEBEL identified by PASSWORD

Where USERNAME is the login for this database and PASSWORD is the new password (both in upper case). If for some reason you don’t know who the local database belongs to, the login can be retrieved with this command:

select name from SYSUSERAUTH
where name not in ('SYS','DBA','PUBLIC','SIEBEL','DBO','dbo','SSE_ROLE')

More often than not, you’ll also want to reset the server database password to match, so that you can sync up those outstanding changes. On Oracle, this is your usual:

alter user USERNAME identified by PASSWORD

There’s more info in SupportWeb TechNote 25, including scripts for different versions of SQL Anywhere to automate the process.

How to interview a Siebel Resource?


Originally posted on blog.notesonsiebel.com on March 26th, 2007 by stuandgravy
I’ve interviewed a bunch of Siebel techies and have evolved a few favourite questions, all based around the same theme: attempting to uncover technical breadth while avoiding obscure ‘gotcha’ questions. Things like this:

Q: How would you update a second field every time a first field is changed?

This is a great question: simple enough that a junior dev straight out of a tools course should come up with a few options and have some idea how they weigh up, but broad enough that a senior techie can lead you into detailed discussions about performance vs maintainability, good practices, upgrade issues, etc etc.
If the candidate’s running out of steam, leading questions can coax them toward more inventive answers.

For instance:
  • What if the second field is in a different business component?
  • What if there are multiple fields to be updated?
  • What if the second update needs confirmation?
  • What if the update still has to happen for batch (EAI/EIM) updates?

To the answer: I reckon the following is not a bad list to cover-off, but there’s still a few missing…
User Properties
+ minimal config
+ real time
+ robust (mostly!)
- limited
- require srf update

Runtime Events to Workflow Process
+ most things possible with native, compiled Siebel Operations
+ declarative, flexible, upgradable without srf update
+ long-running workflows for multiple consecutive events
+ real-time, optional asynchronous
- no loops (almost) without custom business services
- overhead of instantiating the workflow first time (then cached), which can have a big impact on mobile users

Server scripts
+ simple to write
+ low overhead
- not declarative, requires srf release
- higher level than vanilla C++ services (so slower, in theory)
- limited possibility to interact with the user


Browser scripts
+ opportunity for full manipulation of DOM, real-time interactivity
- maintenance headache (generating script, keeping versions current)
- interpreted at run-time (so slower, in theory)
- limited speed, memory space etc

Workflow Policy to Workflow Process
+ fully robust database-level trigger
+ fully asynchronous
- not real time, interactive
- not declarative, requires DBA maintenance

Locally unlocking a locked Project


Originally posted blog.notesonsiebel.com on March 22nd, 2007 by stuandgravy

With multiple developers building one application it’s inevitable that multiple developers will need to change the same project at the same time. There’s pros and cons and object-locking and change-control and build-control etc etc, but sometimes deadlines are too tight and you just have to fork.

In Siebel Tools, once one developer’s got a project locked the UI won’t let a second developer anywhere near it. To get around this you need to get into SQL Anywhere. Login to the second developer’s local database, then the following script will unlock the project locally:

UPDATE s_project
SET locked_flg = ‘N’
WHERE name = <Project Name>

The second developer can now log into Siebel Tools, manually lock the project as normal and do what she has to do. Of course, once build is done the two developers will need to go through a merge exercise to get their changes into the one repository, but that effort can be preferable to losing days of development time.

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.