Debugging Workflow

download Debugging Workflow

of 41

description

siebel debuggin workflow

Transcript of Debugging Workflow

Debugging Workflow:Quite a few readers have asked me aboutreal time scenariosof various posts that I have written. I try to explain withexamplesso that it is easy to understand but I think putting it in real working scenario will make more sense and more understanding. So, today I am going to narrate a story how I debugged aworkflowerror that we faced in our Development environment.One fine day I an email with the following content in itError Code: (SBL-BPR-00187)(SBL-BPR-00100)(SBL-EXL-00151)(SBL-SCR-00141), Error Message: Error updating business component at step Update Sales Stage.(SBL-BPR-00187)This error is returned when theworkflowis executing the Siebel Operationbusiness service.(SBL-BPR-00100)

What I could figure out from this mail was that there is an error in aworkflowwhich has astep namedUpdate Sales Stagebut I had to find answer to the questions like WhichWorkflow? From where it is being invoked? Why it is failing?So to find the RC (Root Cause) this is what I did.Went to Administration Server > Server Management > Tasks

Queried forWorkflowprocess manager (WPM) records

Only realized that the log level is too low to get any information

So Went toAdministration Server > Server Configuration > Components to increase the log level

Queried for WPM component and increase the log level for the following components WorkflowDefinition Loading WorkflowEngine Invoked WorkflowProcess Execution WorkflowStep Execution SQL Tracing

Went again to Administration Server > Server Management > Tasks. Now I could see enough details ofworkflowprocess to figure out which Process is failing.

The name of the process wasGEAE UpdateQuote Sales StageSo, I went to tools had a look atworkflowonly to know that It was trying to update the opportunity sales stage and there was a script on the BC that was firing and preventingthe statusfrom being updated hence resulting in theworkflowfailure.This post is supposed to give you a direction on which you can proceed. It will be only with experience that you will know what exactly needs to be done in different situations. Share this: Digg Print

Learn by Sharing Siebel Knowledge

Top of Form

Bottom of FormHow to Increase Log Levels in Dedicated ClientRight Click on My ComputerGoto Properties -> Advanced -> Environment VariablesGoto System Variables. Click New. Add below valuesVariable Name : SIEBEL_LOG_EVENTSVariable Value: can be (1,2,3,4,ALL). Highest value is ALLGoto System Variables again. Click New. Add below valuesVariable Name : SIEBEL_LOG_DIRVariable Value: Directory where you wants logs like (c:\LocalLogdir)If you dont specify the directory, it will default to /SiebelDir/client/log for Client Logs and /SiebelDir/tools/log for Tools logsTools Logfile : siebdev.logClient Logfile : siebel.logLogOff your System and Login again. Relaunch your Siebel Application and Tools. You can see as you navigate through the application , your logfile size keeps increasing. BE-AWARE to reduce log level to 1 after your debugging is done, else it will create 100s of MB fileNOTE: You can also see the .dmp files in same log dir. You can get the XML files involved in your EAI Transactions as these .dmp files.How to design Siebel Outbound Web Services22 APRIL 20096 COMMENTS

Its complicated, but lets simplify it ..We need to configure Outbound Web Services in Siebel for invoking any third party Web Service and get data in the form of response message, on passing the required inputs to the external Web Service.Requirement:Siebel needs to get the latest Currency Conversion Rates, example INR vs USD.Solution:We will use a third party Web Service to do this conversion and get the converted currency rate in Siebel.WSDL:http://www.webservicex.net/CurrencyConvertor.asmx?wsdlImplementation:Its simple, just follow the below steps in order.1. Import the given WSDL file given above in Siebel Tools using the wizard: New Object -> EAI -> Web Services. If you are not able to import the WSDL directly from web url, just save the WSDL as a local xml file: CurrencyConvertor.asmx.xml on your desktop and then try to import it using the wizard.

Wsdl Import Wizard.2. This will generated two file as below -Runtime file: CurrencyConvertor.asmxLog file: CurrencyConvertor.asmx.logRuntime file: This file contains the Outbound Web Service parameters which can be imported in Outbound Web Service ScreenLog File: This file contains the logs generated in case the WSDL import in Siebel Tools fails. If there are warnings, they should not create any issues, and can be ignored.3. Importing WSDL in Siebel Tools will also create a new Business Service and a few new Integration Objects to be created. In this case newProxy Business Service: CurrencyConvertorSoapIntegration Objects: ConversionRate and ConversionRateResponse

Proxy BS After Import of WSDL.

Integration Objects Created After WSDL Import4. You will see that the Base Object Type property of these IOs is XML, which suggests that these are External Integration Objects.5. Compile your new Business Service and Integration Objects and Launch Siebel application from your dedicated client.6. Navigate to Sitemap -> Outbound Web Service screen. Click on Import button and browse for the Runtime file[ CurrencyConvertor.asmx ] generated by the wizard earlier.7. This will create a proxy Outbound Web Service in your Outbound Web Services Screen by. In the Operations applet, you will see the proxy Business Service Method Name.

Outbound Web Service Screen8. Click on the Clear Cache button at the top applet. This completes your Web Service Creation. Now, Re-launch your dedicated client for testing.

How To Test Siebel Workflows?Filed underHow To,Tips&Tricks,All,ConfigurationSiebel Workflows can be tested using Simulators. Using simulators we set the input process properties to some valid values and execute the simulator. Siebel provides two types of Simulator to test Workflows: Process Simulators and Business Service Simulators.Process Simulators:This simulator is available under Siebel Tools. Open Siebel Tools and create a workflow appropriately. Once ready to test, mention the default values for all the inputs under the WF process properties default string, especiallyObjectId.These values will be used when you simulate the workflow. To start the process Simulator choose the WF which is having a status completed or In-Progress, right click and choose Simulate Workflow process. Make sure you have provided all the Debug options correctly otherwise you might have trouble. Check my previous post onsetting up debug options. Depending on what login information you have provided under debug options it will connect to Local or Server while debugging. This will open up a new Siebel Client and you use the buttons to traverse the workflow. I use this simulator when I am developing the workflow before I check-in to the server. I will post another blog with more information on using this sometime next week.

Business Service Simulator:This simulator is available in Siebel Client. The Siebel Client could be Local dedicated client or could be a web client. Before we test the Siebel Workflow under this simulator publish and activate the workflow. Otherwise it wont work. To invoke this simulator, under Siebel Client go to sitemap-> Administration-Business Service ->Simulator. I like this simulator very much the reason being that even if the Process Simulator in Siebel Toolsmentioned above didnt report any errors this will definitely report errors if any. So this is very close to testing in real scenario. Other benefit of using this is that you can save your test cases in a file and load them when necessary. This simulator can also be used to test Business Services. I will post another blog with more information on using this simulator sometime next week.

