Showing posts with label Hidden Truths of Siebel. Show all posts
Showing posts with label Hidden Truths of Siebel. Show all posts

Wednesday, July 24, 2013

How to migrate Runtime Events (RTE) from one env to another env?

Runtime Events (RTE) and Data Validation Manager (DVM) are the two highly used features whenever there is a requirement for imposing business rules in the process. Every another project has their own business rules to implement and Siebel developers use RTE and DVM as their first choice (mostly). Problem comes in when you are done with the development and now its time to move the RTE and DVM (Rule Sets) to different Env (QA, UAT etc). So if you have plenty of RTE implmented, it would be cumbersome job to create those RTE again in different env at various stages of the project life cycle.

To ease the job, Siebel has provided the way for taking the export it into a XML file and again import it back into another env. Runtime Events -> Menu -> XML Import/XML Export.

But, the irony is, it doesn't work as you expect. The basic assumption would be, you query your RTE, take the XML export and import the XML file into other env. System should get the new RTE created for you. But the reality is, this way you will end up exporting "ALL" RTE from the source env to destination env (which you never wants).

So, how to get the Runtime migrated?

  1. Navigate to ‘Administration Deployment Manager -> Deployment Projects’. Click ‘New’ and create a project for exporting the RTE. Remember to check ‘Export to File’ flag to ‘Y’.
  2. In the below applet create a new record and pick ‘Data Type Name’ as ‘Personalization – Events’. Save the record.
  3. Expand the ‘Data Type Name’ (by clicking on the + icon)      
  4. Drill down on the ‘Personalization – Events’ and you are navigated to ‘Administration Runtime Events -> Events’
  5. Query for the event you want to export and by using "Query Assistant", save this as PDQ.
  6. Again go back to your deployment project at ‘Administration Deployment Manager -> Deployment Projects’ and in the pick applet for the field ‘Deployment Filter’ against ‘Personalization – Events’ select the name of the PDQ you saved in the above step.
  7. Now Drill down on the ‘Personalization – Action’ and you are navigated to ‘Administration Runtime Events -> Action Sets'
  8. Query for the Action Set associated with your event you want to export and by using "Query Assistant", save this as PDQ.
  9. Again go back to your deployment project at ‘Administration Deployment Manager -> Deployment Projects’ and in the pick applet for the field ‘Deployment Filter’ against ‘Personalization – Actions’ select the name of the PDQ you saved in the above step.
  10. Check your configuration by clicking ‘Validate Filter’ button. If everything is fine click the ‘Enable’ button on the top applet. Status of your deployment project changes to ‘Enabled’ from ‘Draft’.
  11. Now go to ‘Administration Deployment Manager -> Deployment Sessions’. Create a new record and select the project you created in step 1.  Save the record
  12. Press the ‘Deploy’ button on the top applet and give the path on the server (if connected to thin client) or local machine (if connected to thick client) where you want the export file to be generated.
  13. Status changes to ‘Export Completed’ and the field ‘Log’ gives you the name of the xml file generated as a result of your export.
  14. Copy the xml files generated to you local machine (if connected to thin client)
  15. Go to the ‘Administration Data Manager -> Deployment Sessions’ on the server where you want to import your RTE. Click ‘Menu’ and select ‘Deploy From Local File’ and give the path where you have saved the xml files created and press ‘Import'.
  16. Your RTE will be created in the target system.

Special thanks to Manuj Garg for sharing this information.


Tuesday, January 5, 2010

Running a Workflow Process when "Workflow Process Manager" component shutdown?

Got surprised? I know, this is same reaction I had while brainstorming this with my friend that, "how is it possible?".

Okayy, lets play a question game today here on SiebelMantra and see how many Siebel Gurus visits this post to answer this question:

=========================================================
Is there any way you can run a Workflow Process when "Workflow Process Manager" component is not running on the Siebel Server?
=========================================================

Please provide your comments and I assure you that you will definitely going to learn few hidden truths in Siebel when I will provide my comments after few days with the complete summary for this post. Go ahead, write your views on the question asked.
.

Wednesday, August 19, 2009

Siebel LOV data mystery in 8.x !!!

I was working on one requirement in which there was a need to have two LOV record with same Display Values but different Language-Independent Code (LIC). If you have came across this kind of requirement earlier then you must be knowing that we can create two LOV records with same Display Value / LIC via providing some different value in "Sub Type" field. This is due to that fact that we have two indexes (User Keys) defined on "S_LST_OF_VAL" table, i.e. S_LST_OF_VAL_U1 & S_LST_OF_VAL_U2.

So, I went to "Application -> Administration - Data -> List of Values" view and tried creating the LOV records. Here is data I needed :