1. Asked for the contents of the trainingSiebel 7.5Basic Siebel Architecture UI layer, BO layer, DO layerNavigationApplets, Views, Business ComponentsConfigurationMVG, Picklists, Joins, LinksExpressionsVisibilityConcept of PARTY tablesCase Study1. How do you differentiate between an extension table and base table?Extension table has a foreign key relationship with a base table. Usually PAR_ROW_ID column makes the foreign key.Extension table name like suffix _X.1. How do you uniquely identify an extension Column?The extension field name starts with X_Column Type is Extension.1. What is a business object?A business object consists of one or more business components. Its a logical unit of information. E.g. an Opportunity business object can contain opportunity and contact business components.A Business Object has represents functional business area and it has relationship between business Components.1. What is a view? What is the difference between a view and a screen?A view is a visual presentation of a Business Object. A screen is a collection of one or more views.Screen has multiple Views and view has multiple applets.1. Give example of a extension tableS_CONTACT_XS_CONTACT_XM1. Name the various types of tables in Siebel.Base Tables contain the application dataInterface Tables staging tables (EIM_) used for loading data.Repository Tables contain the object definitions1. What is a MVG? Where are the values for an MVG stored?MVG Multi Value Group.MVG is used to represent 1->M relation between two entities. Using MVG makes it possible to show Master-Detail relationship using only one Applet.e.g. 1 Account -> M addresses. You can configure 1 MVG, which can store Multiple Addresses of an account.MVG: Multi-value Group the Name justifies the function.1. What is a Party Table? What is its use?The concept of PARTY table was introduced from Siebel 7.0. Party refers to all types of Siebel person and business entities like Contact, Employee, User, Account and Organization etc.The S_PARTY table is the base table for all party business components and it has multiple extension tables (S_ORG_EXT, S_CONTACT etc.) that store the business data.1. What is .srf file?Its the Siebel Repository File. It contains the compiled version of all the object definitions present in a project. This file is used by Siebel.exe to run the application.1. Is it possible to add columns in the table?Yes, tables can be extended. It can be done through the Siebel Tools.1. What is an Applet? List out the different types of appletsThe applet is responsible for displaying the data to the user. An applet maps to a business component in the business layer. The different types of applets are:List AppletForm AppletPick AppletMVG AppletAssociate AppletChart Applet1. Give examples of Business ComponentAccount, Contact, Opportunity, Assets, Action, Service Request1. What is a Local Database? How it is stored?The local database is an exact replica of the server database. It contains repository tables and data for that particular user. The local DB is extracted from the server DB by running a server task giving the users login-id as a parameter. It is stored as a .dbf file (Sybase SQL Anywhere file).1. Differences between BO & BC?A Business Object (BO) is made up of one or more Business Components (BC). E.g. An Opportunity business object can contain opportunity and contact business components.1. Enumerate the steps required to do configuration once requirement document is given (check-out project etc.).The steps are Check out a project from the local machineDo the configuration changes on the local machine.Compile it and test it on the local machineCheck In the compiled projects.Compile the projects at server.1. What is a Gateway Server?Siebel Gateway Server is a server that has information about the Siebel servers and directs the server request task to the Siebel server that is less burdened. In a single Siebel server environment, the gateway too (mostly) lies on the same machine as the Siebel server.1. What is the difference between Static Picklist and Dynamic Picklist?The basic difference is that Static picklist is based on Picklist Generic BC (S_LST_OF_VAL table) and the dynamic picklist is based on BCs other that Picklist Generic.1. How many columns you can extend in Table?It depends on the third Party DBMS, how many columns it is supporting. Depending upon it, u can extend columns. Like Oracle is supporting 1024 columns.20 What is Join? Suppose I want an additional field to appear in asset screen say SR#Elucidate the various steps to configure it. (Note SR# is not present in Asset BC.)Join creates a relationship between a BC and a table other than its base table. Itallows BC to use columns from that table.Config:Step1 Lock the projectsStep2 Create a join between asset BC and S_SRV_REQ TableStep3 Give the join spec specifying the source field and dest column.Step4 Go to asset BC---fieldsStep5 Create a new field add the column name which correspondsTo SR# Field in S_SRV_REQ table. Then give the join name.Step6 Compile the project.21.What is the significance of setting the outer join flag true?If set true all the records can be retrieved even though the joinFields are empty. Say for every Contact, i have a Primary Account associated with it. Thus there is a join between defined between Contact BC and S_ORG_EXT table that has the primary account column. Now if for contact 2 there is no entry in Primary account column, then that particular record will not be retrieved of Outer Join Flag is not set. In order to retrieve all the records we need to set the Flag to TRUE22. What is the difference between link and join?A link implements 1:M & M:M relationship between the BCs. Link objecttype makes master-detail view possible in which one record of master BC displays with many detail BC record associated with that master BC. And the join implements 1:1 & M:1 relationship.23. What is the purpose of EIM?To load the data from legacy system to Siebel tables.24. Examples of EIM TablesEIM_ACCOUNTEIM_AGREEMENTEIM_ASSET25. What are the different processes in EIMImportsExportsDeletesMerges26. What are staging tables and what is their purpose.Staging tables are Siebel Interface tables which are prefixed with EIM_.Interface tables are used for maintaining the integrity while loading the data.27. What is the primary BC? How can u find out that a BC is a primary BC in a BO?Primary BC is a master BC from list of BCs, and parent BC business componenthas the same name as the BO.28. What is the use of a pickmap? If not specified what will happen to the picklist?Pickmap is used to copy a value from a picklist field to a business componentfield .If pickmap not specified field the there will be no values displayed andthe picklist will appear blank.29. If the view is not in users responsibility what will happen to the drilldown?The Drilldown will not appear.30. Have you created any web template?No. Siebel has provided the web templates we can directly use them.31. What is the difference between workflow process and a workflow policy?Workflow process is a graphical tool to define a business process. And workflowPolicy is the set of conditions and actions. When the conditions define in theworkflow policy are meet, the corresponding workflow process runs.Workflow process runs within application object manager and workflowpolicy runs as Server tasks.32. How a workflow can be invoked?Workflow can be invoked throughWorkflow policiesRun time eventsRepeating Component RequestScript33. What are the events available at BC level?SetFieldValue, PreSetFieldValueGetFieldValue, PreGetFieldValueCopyRecord, PreCopyRecordNewRecord, PreNewRecordDeleteRecord, PreDeleteRecordWriteRecord, PreWriteRecordQuery, PreQueryInvokemethode, PreInvokemethodeChangeRecord34. How can u make a field read only dynamically?By using the user property Field Read Only Field [field name]35. How can u say that the link relation is 1:M or M:M?If the relationship is M:M the link definition will have a Inter table, Inter parentcolumn, Inter child column whereas in 1:M relationship will have a source id anddestination id.36. What is an association applet? What is the significance of it?When user want to add a new record in the detail applet in Master-Detail view, it is same as we are associating a new detail record to the master record. Associate applet gives user the available list of records that can be associated with the master record with the flexibility to add a totally new record.37. On which table picklist generic BC is based on?S_LIST_OF_VAL38. Extension tables for S_PartyS_CONTACTS_ORG_EXTS_BUS_POSTNS_ORG_GROUP39. What is static and dynamic drilldown?In static drilldown the destination view is fixed but in case of dynamic drilldown the destination view can change dynamically depending in value in some field.40. What is the difference between _X and _XM table?_X is 1:1 extension table and _XM is 1:M extension table41. If I want to extend the table with a column where can I add it? why?We have two options for adding an extension column, we can add a column to the base table or we can add a column to the extension table. The selection criteria is that if the data in the extension column exist for most of the records and is been used frequently then its a better option to add the column to the base table itself otherwise it data in the column is not frequently accessed then we can add the column to the extension table.42. What is the difference between mobile web client, dedicated web clientand wireless web client?Dedicated web client connectsdirectly to a database server for all data access, and it does not store any Siebel data locally.Webclientruns in a standard browser.Wireless web client usesa wireless-enabled mobile device with a Web browser and Internet service (Laptop)Mobile web client isdesigned for local data access, without the need to be connected to a server.Handheldclient usesMobiledevices with a Web browser and Internet service using the Palm operating system.43.What are the steps to extend the database?Check out the relevant project.Add the column or table as an extension column or table respectively.Apply the changes to the local database.Compile the project and check in the changes.Apply the changes at the server database.Restart the server.Activate the changes to increase the database version.44.What is the difference between Get and Check out?Get makes it possible for the developer to get the server copy of the relevant project but Check out along with getting the server copy of the project, also locks the project at the server so that other developers are not able to check out the same project till the project in checked in.45.What is the significance of undo check out? maintain lockWhenever we want to revert back to the server copy of the project and again start the form scratchdo undo check out with maintain lock. This prevent from other developers checking out the same project in the mean time.46.I have configured the view, compiled it still the view is not appearing? What will be the cause?The view is not assigned to the user responsibility.47.What is the constraint picklist?You can dynamically filter a pick applet to display only records that have field values matching corresponding fields in the originating business components records. This can be done using constraint picklist.48.What is hierarchical picklist?A hierarchical picklist displays values that are constrained by values selected in another picklist. This is done using the Parent LIC property and the BC for the main picklist is set to Picklist Hierarchical and for the child picklist it is set to Picklist Hierarchical Sub-Area.49.What are business component user properties?Business component user properties allows to provide the specialized behavior such as making the record read only dynamically, changing the read only nature of the one field depending on value present in some other field.Some of the BC user properties are:BCReadOnly FieldFieldReadOnlyFieldDeepCopy nDeepDelete nOnFieldUpdateInvoke nOnFieldUpdateSet n50.What is the significance of a position?Position of the user in the organization decides the amount of data that is visible to him.51.Can we change the position during a session?No52.Can a user have more than one responsibility?Yes53.Is it possible to add more than one user to a responsibility?Yes54.How does a mobile client work?The Mobile client carries the exact replica of the server database relevant to him. This helps when the client is in remote area. Then after the work is done he synchronies with the server database to update the data and get the replica of the updated database.55.What is the difference between a .cfg and .srf file?The .cfg is the Siebel configuration file that has configuration details and the corresponding .srf files path is also mentioned.The .srf file is the siebel repository file that has the compiled version of the object definitions. The .cfg file is a readable notepad file while the .srf file contains binary representation of the object definition.56.What is a repository?The repository is the part of database that has the object definition stored in it. Many applications can share the same repository. The master copy of the repository lies in the server. Every developer has its own local copy.57.What is the significance of a primary?Primary shows the main record associated with the master among the list of records. The primary record is displayed by default on the applet. If primary is defined it results in better performance as it reduced the number of queries required to populate the record. Primary is the recommended practice and not the essential thing.58.How can u set a primary for a MVG at BC level?Under BC-MVL object definition, we can define the primary record under Primary Id field property59.What is the significance of Force Active?When set to TRUE retrieves data for all the fields even if the fields are not registered on the UI. This degrades the performance as extra data is retrieved even if that is not used.60.What are diff types of a join?Implicit andExplicit Joins.61.What is the implicit join? Can we create a implicit join if yes.Where can we define a implicit join?The join that are siebel provided are there definition is not present under Join object type. We cannot create implicit joins.62.Are the joined fields editable? How?The joined fields are not editable, but if we use Dynamic Picklist to retrieve data from joined table we can edit the fields.63.How to create a explicit join?Under BC child object definition, Join we define the join and the table with which join is to be created. Then we define the join specification under join child object definition, where we define the destination column and the source field.64.What is the significance of source id and destination column?The Source Field property identifies the foreign key field in the business component and the Destination Column property identifies the primary key column in the joined table. If left blank both have the default value as ROW_ID.65.How to create a static picklist? Which fields need to be set?For creating the static picklist we define the picklist that is to be used under the Field object definition property.Then we define the picklist under picklist object definition withType Field property set to Type andType value set to the LOV_TYPE that is to be invoked andStatic property set to TRUE.66.What is the difference between bounded and unbounded picklist?Under Bounded picklist user has to select any one option from the available list but in case of unbounded picklist user can select data from the available options or add there own data.67.What is an index? Significance?An index object definition is a logical representation of physical index in the underlying database management system. We cannot modify or delete the standard indexes provided by siebel but we can define the custom indexes if required.68.Can Link be used for 1:1 relationship?No69.How to bring a Party data party BC?There are implicit joins provided by siebel, to bring party data in the same party BC. The name of the implicit join is same as that of the table therefore we just need to define join property for the single value field as the table name and the column property as the required column name.70.How to bring a Party data other party BC?In this case we define an explicit join with PAR_ROW_ID as a destination column under join specification.71.How to bring a Party data non party BC?In this case we define an explicit join with source field and destination column.72.How to bring a Non party BC data non party BC?In this case we define an explicit join73.How can u set a primary for a MVG at applet level?We can select the primary record from the available list of record in the MVG applet.74.Are there any performance implications with a MVG? Is there any solution for it?If primary is not defined then the number of queries required to display the applet are more than if the primary is defined.75.What is the significance of cascade delete property? When we set it as clear what will happen?Whenever Master record is deleted, should the child record also be deleted or not or just the foreign key is to be cleared is specified by Cascade delete property. It has three values Delete, Clear and None.Delete: It deletes the child record also and the FK is also removed.Clear: It just removes the FK but doesnt delete the child record.None: It just leaves the child record and FK as it is.76.What is indirect MVG?An indirect multi-value link has a parent business component that related to the business component on which the MVL is defined by a join. The source field of an indirect multi-value link is based on a column that is joined in from another table and not a column in the base table.77.What is the difference between a stop step and end step?In workflow End steps shows the exception that is an error has occurred while running a workflow and the Stop is the logical end of the workflow and shows that the workflow ran successfully.78.How a WF process can be tested?WF process can be tested using the workflow simulator.79.What is the use of RCR?Suppose I want to run a workflow process after every 10 min and continue this 10 time then RCR (Repeating Component Request) is used.80.If there are more than one matching conditions for a workflow process. Which path will it follow?In fact it should match all the conditions that are mentioned to run a particular process.81.What is a sub process?Sub process is predefined workflow process that can be invoked in the a new workflow process82. Tell me the functionality of consumer goods.Our client is manufacturing, selling and distributing the cigarettes under different brands with different prices. To implement the Trade marketing and Distribution they have chosen the consumer goods vertical.The basic functionality can be described as follows.The sales representatives are classified into 3 groups. One is Pre-sales where the reps book the order, collect the payments, generate invoice and deliver the goods to the customers.PromtSales where the reps only book the order from the customersDelivery Where they deliver the goods to the customers order through the prompt sales reps and collect the payments.It also includes the booking the return orders, performing activities like credit limit allowed, type of payment allowed, and significance of the outlet.83. How do you implemented EAIA: Among the various available options, we integrated the SIEBEL application with back end SAP environment by using the IBM MQSeries middleware.84. What is significance of IBM MQSeries?A: It comes under hub & spoke type of integration. Its an asynchronous and will be deliver the message only once. The applications which are integrated by using this middle ware need not be online at same time. The messaging will be implemented by using queues85. How SIEBEL application identify the IBM MQSeries queues.A: Goto Sitemap -> Server Administration -> Enterprise Configuration -> Enterprise Profile Configuration.Create both the connection as well as data handling sub systems of relevant type (Depends on the middle ware using). After that restart the siebel services so that parameters defined are used to be stored under siebns.dat. These will be used by the eapps.cfg to create the connection between the IBM MQSeries and SIEBEL.86. What is Dispatch Service?A: When the message is received it will be initially dispatched to the workflow by using the Dispatch Workflow Process under the Data handling subsystem created in the profile configuration.The parsing of the incoming XML will be done by the following waySitemap -> Integration Administration Screen - > Dispatch Service ScreenUnder rulesets, the rules are defined by using the XPATH, by using which the XML will be parsed and dispatched to either business service of workflow process.87. What is siebel handheld?A: By using siebel handheld we are able to deploy siebel application in the POCKETPC (limitations are there with data and no of screens). Instead of using laptop, our client is using POCKETPCs for easy carrying as well as less consumption of time for reps to take the orders at the outlets.88. Tell me about functionality of Sales application.A: Our client is doing financial services in various countries. They divided them into different divisions. Each division is falling under a particular sales methodology. Each sales methodology is having defined number of sales stages. In each sales stage, they are predefined number activities to be completed.Initially when an opportunity is created, it has to under go all the sales stages and activities depending upon the Sales Methodology. The number of activities under a sales stage and the number of sales stages depends upon the sales methodology which is in turn dependant on the division89. What are activity templates?A: Activity templates are used to sequence the activities order under a particular sales stage.Goto Sitemap -> Application Administration -> Activity Templates.90. What are the differences between the compile time business services and runtime business services?Runtime Business Services: These BS are defined in the Application itself. Compilation is not required for these BS. These are used to be stored in the database itself.Goto Sitemap -> Business Service Administration -> Business Service MethodsCompiletime Business Services: These BS are defined in tools. In Siebel Tools, Under Object Explorer, go to Business Service. The BS services defined here are needed to compiled into before use.91. What are the best practices used for scripting (Verify for more)A: Implementing the error handling by using the try-catch-finally blocks.92. Rate yourself in configuration, scripting, workflows, EAI (all the modules that are there in your CV).93. What are the events available at BC level?94. Give some scenario from previous organization which u have implemented through the script95. What is the code to activate a customized button in script and on which event will you specify it?At AppletPreCanInvoke event, set CanInvoke to TRUE96.What was your role in the previous organization?97.Business Processes Scenario included in the previous organization?98.Your role in previous project?99.What did you do for 2 months after u joined TCS?100.Difference between Siebel 6 and Siebel Version 7 in very much detail including architecture?101.How do I display totals at the bottom of List Applet1 Set the Totals Displayed and Totals Required properties of the List object to TRUE.2 Set the Total Required property of the specific list columns that need to be totaled to TRUE.3 Set the Web Template used by the Base or Edit List applet Web template to Applet List Totals (Base/EditList).4 Use the value Total for the Property attribute of the tag in the template file:

or

When the Property attribute is set to Total, either in the tag or the tag, the total for the list column values is rendered if the listColumn is enabled for totals. If the list column is not enabled for totals, no outputis generated. This property is valid only when the tag is mappedto a list column.102.Where do we configure scale and precision?At the column object definition.103.How do I select dynamic pick applet in scripting?104.In scripting how will you decide whether to use this or Getbuscomp()When we want to refer the active BC, we use this and when we are not sure about the active BC or we want to refer some other BC whose name is known we use Getbuscomp()105.How do I trap error of scripting in Production environment?106.How do I trap error of Workflow?107.When is setprofileattribute and getsharedglobal used?SetProfileAttr is used in personalization to assign values to attributes in a userProfile.Syntax SetProfileAttrname,valueReturns Not applicableParameter Descriptionposition NameA string containing the name of the position.Parameter DescriptionnameA string indicating the name of the attributevalue The value ofnameUsage SetProfileAttr assigns the valuevalueto the attribute in a user profile indicated byname. If the profile attribute specified in the parameter string already exists, thecorresponding persistent profile attribute in the application is updated with the newvalue. If the profile attribute specified in the parameter string does not exist in thelist of persistent profile attributes, it is created as a dynamic profile attribute,without quotation marks encompassing the name.Used With Browser Script, COM Data Control, COM Data Server, Server Script, CORBA ObjectManager, Java Data Bean, Mobile/Dedicated Web Client Automation ServerSee AlsoName on page 172. For more information on user profile attributes, readApplications Administration Guide.Example Here is an example for Browser Script:function Applet_PreInvokeMethod (name, inputPropSet){if (name == "hobbyReq") {var hobby = theApplication().GetProfileAttr("Hobby");if (hobby == "") {hobby = prompt("Please enter your favoritehobby");theApplication().SetProfileAttr("Hobby", hobby);}return ("CancelOperation");}elsereturn ("ContinueOperation");}SetSharedGlobalShared global variables are unique to the user and the users associated session.One user's global variables are not visible to other users. The variables are globalto the current user and session only. The SetSharedGlobal property sets a shared user-defined global variable, which may be accessed using GetSharedGlobal.Used With Browser ScriptExample The following example displays a status message to the user.function BusComp_PreSetFieldValue (fieldName, value) {if (fieldName == "Account Status") {var cVolume = this.GetFieldValue("Current Volume");if ((value == "Inactive") && (cVolume > 0)) {TheApplication().SWEAlert("Unable to inactivate anaccount that has a current volume greater than 0");return ("CancelOperation");}elsereturn ("ContinueOperation");}elsereturn ("ContinueOperation");}108.How do I get a value of a dynamic pick list using scripting?109.How do I call workflow process from scriptingBy using scripts, workflow processes can be invoked from anywhere in the Siebelapplication or from external programs.When invoking a process from a script, you can specify that the process run either on the server or in the object manager. To run a process on the server, call the service Workflow Process Manager (Server Request). To run a process in the application object manager, call the service Workflow Process Manager.The following is a sample script that invokes a workflow process called My Account Process. In this example, the process is invoked in the object manager.// Example: Invoking a Workflow Process via scriptingfunction Invoke_Process(){var svc = TheApplication().GetService("Workflow ProcessManager");var Input = TheApplication().NewPropertySet();var Output = TheApplication().NewPropertySet();var bo = TheApplication().ActiveBusObject();var bc = bo.GetBusComp("Account");var rowId = bc.GetFieldValue("Id");Input.SetProperty("ProcessName", "My Account Process");Input.SetProperty("Object Id", rowId);svc.InvokeMethod("RunProcess", Input, Output);}110.How is the configuration different of static drilldown which points to same BC than the one which points to different BC?Inthe static drill down to the other BC the destination BC and the source and destination property is defined.111. When is link search spec used and when is BC Search spec used and how they are combined in application?112. What is SWSE?113. What is significance of eapps.cfg?114. What is Siebel service?115.What are the process properties?116.What is an object id and what is its significance?When testing the WF Policy for a particular record we define the row id of the object id record under default string under Process properties.117.What is the significance of Siebel operation id?It is the object identification of an object that is updated, created or queried during Siebel operation. It is populated automatically when the Siebel operation step is executed.118.What is a script? And why it is used?Sometimes there are business requirements that cannot be fulfilled using configuration. Siebel provides alternative for to achieve these and that is through Script.119.What are diff scriptable objects?Applets, BC, Business Services, Application.120.What is difference between a server script and a browser script?Browser script is written were we need to communicate with the user or desktop application. Also when the scope of the script is limited to the current record only.Server script is written when the scope of the script is not limited to the current record.121.What are profile attributes?The user profile attribute are the profile attributes that are set using Set Profile attribute method and are accessed using Get Profile attribute method.122.What is the difference between this. And Application (). Method?Scope of this is limited to the active business object only but using Application () it is possible to refer any of the business Object.123.How much text a Siebel editor can store.16 K of text can be stored in Siebel editor.124.What is the difference between preinvoke and precanInvoke event?Preinvoke event occurs prior to calling the actual method, and PrecanInvoke event occurs prior to Preinvoke event, just to check that if the user has privilege to invoke the method.125.What are WF server component?WF Monitor Agent, WF Tuning Agent126.Where can u write a business service?At Tools and Application level.127.What is the difference between writing a script in a tool and in an application?Scripts written at tools level are complied in the .srf file, therefore changes cannot be incorporated easily. Scripts written at the Application level are not the complied script and thus changes can be incorporated easily. But Application level scripts are not secure as any user having access to the view will be able to view the script. The Tools level scripts are faster to load then application level scripts as they are complied scripts. If the script with the same name exist at both tools and application level then Tolls level script being the complied one have priority over the application level script.128.What are the different tables used in WF?S_ESCL_REQS_ESCL_STATES_ESCL_ACTN_REQS_ESCL_LOG129.What is a Siebel operation step? Does it support a Delete operation?Siebel operation step user in WF to insert, update, Query the database. It does not support Delete operation.130.What is the significance of Immediate post changesWhenever we need incorporate the changes in the field immediately, we need to send the changes to the server. This can be done by setting immediate post changes property at the field level.131.What is the code to activate a customized button in a script and on which event will u usefor it?The script is written at AppletPreCanInvoke event and setting the CanInvoke to TRUE.132.What was your role in previous organization?133.Where did u write the script? On which event?134.What was the business process followed?135.When are link search spec used and when is BC Search spec used and how they are combined in application?The link search spec will be added to the child BC search spec only if the link is active.136. Visibility Concepts in Siebel. Where all is Visibility Specified in Siebel Application?Visibility Concepts in Siebel ensures that what all views should be visible to the user and what amount of data is relevant for him. Responsibility and Position determines the visibility for the user.137.How is tabs and show dropdown configured? How they are diff from visibility prospective?View dropdown are configured using visibility applet and visibility applet type property at the view level, and View Tabs are configured at BC View mode level.138.You have to show Opportunity in Activity Screen. How will you do that?Using a join from Activity BC to Opportunity Base table.139.Difference between Siebel 6 and Siebel Version 7 in very much detail including architecture?140.If we have fields A and B both are not mandatory fields .but if A is having value then B is mandatory, how you achieve this in Configuration?This can be done using the Field user properties. Under Field B > User properties, add a User Property with Name = Required & Value = IIf ( [ A ] is NOT NULL, Y, N ). This will check the value of field A and if it found out to be NOT NUL, then field B will be made Required else field B is not a required field. We can also check that if field A is having some specific value for that field B becomes required.141.What is the difference between Default column and Fixed Column?Default columns take the value from the ifb file if the value is in EIM column is NULL, while Fixed column take the value given in ifb file even if the value under EIM column is not NULL.142.Why do we define Destination field and the Source column under join spec and not destination column and the source column?As the Join is between a BC and the Table for mapping between the two we define the child objects of both the objects i.e. for BC we define Destination field and for Table, the Source column. Also as we are just displaying the data from other Table and not coping the data into some other column, we dont require the destination column.143.User is able to select record from the dynamic picklist and the controls in the applet are populated with the selected records data, but when refreshed data is not seen. What might be the problem?Whenever dynamic picklist is used, the pickmap shows what all fields need to be populated and it also stores the id of the selected record for future reference. This id is not defined in our case.144.What is get profile attribute and get shared global? What is the differencebetween them?Get Profile attribute method is used for get the user profile attribute that is set using set profile attribute method to access the user specific attribute. The profile attributes are of two types, Persistent and Dynamic. Persistent attribute are the defined attributes that exist in Siebel and the values of these attributes is actually stored in the database. Whenever a new attribute is created it is the dynamic attribute and it is valid for the current session only. Its value is not stored in the Database.Shared Global are the global variable declared by the user. These are session specific and the variables declared by one user cannot be accessed by some other user. They can be set using Set Shared Global method and accessed using Get Shared Global method.145.What are the new features added in 7.7 siebel application?The Application home page view is more interactive with applets providing direct links to the data and common tasks related to the current user. Individual user can personalize their homepage including layout and visible applets using the built in layout editor.Site map shows four level of navigation.Screen specific home pages are also provided.Navigation links are available at screen and view level.Back, Forward and History navigation is done supported by the browser buttons.The active applet is highlighted.Records can be sorted by clicking on the column itself.Column can be freeze by double clicking on the column itself.Columns can be arranged by drag and drop method.Controls are logical grouped in the form applet.Grid Layout capability provides flexible form design.Print button is provided.Query Assistance is provided.Text editor is provided for the text field.Shuttle applet simplifies associating and grouping records.Record count option is present in the menu.Read only view can be added in the responsibility of the user.There is a new tab layout in Application Administration screen that makes it easier for the administrator to define default tab layout for responsibility.Siebel 7.7 has a new Inbox functionality that provides user with a centralized list of all the items requiring their attention. This can include SR, Opportunity, Expense Reports, Content Items.iHelp provides real time assistance as user navigates through the application, by continually showing guidance related to the screen he is working on.146.What is Upgrade? How does it work, explain in brief?Upgrade is carried out to make organization specific data and functionalities available the new release. Upgrade is an iterative process that works from environment to environment. The Dev environment is upgraded at the first step. It merges the repository with the new release. The output files, i.e. the schema and repository file serves as input to the prod environment. If Dev environment is not present then the schema and repository file provided with the new release is used.The upgrade tasks are classified as Pre upgrade, Upgrade and Post upgrade.Pre upgrade:It covers the following tasks, upgrade RDBMS, setting RDBMS parameters, renaming the repository, upgrade third party software, close database connections, clear pending workflow tasks, disable custom triggers.Upgrade:In Dev environment1. Run the Database server configuration utility in Upgrep mode. This performs the basic upgrade of the siebel database schema and also loads the repository to prepare for merge.2. Then the actual merging of the repository takes place which takes the vanilla and custom repository of the earlier version and the vanilla repository of the new version, to prepare a new custom repository for the new version.3. Run the Database server configuration utility in Upgphys mode. This further upgrade the repository to include the changes reported after the merge and thus completes the database upgrade.The output from this step i.e. the two files, custrep.dat and schema.ddl that servers as input to the prod environment.In Prod environment1. Run the Database server configuration utility in Upgrep mode that uses the two files from Dev environment to change the database schema.2. Run the Database server configuration utility in Upgphys mode that completes the database upgrade and also perform some admin tasks.Post Upgrade:Setting up the user i.e. extracting database for each developer.Setting up the user access and visibility.Post upgrade configuration.Testing.