And here is what I got when I tried saving the second record.
Found another LOV record with the same display value but different language independent code 'First'. (SBL-SVC-52160)








Surprise !!!! I have specify the different Sub Type and still I am getting this error.

Now it seems that you cannot create two LOV records with the same Display Value. I checked it into metalink and found the same that you cannot do this if you are working in 8.x. I remember we used to create these kind of LOV records in 7.7 and 7.8. And the reason what Siebel says behind this behaviour is that LookupValue() and LookupName() function will return unique value.

Anyways, but this is what my requirement and I need to have these LOV records created, and as per the analysis I did with the user key indexes of S_LST_OF_VAL table, we can have it in database. So here below is way you can create the two LOV records with same Display Value :


"Instead of Copying the LOV record, if you create each record by clicking "New" button and specify different Sub Type then Siebel allows you to create." (May be a loophole what metalink says but this is how I created the two records)






I don't know why is behaving this way and this is what I observed. Anyways I got what I want to achieve. And this is FYI, when I used LookupName() function in Calc Field, it was returning the value of first record. i.e. LookupName("Test", "SiebelMantra") = First.

Your comments are welcome in case you see problem earlier and used some different workarounds.

.

Thursday, July 30, 2009

Limitation in "PRM ANI Utility Service" business service

I was working on one requirement which I was trying to implement using Workflow, where I need to perform the following :
a) Query on Account using EAI Siebel Adapter
b) Get the contact name for the very first child under the accounts.

requirement sounds very simple, same the case with me and I thought of using PRM ANI Utility Service to achieve the purpose with the help of just two steps in the workflow. So here is how these two steps looks like :

Process Properties:
Step1 : Query AccountBusiness Service : EAI Siebel Adapter
Business Service Method : Query
Step2 : Get Contact IdBusiness Service : PRM ANI Utility Service
Business Service Method : GetProperty

As per my expectation, I didn't get the "First Name" into process property "Name", but instead I was getting the error :

Error invoking service 'PRM ANI Utility Service', method 'GetProperty' at step 'Get Contact Id'.(SBL-BPR-00162)--Error Running Method 'Execute'.(SBL-PRM-00104)

I was getting crazy as not able to figure it out what exactly the root cause of it, but after some hit and trials it worked fine for me when there was only one single child record (Contact) under the Account for which I was querying. So let me tell you the reason why I was getting the error :



This is the snapshot from the watch window, where you can see there were actually 3 records under the accounts for which I was querying and due to this PRM ANI Utility Service was not able to figure it out for which record I need the First Name. So this is the limitation of this business service and you need to make sure while using "GetProperty" and "SetProperty" of this business service that there should not be more than one child in the propertyset.

I tried with querying for the Account having single Contact associated and it worked fine. So the only workaround is to write a customize business service if you want to get/set a property value of any child record.
Give it a try !!
.

Monday, June 22, 2009

SBL-DBX-00083: Unable to start due to incorrect system preference setting

No Parameter has been changed on the Siebel Server and no settings has been touched and suddenly this error started coming while running "Database Extract" component. So the way everybody's next step is to search for "SBL-DBX-00083" in Metalink, I also tried the same thing and very easily got to know that the solution for this problem can achieved by following the below steps :

a) Go to "Administration - Application -> System Preferences"
b) Query for : "Docking: Transaction Logging" parameter and change the value to "True"
c) Restart the Siebel Server
d) Restart the "Transaction Processor" component.

You must be thinking when the resolution is already available in Metalink, then why I am explaining that here..... :), because there is something new I observed.

Let me tell you what exactly happened and I think you might be interested in reading that. When I went to "Administration-Application -> System Preferences" view and queried for "Docking: Transaction Logging" parameter, I found none.
So I thought it might not be there (just a guess), finally I decided to create a new one with the value "TRUE". Hope I am going into the right direction as I was just following what is written in Metalink. After that restarted the Siebel Server and want to check if "Transaction Processor" component was running, but it wasn't. So I just restarted it, but I saw that the "Transaction Manager" has again got errored out with the error : "SBL-TXP-00011: Unable to Start the APIs". hmmmmm... I haven't got rid of one error and I found another one. This is what Siebel world is :)

Again went to the Support Web to check for the resolution and this is something strange now. The resolution for this error is also the same that I need to have "Docking: Transaction Logging" parameter to "TRUE". But I have already created that one, right?

I am not sure what is going on? Why Siebel is not accepting the parameter value that I have just mentioned under System Preferences view?

Idea came into my mind and here below is what it was :