Top of Form Using the EAI HTTP Transport in Sessionless Mode

Using the EAI HTTP Transport in sessionless mode allows you to use one URL to perform Login, Request, and Logoff in a single HTTP request. This mode does not use session cookies because there is no login session between the HTTP requests. The disadvantage of this mode is the overhead incurred by the Application Object Manager needing to log in with every request.Table21presents each of the variables for sessionless mode.Table21. SessionlessModeVariables

VariableDescription

webserverURL of the Web server that has Siebel Web Engine installed, such as www.myserver.com.

pathDefault is eai. Virtual path on the server referring to the specific SWE configuration.

sourceNamed subsystem as specified in the[HTTP Services]section in the application configuration (.cfg) file.

usernameSiebel user name for the Application Object Manager login.

passwordPassword for the login user name.

data textBusiness service input data. Most of the time, this is the text of an XML document that on the server side is converted to a PropertySet and passed to the business service. For more information on how to pass Properties and PropertySet to Business Services, seeSiebel Business Process Framework: Workflow Guide.

Example Request for the HTTP Protocol in Sessionless ModeIn this example, the URL describes the parameters for the HTTP Inbound Transport call over HTTP: Using HTTP GET:URL = http://webserver/path/start.swe?SWEExtSource=source&SWEExtCmd=Execute&UserName=username&Password=password&SWEExtData=data textNOTE:Unlike session mode, the SWEExtCmd is Execute, not ExecuteLogin. Using HTTP POST:URL = http://webserver/path/start.sweHTTP Body = SWEExtSource=source&SWEExtCmd=Execute&UserName=username&Password=password&SWEExtData=data textNOTE:When using the sessionless mode with the POST method, the XML data text must be URL-encoded to prevent any errors.When using the sessionless mode with the POST method, the data text includes the login credentials as well as the XML document. Therefore, it is recommended that the data text be URL-encoded and that the Content-Type header be set toapplication/x-www-form-urlencodedwithout specifying the character set (for example,;charset=UTF-8).Use an escape code for any special characters (that is, use an ampersand, followed by the special character's escape characters, followed by a semi-colon) before encoding them for the URL. For more information, see the topic on special (escape) characters inXML Reference: Siebel Enterprise Application Integration.Example Sessionless Mode URLNOTE:This sample URL must be entered as a single line of text. The URL is presented here on separate lines for clarity.http://www.myserver.com/eai/start.swe?SWEExtSource=SiebelQuery&SWEExtCmd=Execute&UserName=user1&Password=login123&SWEExtData=

A. K. Parker Distribution

StanGraner

To use this URL you do the following: Change the Web server address, www.myserver.com, to your actual Web server URL. Verify that theSWEExtSourceargument has a corresponding section in the[HTTP Services]section of your eai.cfg file. Change the Username and Password arguments to those of a valid system user, such as SADMIN/SADMIN.

Transports and Interfaces: Siebel Enterprise Application IntegrationCopyright 2011, Oracle and/or its affiliates. All rights reserved.Legal Notices.

Difference between queues and web service:Web Services: They are the fastest methods of integrating external applications. Process are like no extra setup is needed, Data can travel via internet .But They have their conditions like limitations of data can be sent(vary from 1-4MB),retry mechanism can be needed in case of failure.Queues: Here we can sent more data comparing with web services. No retry mechanism is needed in case of queues .In this case queues are more reliable But queues we needed extra h/w as well as s/w setup needed in Siebel as well as external system/middleware.

EAI Transaction Service:

Simple Scenario

A simple usage scenario for the EAI Transaction Service is that the activity should report when an update of this kind is made by an EAI interface rather than the end user. So I added another business service step to the workflow as follows:

Business Service: EAI Transaction ServiceBusiness Service Method: IsInTransactionOutput Argument: Populate the WF Process Property IsEAITransaction with the value of the IsInTransaction output argument.