a) Go to Adminitration-Application -> System Preferences view.
b) Do a "About View" to check for the Business Component Name. It was "System Preferences".
c) Go to Siebel Tools, check for the table name. It was "S_SYS_PREF".
d) Run the below query :
Select * from siebel.s_sys_pref
where sys_pref_cd like 'Dock%'
I got surprised, when I saw two records returned with the following names :

a) Docking:Transaction Logging with Value = "FALSE"
b) Docking: Transaction Logging with Value = "TRUE"

Can you observe the difference in the name of the parameters above two. Second one have a space after "Docking: ".

That means the parameter was already existing but not displayed on the UI and by mistake I have created a new one. So I deleted the one I created from UI and changed the value for the exiting one from backend like this :
update siebel.S_SYS_PREF
set val = 'TRUE'
where sys_pref_cd like 'Dock%'

restarted the Siebel Server and found that Transaction Processor is also running fine. Tried with a new Database Extract again and it went fine.

Be careful from now on, it may happen with you as well. If something is not available on the UI, that doesn't mean it is not available in the database. :)

Sunday, February 1, 2009

Mouse Hover Text for Siebel Form Applet's Controls

Again on the demand of our Client, we were able to found one unique feature in Siebel by which you can play with the "Controls" (button, textbox etc) available on any Form Applet. Thanks to Rahul (my colleague), who discover this feature. Once you are aware of this feature and just need to know the basic HTML programming, you can display the control the way you want. Sounds good !!! right??

Actually the requirement was to put a hover text on a TextBox (Account) displayed on Opportunity Form Applet. Let me tell you what a hover text is? It is basically a information about some field, which get displayed in a square box when you place mouse over the field.
OOB no feature is available on Control's property, which we can use to solve the purpose. You might be thinking of using "Prompt-Text String Override" property of control for this purpose, but I believe, this property just display the text in Status Bar when cursor is on the control.

So, for putting hover text on the control, we used "Caption - String Override" property itself. But here is a trick. We need to write the Caption along with the HTML tags, so that when this control get render on the UI with some additional HTML tags, we achieve what we are looking for.

Try this, change the Caption-String Override to :
<_label title="This is sample hover text">Account<_/label>
(Please remove the _(underscore) from the above text and then use. I used this for Account field on Opportunity Form Applet. Compile the SRF and see the magic.)

Some more I tried :

1. <_label style="BACKGROUND-COLOR: yellow">Currency<_/label>

2. <_b><_label style="COLOR: RED">OptyId<_/label><_/b>

So, the bottom line is, the more you know the HTML the more you play with the Caption on form applet.

Give it a try !!!!

.SPF file in Siebel

Sometimes in Software Professional's life, it happens that whatever he is doing/implementing is upto the mark and still not getting the right result. Well, after all the technology we are working-on has been built by people like us only and may be they might have done something mysterious which we are not aware of. So that is the time, we need to explore and find out the reason behind such behaviour....

The same thing happen with one of my colleague working on very simple requirement to increase the HTML length of one of the list column, displayed on Opportunity List Applet.

Sounds very simple... right?? So, to increase a Column Length of a List Column, what we need to do is :

1. Query for the specific List Column in Siebel Tools.
2. Increase the "HTML Width" property value to some significant number.
3. Compile the SRF and observe the change on the UI. If it doesn't look good, then you can play with the "HTML Width" property to increase/decrease the html length of the column.

Thats it ?? The answer is NO.

He (my colleague) followed the exact above mentioned steps and still observed that the HTML length of that particular List Column was as it was earlier. Thought that SRF might not have compiled properly, so compiled the SRF 2-3 times but not able to change the HTML length by a single centimeter.

Well, this is something strange that we observerd and after lots of investigation, we came to know about the reason behind this.

The culprit was .SPF file (Siebel Preference file), being created by the system for the user.

This is the file that Siebel creates for every user who logs into the application with the naming convention "'UserId'&'SiebelApplicationName'.spf" and stored in "//Siebel_server/Web Client/Bin" directory. This file actually stores the lot many information about the UI Changes that user can do on the UI. For Eg :

1. Increased/decreased HTML length of List Columns from the UI, that user might have changed according to his needs.
2. Order of the List Columns on the applet, in case user has changed any.
3. Order of the Screens displayed on the UI. (Application Menu -> Tools -> User Preferences -> Tab Layout)
4. "Recents Records" details being displayed on the "Home" views of various screen like Opportunities Home, Accounts Home etc.

So, the solution was just to delete this .SPF file from Server's Bin directory and restart the Siebel session.

Note: Deletion of this file will result in lost of all the preferences set the by user. Even I remember, due to this .SPF file only, we came across one another issue related to Views/Responsibilities. User was not able to see a newly added view under the Opportunity Screen, while the newly created responsibility was already been added to the user profile. Later we deleted the .spf file of the user and all worked well.