I also changed the Siebel Operation step which creates the activity record to include the following expression in the description text.

+ IIF([&IsEAITransaction]='true'," Update made by EAI Siebel Adapter","")

As a result, the text "Update made by EAI Siebel Adapter" will be added to the description text when EAI Siebel Adapter is currently executing a transaction upon the record.

Next, I used the Business Service Simulator to invoke EAI Siebel Adapter's Upsert operation on some opportunities and voil, the activities were created as follows:

Other Scenarios

The EAI Transaction Service is especially useful for situations when a complete Siebel Message is treated as a single transaction (which is the default behaviour of EAI Siebel Adapter) and runtime events or scripts in "Pre" event handlers need to wait until all data operations have been committed successfully.

We can imagine that the EAI Transaction Service's IsInTransaction method can be invoked at the beginning of the respective script or workflow to determine whether the current event has been caused by an EAI transaction and then defer the script or workflow execution.

This avoids problems which occur when the "Pre" event handlers are executed for a record which is touched by EAI Siebel Adapter but later an erroneous record in the Siebel Message causes EAI Siebel Adapter to "roll back" the changes (technically correct: it does not commit).

Property Sets and XML Converters

This is a follow-up on a previouspost on Integration Objects and their representation in memorywhich, triggered byJose's commenton theXML Converters overview, explained how an integration object definition is used byEAI Siebel Adapterto produce a hierarchical property set.

In order for an external system to read or interpret the Siebel data, the datastream must be converted from a property set to a somewhat more standard based form of communication.

Being an early adopter of emerging technologies, the Siebel design team for version 6 (aka Siebel 2000) decided to use XML as the favorite language for data exchange when it comes to Siebel EAI (this was back in 1999, so kudos for being so wise to adopt the then-hyped XML).

So how do the various XML conversion business services work exactly?

The more explorative you are, the more you learn. So grab a Siebel app, navigate to the good ol' Business Service Simulator view and test drive the services.

I followed the following process to verify the findings below:

1. Run EAI Siebel Adapter's Query method using any integration object and sample record you like to produce a hierarchical property set. Slightly modify the output (e.g. rename SiebelMessage to XMLHierarchy) if needed.

2. Run the xml converter service's method against this hierarchical property set and inspect the output.

1. EAI XML Converter

This converter service only cooperates when there is a child property set of type "SiebelMessage" present in the input property set for the IntObjHierToXMLDoc method. This method has a lot of optional input arguments that drive how the resulting XML should look such as XMLCharEncoding, XMLHeaderText, UseSiebelMessageEnvelope and Tags on Separate Lines.

As with all converter services, the resulting XML document is stored in the Value property of the output property set, ready for consumption by a transport service.

2. XML Hierarchy Converter

Some components of Siebel CRM such as Data Quality exchange data in the form of hierarchical property sets which have their root property set's type set to "XML Hierarchy". In order to convert to and from such property sets, you use the XML Hierarchy Converter business service.

The XMLHierToXMLDoc method of this business service has similar input arguments as it's sibling in EAI XML Converter albeit they are not specific to SiebelMessage handling.

The Value property of the resulting output property set contains the generated XML document which is an exact representation of the child hierarchy of the XMLHierarchy root.

3. XML Converter

This business service simply converts the entire input property set to an XML document and vice versa without requiring specific child types. Its PropSetToXML method does not have any input arguments so you have no control how the XML document is generated. However you can control the business service's behaviour by modifying its user properties in Siebel Tools.

Comparing the Results

If you compare the output of the three converters, you will note some differences. Only EAI XML Converter (left) converts the properties to elements (note the Account Status field in red borders in the screenshot below) XML Hierarchy Converter (middle) starts with the first child property set whereas XML Converter (right) swallows the entire hierarchy of the input property set

http://siebel-essentials.blogspot.com/search/label/EAI

Bookshelf Home|Contents|Index|PDF

Integration Platform Technologies: Siebel Enterprise Application Integration>Integration Objects>About Integration Component Keys>User Keys

A user key is a group of fields whose values must uniquely identify a Siebel business component record. During inbound integration, user keys are used to determine whether the incoming data updates an existing record or inserts a new one. The Integration Object Builder wizard automatically creates some user keys based on characteristics discussed inUser Key Generation Algorithm. Make sure that the generated user keys match your business requirements; otherwise, inactivate them or add new user keys as appropriate.In Siebel Tools, user keys are defined as Integration Component Key objects, with the Key Type property set to User Key.Integration component keys are built by the Integration Object Builder wizard, based on values in the underlying table of the business component on which the integration component is based. Integration objects that represent Siebel business objects, and that are used in insert, update, synchronize, or execute operations, must have at least one user key defined for each integration component.A sequence of integration component user keys is defined on each integration component definition, each of which contains a set of fields. During processing of integration component instance, the EAI Siebel Adapter chooses to use the first user key in the sequence that satisfies the condition that all the fields of that user key are present in an integration component instance. The first instance of each integration component type determines the user key used by all instances of that type.For example, consider the Account integration object instance with only the Account Name and Account Integration Id fields present. When the EAI Siebel Adapter performs validation, it first checks the Account Name and Account Location fields (the first user key for the Account integration component). In this example, because the Account Location field is missing, the EAI Siebel Adapter moves to the second user keyAccount Integration Id. The Account Integration Id field is present in the integration component instance and has a value, so the EAI Siebel Adapter uses that as the user key to match the record. Now if the same instance also had the Account Location field present, but set to null, then the EAI Siebel Adapter would pick the Account Name and Account Location combination as the user key. This is because Account Location is not a required field.A new user key is picked for each integration object instance (root component instance). However, for the child component instances, the user key is picked based on the first child instance, and then used for matching all instances of that integration component within the parent integration component instance.For example, if a Siebel Message contains two orders, then the user key for order items is picked twice, once for each order. Each time, the user key is selected based on the first order item record and then used for all the siblings.NOTE:The EAI Siebel Adapter uses user keys to match integration component instances with business component records. Because the match is case sensitive there is a chance that records are not matched if the cases of the user key fields do not match. You can use the Force Case property on the business component field to make sure that user key fields are always stored in one case, but only if you require case-insensitive matching for performance reasons. Routine use of the Force Case property is not recommended.NOTE:For performance reasons, user keys for child integration components are not included in the WHERE clause of the SQL generated to query for child component records in the Siebel database. If you must query the child component to find matching records, consider redesigning your integration objects, such as creating a new integration object where the child component becomes the parent. For example, if Account is the parent and Asset the child, and you to query for specific assets, then create a new integration object where Asset is the parent and Account is the child.User Key Generation AlgorithmThe Integration Object Builder wizard computes the user keys by traversing several Siebel objects, including the business object, business component, table, and link. This is because not every table user key meets the requirements to be used as the basis for integration object user keys.To understand how the Integration Object Builder wizard determines valid integration component keys, you can simulate the process of validating the user keys. For example, you can determine the table on which your business component is based by looking in Siebel Tools.To find the user keys for a table1. Select the Business Component object in the Object Explorer.The Business Components list appears in the Object List Editor.1. Select a business component.1. Click the link in the Table column.The Tables list appears, displaying the table associated with the business component (for example S_CONTACT).1. Expand the Tables object in the Object Explorer, and then select User Key.The User Keys list displays the user keys defined for that table.For example, as shown inFigure11, the table S_CONTACT has several user keys.Figure11. UserKeysforTableS_CONTACT

Not every user key will necessarily be valid for a given business component. Multiple business components can map to the same underlying table; therefore, it is possible that a table's user key is not valid for a particular business component, but is specific to another business componentEach User Key Column child object defined for a given user key must be exposed to the business component in which you are interested. For example,Figure12shows three user key columns for the user key S_CONTACT_U1.Figure12. UserKeyColumnsfortheS_CONTACT_U1UserKey

If the columns of the user key are exposed in the business component, and those columns are not foreign keys, the Integration Object Builder wizard creates an integration component key based on the table's user key. The Integration Object Builder wizard also defines one integration component key field corresponding to each of the table's user key columns.The Integration Object Builder wizard builds the integration component keys based on these table user keys. As illustrated inFigure13, the wizard defines one integration component key for each table user key column.Figure13. IntegrationComponentKeysforEachTableUserKeyColumn

Each valid integration component key contains fields. For example, as shown inFigure14, for the Contact integration component, User Key 3 is made up of five fields: CSN, First Name, Last Name, Middle Name, and Personal Contact.CAUTION:Only modify user keys if you have a good understanding of the business component and integration logic.Figure14. ContactIntegrationComponentKeyFields

When the Integration Object Builder wizard creates these integration component keys, it attempts to use the appropriate table user keys the user keys that help to uniquely identify a given record. In some cases, you may find that certain integration component keys created by the Integration Object Builder wizard are not useful for your particular needs. In that case, you can manually inactivate the keys you do not want to use by checking the Inactive flag on that particular user key in Siebel Tools. You can also inactivate user key fields within a given user key.NOTE:For ease of maintenance and upgrade, inactivate unnecessary generated user keys and user key fields instead of deleting them.

Integration Platform Technologies: Siebel Enterprise Application IntegrationCopyright 2011, Oracle and/or its affiliates. All rights reserved.Legal Notices.

Status Keys

It is useful to know the status of your integrations. For example, if you are sending an order request, you might want to know the ID of the Order created so that you can query on the order in the future. You can set the StatusObject method argument of the EAI Siebel Adapter business service to true to return an integration object instance as a status object.The status returned is defined in the Integration Component using Status Keys. A Status Key is an Integration Component key of the type Status Key. Fields defined as part of the Status Key are included in the returned StatusObject.If a Status Key is not defined for the Integration Component then neither the component nor any of its children are included in the returned object: To include descendants of an Integration Component without including any of its fields in the returned status object, specify an empty Status Key. To include information about which one of the update, insert, or delete operations was performed during an upsert request or synchronize request, include a field namedOperationin the Status Key.Ex:

Integration Component Field Properties

In this post we are going to go through theIntegration Component fieldproperties in detail because these are the properties that you will modifying frequently.Type:This property can have one of the three values Data :This is the default type for the business component fields vanilla and custom fields. System:This is the default type for the business component system fields (Id, Created, Updated). Custom:This is new type that has been introduced in Siebel 8.0. I havent had a chance to play with property thoroughly but whatever I have seen so far this property can used to introduce tags with constant values.Name, External Name and XML Tag:These three properties are related. They are just three different representation of the same field and are used at different time. Lets go through them one by one External Name:This is the name of the business component field. Lets say you added a new field SR Number in your business component that you need to sent to external application as part of your XML. So, you will create a newIntegration Component fieldand mention SR Number in theExternal Name property. Name:For most of the scenarios this value will be same as External name. There are very few cases where you will need to change this value and we will go through one such scenario later in the series. XML Tag:The external application expects new XML Tag to be ServiceRequestNumber then in the XML Tag property you will mention ServiceRequestNumber as value.XML Style:This is very important property and can have one of the three values: Attribute:If you define XML Style of your field as an Attributethen once your Siebel Message is converted into XML Hierarchy it will appear inside a XML Tag

Element:Your field will appear as an XML Tag inside XML Hierarchy

Element:Your field will appear as an XML Tag inside XML Hierarchy ComponentElementValue:You can define one field asComponentElementValueand it will appear value of the the IC to which this IC fields belong. I havent been able to exact practical use of this property, so my understanding might not be accurate. Please feel free to correct or enhance it if you can.Below image will show what effect these properties have on fields when they appear in XML

Attribute is property of element used to describe more about element. So, how is it decided that, to which element this attribute will belong?? This is where the next property comes into play.XML Parent Field:Usually this field does not have any value but when you define a field as an attribute then you need to specify to which element this attribute belongs. In the above example I wanted to make App an attribute of the Folder element. So, as shown in the screen shot below I defined Folder as parent of App.

Rest of the properties are self explanatory but if you have any questions about them, do let me know. Before I end this post I have a question for youWhat if I define an Integration Component field as Attribute but leave its XML Parent Field blank???

Siebel EAI - Integration ObjectsSiebel integration objects allow you to represent integration metadata for Siebel business objects,XML, and other external data structures as common structures that the Enterprise Application Integration (EAI) infrastructure can understand. Because these integration objects adhere to a set of structural conventions, they can be traversed and transformed programmatically, using Siebel eScript objects, methods, and functions, or transformed declaratively using Siebel Data Mapper.

The Siebel integration object provides a hierarchical structure that represents a complex data type.The typical integration project involves transporting data from one application to another.In the context of Siebel EAI, data is transported in the form of an integration message(Siebel Message).

A message,typically consists of header data that identifies the message type and structure, and a body that contains one or more instances of data. This siebel message is nothing but integration object instance.

An integration object instance is actual data organized in the format or structure of the integration object.

Key Feature of Integration Object:

1)Custom Integration Component Fields:Custom attributes can be addedmanuallyto integration objects as integration component fields. The integration component field typeof custom attributes must be set to Custom. XML style can be chosen as Attribute or Element, appearing in the schema as XML attributes and XML elements, respectively.

2) Multivalue Groups in IO:when you are creating IO the MVG Field are going to convert into a child Integration components.An integration component user property will be set on this integration component to tell the EAI Siebel Adapter that it is based on an MVG business component. If the MVG is a regular MVG, the user property isnamedMVG. If the MVG is an Association MVG, then the user property is named MVGAssociation. In both cases, the value of the user property is Y.

In Parent integration component field user property will be there that contains the entry MVGFieldName or AssocFieldName.

3)integration component Picklists Field:If you want to perform validation of Picklist field by "EAI siebel Adapter" provide IC Field user property "PICKLIST=Y" otherwise validation will be taken care by Object Manager during execution.

4)integration component Calculated Fields:By default these fields are inactive in IC and it can beactivatedas per business requirement.

5)integration component Inner Join Fields:By default the wizard inactivates such fields. If your business needs require these fields,activatethem.Activating an inner join can cause a query on that integration component not to find existing rows.

6)integration component Field Dependencies:Define dependency between fields by using the user properties of the integration component field. Thenamesof these user properties must start with FieldDependency, and the value of each property should contain the name of the field on which the associated field is dependent. The EAI Siebel Adapter processes fields in the order defined by these dependencies, and generates an error if cyclic dependencies exist.

7)integration component Operation Controls:Each integration component has user properties that indicate if an Insert, Update, or Delete can be performed on the corresponding business component,If any of these user properties are set to Y, the corresponding business componentmethodis used to validate the operation.

NoInsert:if Y an Insert, can not be performed on the corresponding business component.

NoUpdate:if Y an Update, can not be performed on the corresponding business component

NoDelete:If Y a Delete, can not be performed on the corresponding business component

NoQuery:If Y a Query, can not be performed on the corresponding business component by using EAI Siebel Adapter.

NoSynchronize:If Y a Synchronization, can not be performed on the corresponding business component by using EAI Siebel Adapter.

AdminMode:If Y then indicates that the update of the corresponding business component is to be performed in admin mode.You can define this property in either the integration object or integration component definitions.

IgnorePermissionErrorsOnUpdate:Used to suppress the errors from having the NoUpdate, The error is ignored and processing continues.

IgnorePermissionErrorsOnInsert:Used to suppress the errors from having the NoInsert, The error is ignored and processing continues.

IgnorePermissionErrorsOnDelete:Used to suppress the errors from having the NoDelete, The error is ignored and processing continues.

8)Integration Component Keys:There are multiple IC Key which are controling operation are as follows:-

User Key:A user key is a group of fields whose values must uniquely identify a Siebel business componentrecord. During inbound integration, user keys are used to determine whether theincomingdata updates an existing record or inserts a new one.

Status Key:In many integrations, we want to know the status of Integration Operation.The status returned is defined in the Integration Component using Status Keys. A Status Key is an Integration Component key of the type Status Key. Fields defined as part of the Status Key are included in the Returned StatusObject.

Hierarchy Parent Key:The Hierarchy Parent Key is used for integration objects that have a homogeneous hierarchy. This key should only have the Parent Id. The Hierarchy Parent Key is used for maintaining the hierarchy and keeping the data normalized.

Hierarchy Root Key:The Hierarchy Root Key is anoptionalkey that is useful only when integration objects have a homogeneous hierarchy. You can use this key to improve performance. The Hierarchy Root Key must have only one field, Root Id, which the EAI Siebel Adapter populates with the value of the ID field in the component instance that is in the root of the homogenous hierarchy.