2Integration Objects

Integration Objects

About Integration Object Terminology

This chapter describes concepts that are often referred to using inconsistent terminology on different systems. The following table has been included to clarify the information in this chapter by providing a standard terminology for these concepts.

Table Integration Object Terminology

Term Description

Component

A constituent part of any generic object.

Field

A generic reference to a data structure that can contain one data element.

Integration message

A bundle of data consisting of two major parts:

  • Header information that describes what will be done with or to the message itself

  • Instances of integration objects; that is, data in the structure of the integration object

Integration object

An integration object of any type, including the Siebel integration object, the SAP BAPI integration object, and the SAP IDOC integration objects.

Integration object instance

Actual data, usually the result of a query or other operation, which is passed from one business service to another, that is structurally modeled on a Siebel integration object.

Metadata

Data that describes data. For example, the term data type describes data elements such as char, int, Boolean, time, date, and float.

Siebel business component

A Siebel object type that defines a logical representation of columns in one or more database tables. A business component collects columns from the business component’s base table, its extension tables, and its joined tables into a single structure. Business components provide a layer of abstraction over tables. Applets in Siebel Business Applications reference business components; they do not directly reference the underlying tables.

Siebel business object

A Siebel object type that creates a logical business model using links to tie together a set of interrelated business components. The links provide the one-to-many relationships that govern how the business components interrelate in this business object.

Siebel integration object

An object stored in the Siebel repository that represents a Siebel business object.

Siebel integration component

A constituent part of a Siebel integration object that represents a Siebel business component.

Siebel integration component field

A data structure that can contain one data element in a Siebel integration component. Represents a Siebel business component field.

About Integration Objects

Siebel 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.

Note: For more information on Siebel Data Mapper, see Business Processes and Rules: Siebel Enterprise Application Integration.

The typical integration project involves transporting data from one application to another. For example, if you want to synchronize data from a back-office system with the data in your Siebel application. You might want to generate a quote in the Siebel application and perform a query against your Enterprise Resource Planning (ERP) system transparently. In the context of Siebel EAI, data is transported in the form of an integration message. A message, in this context, typically consists of header data that identifies the message type and structure, and a body that contains one or more instances of data-for example, orders, accounts, or employee records.

When planning your integration project, consider several issues:

  • How much data transformation does your message require?

  • At what point in the process do you perform the data transformation?

  • Is a confirmation message response to the sender required?

  • Are there data items in the originating data source that will not be replicated in the receiving data source, or that will replace existing data in the receiving data source?

This guide can help you understand how Siebel EAI represents the Siebel business object structure. It also provides descriptions of how Siebel EAI represents external SAP R/3 structures.

About Integration Object Base Object Types

Each integration object created in Siebel Tools has to be based on one of the base object types presented in the following table. This property is used by adapters to determine whether the object is a valid object for them to process.

Note: XML converters can work with any of the base object types.

Table Integration Object Base Object Types

Base Object Type Description

None

For internal use only.

SQL

Used for manually creating integration objects. Only the EAI SQL Adapter accepts integration objects of this type.

SQL Database Wizard

Used by the Database Wizard for the integration object it creates. Only the EAI SQL Adapter accepts integration objects of this type.

SQL Oracle Wizard

Used by the Oracle Wizard for the integration object it creates. Only the EAI SQL Adapter accepts integration objects of this type.

Siebel Business Object

Used by the Integration Object Builder wizard for the integration object it creates. The EAI Siebel Adapter accepts only the integration object of this type.

Table

Obsolete.

XML

Used to represent external XML Schema such as DTD or XSD. For information on DTD and XSD, see XML Reference: Siebel Enterprise Application Integration.

About the Difference Between Integration Objects and Integration Object Instances

Understanding the difference between integration objects and integration object instances is important, especially in regard to the way they are discussed in this chapter.

An integration object, in the context of Siebel EAI, is metadata; that is, it is a generalized representation or model of a particular set of data. It is a schema of a particular entity.

An integration object instance is also referred to as a Siebel Message object.

An integration object instance is actual data organized in the format or structure of the integration object. The following figure illustrates a simple example of an integration object and an integration object instance, using partial data.

Integration Object and Integration Object Instance

Any discussion of integration objects in this book will include clarifying terms to help make the distinction, for example, metadata or Siebel instance.

About Integration Object Wizards

Within Siebel Tools, there are multiple wizards associated with integration objects:

  • One that creates integration objects for internal use by the Siebel application

  • Others that create integration objects for external systems based on Siebel objects

the following figure shows the logic of the Integration Object Builder and Generate XML Schema wizards. The Code Generator wizard (not shown) works in the same manner as the Generate XML Schema wizard, but it generates Java classes.

Integration Object Wizards

The following are the integration object wizards:

  • Integration Object Builder wizard. This wizard lets you create a new object. It supplies the functionality for creating integration objects from Siebel business objects or integration objects, based on the representations of external business objects using XML Schema Definition (XSD) or Document Type Definition (DTD). Access this wizard from the New Object Wizards dialog box in Siebel Tools. After selecting the EAI tab, double-click Integration Object to start the Integration Object Builder wizard.

  • Generate XML Schema wizard. This wizard lets you choose an integration object and output XML schema in XML Schema Definition (XSD) standard, Document Type Definition (DTD), or Microsoft’s XDR (XML Data Reduced) format. In the Integration Objects list in Siebel Tools, select an integration object. Then click Generate Schema to start the Generate XML Schema wizard.

  • Code Generator wizard. The third wizard lets you create a set of Java class files based on any available integration object or Siebel business service. In the Integration Objects list in Siebel Tools, select an integration object. Then click Generate Code to start the Code Generator wizard.

Note: Specific instructions on how to use these wizards appear throughout the Siebel Enterprise Application Integration documentation set where appropriate.

About the Structure of Integration Objects

The Siebel integration object provides a hierarchical structure that represents a complex data type. Most specifically, prebuilt EAI integration objects describe the structure of Siebel business objects, SAP IDOCs, SAP BAPIs, XML, and external data. Most integration projects require the use of an integration object that describes Siebel business objects, either in an outbound direction such as a query operation against a Siebel integration object, or in an inbound direction such as a synchronize operation against a Siebel integration object.

Creating and Maintaining Integration Objects describes how to create integration objects. The initial process of using the Integration Object Builder wizard is essentially the same for every integration object type currently supported.

Caution: Avoid using or modifying integration objects in the EAI Design project. Using or modifying any objects in the EAI Design project can cause unpredictable results. The best practice is to create a separate project for your integration objects, for example, ABC Integration Objects, where ABC is the name of your company.

Siebel business objects conform to a particular structure in memory, although it is generally not necessary to consider this structure when working with Siebel Business Applications. However, when you are planning and designing an integration project, it is helpful to understand how a Siebel EAI integration object represents that internal structure.

An integration object consists of one Parent Integration Component, sometimes referred to as the root component, or the primary integration component. The Parent Integration Component corresponds to the primary business component of the business object you chose as the model for your integration object.

For example, assume you chose the Account business object (on the first panel of the Integration Object Builder wizard) to base your integration object myAccount_01 on. The Account business object in Siebel Tools has an Account business component as its primary business component. In the myAccount_01 integration object, every child component will be represented as either a direct or indirect child of the primary business component named Account.

Each child component can have one or more child components. In Siebel Tools, if you look at the integration components for an integration object you have created, then you see that each component can have one or more fields. The following figure illustrates a partial view of a Siebel integration object based on the Account business object, with the Business Address component and the Contact component activated.

The following figure represents part of the structure of the Account integration object. The Account parent integration component can have both fields and child integration components. Each integration component can also have child integration components and fields. A structure of this sort represents the metadata of an Account integration object. You can choose to inactivate components and fields. By inactivating components and fields, you can define the structure of the integration object instances entering or leaving the system.

Partial Representation of Account Integration Object

The following topics are also discussed:

    About the Cardinality of Child Integration Components

    By default each child integration component created in Siebel Tools is assigned a cardinality value of Zero or More. The values Zero or More, or Zero or One, mean that the corresponding integration component is optional. Setting the value to One, or One or More, means at least one integration component instance must be included in the hierarchy. When the cardinality value is set to One, you must have one and only one instance of the integration component in the hierarchy. The following table information lists possible cardinality values.

    Table Cardinality values of Child Integration Components

    Cardinality Integration Component Instance

    One

    An integration component is mandatory and limited to one instance.

    One or more

    An integration component is mandatory and must contain at least one instance.

    Zero or more

    An integration component is optional, and more than one instance is allowed.

    Zero or one

    An integration component is optional, but if there is one present, then the limit is one.

      Custom Integration Component Fields

      In some cases, you might want to pass custom attributes that are not necessarily part of the actual data but related to the context of the data. You can use various means such as SOAP headers and transport headers to pass such custom fields, or you can have them as part of the integration schema as custom integration component fields.

      Custom attributes can be added manually to integration objects as integration component fields. The integration component field type (Type property in the Object List Editor, Field Type in the Properties window) of 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.

      The new custom attributes will appear in the schema generated from the integration object, like any other integration component field.

        Integration Components and Associations

        Siebel business objects are made up of business components that are connected by a link. An association is a business component that represents the intersection table that contains these links. The integration component definition of associations is similar to that of multivalue groups (MVGs). User properties Association and MVGAssociation on the integration component denote that the corresponding business component is an associated business component or an associated MVG, respectively. For fields that are defined on MVG associations, External Name denotes the name of the business component field as it appears on the parent business component, and the user property AssocFieldName denotes the name of the business component field as it appears on the MVG business component.

        For example, the Contact business object is partly made up of the Contact and Opportunity business components. The association between these two business components is represented by the Contact/Opportunity link with a value or a table name in the Inter Table column. The Integration Object Builder wizard creates a new integration component for the integration object, based on the Contact business object that represents the association. As shown in the following figure, the Opportunity integration component has one user property defined: Association, set to a value of Y.


        Integration Component Representation of Association
        Note: When building an integration object, if an integration component is an association based on an intersection table, then the user key for this integration component can contain fields based on the same intersection table only if the integration component has an AllowMultipleAssociations integration component user property set to Y in Siebel Tools.

          Multivalue Groups Within Business Components

          Multivalue groups (MVGs) are used within Siebel business components to represent database multivalue attributes. MVGs can be one of two types: regular MVGs or MVG Associations.

          An integration object instance most often has multiple integration component instances. For example, an Account can have multiple Business Addresses but only one of these addresses is marked as the primary address. A business requirement might require that only the integration component instance that corresponds to the primary MVG be part of the integration object instance. In relation to Account and Business Addresses this means that only the primary address will be part of the Account integration object instance. The primary address can be obtained by one of the following steps:

          • Creating a new MVG on the Account business component that uses a link with a search specification only returning the primary address record.

          • Exposing the primary address information on the Account business component level using a join that has the primary ID as source field. Note that in this case the primary address information corresponds to fields on the Account integration component instance and not the fields on a separate Address component instance.

          In Siebel Tools, if a Siebel business component contains an MVG, then the MVG is represented by several objects as illustrated in the following topics.

            Multivalue Fields in a Business Component

            For example, as illustrated in the following figure, the Account business component contains a multivalue field, Address Id. The multivalue link property of Address Id has the value Business Address.


            Address Id MVG Field in the Account Business Component

              Creating a Siebel Integration Component to Represent an MVG

              To create a Siebel integration component to represent an MVG, it is necessary also to create two integration components:

              • The first integration component represents the parent business component. In the example, this is the Account business component. This integration component contains only the fields that are defined in the parent business component, but which are not based on MVGs. The Multivalue Link property and the Multivalue property are empty for these fields.

              • The second integration component represents the MVG business component. In the example, this is the Business Address business component. The second integration component has one integration field for each field based on the given MVG in the parent business component. 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, then the user property is named MVG. 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.

              The following figure shows an integration component based on an MVG and its user property value in Siebel Tools.


              Integration Component Based on MVG Business Component

              The EAI Siebel Adapter business service must know the names of the MVG fields as they are defined in the parent business component, which in this example is Account, and also the names of the MVG fields as they are known in the business component that represents the MVG, which in this example is Account Business Address. As shown in the following figure, the integration component fields represent the MVG.


              Integration Component Fields Representing MVG

              To represent both names, each field is assigned an integration component field user property named MVGFieldName, or AssocFieldName if the integration component user property is MVGAssociation. The value of the integration component field user property is the name of the field shown in the parent business component, which in this example is Business Address.

                Validation of Integration Component Fields and Picklists

                If an integration component field is created for a Siebel business component field, and the business component field is based on a picklist, then the EAI Siebel Adapter or the Object Manager validates the field. To have the validation done using the EAI Siebel Adapter, the integration component field has a user property with the name PICKLIST and a value of Y; otherwise, validation is done by the Object Manager.

                If the EAI Siebel Adapter validates the integration component field, and if the pickmap for the picklist contains more than one field, then, when designing the integration object, you must decide the following:

                • Which of the fields to use as a search criterion

                • Which fields to simply update if input values are different from those in the picklist (provided that the picklist allows updates)

                Note: Using the PICKLIST user property on an integration component field causes truncation to 30 characters (the length of the VAL column in the S_LST_OF_VAL Table) of the input value for searching the static picklist data.

                Do not use the PICKLIST property on custom integration component fields. It is designed for static picklists, based on longer columns of the S_LST_OF_VAL table. Any input value provided in the input integration component field for search in picklist fields based on columns such as DESC_TEXT (Description field of the Picklist Generic business component) or NAME (Name field of the Picklist Generic business component) will deliver no result or an incorrect result because the string in the search expression will be truncated to 30 characters.

                  Example of an Integration Object Based on the Order Entry Business Object

                  An example is an integration object based on Order Entry business object. The root component of the Order Entry business object is Order Entry - Orders with a field Account, whose pickmap contains a large number of fields such as Account, Account Location, Account Integration Id, Currency Code, Price List, and so on. One of the tasks the integration object designer must perform is to determine which of these fields is used to identify the account for an order.

                  If the PicklistUserKeys user property on the integration component field that is mapped to the field with the picklist (in the previous example, Account) is not defined, then any integration component fields that are mapped to columns in the U1 index of business component's base table, and are present in the pickmap will be used by the EAI Siebel Adapter to find the matching record in the picklist (in the previous example, Account and Account Location).

                  In cases where the default user key for the picklist does not satisfy your business requirements (for example, you want to use only Account Integration Id instead of the default user key to pick an Account), or you want to make the user key explicit for performance reasons, then use the PicklistUserKeys user property.

                  The value of the PicklistUserKeys user property is a comma separated list of integration component fields that are used to find the matching record in the picklist (for example, 'Account, Account Location' or 'Account Integration Id').

                  For the EAI Siebel Adapter to use the fields referenced in PicklistUserKeys user property, the fields must be included in the pickmap of the underlying business component field. Note that if the business component field names and integration component field names, listed in the PicklistUserKeys property, are not the same, then the picklist must contain external names of the fields listed in the PicklistUserKeys user property.

                  If there is a field present in the business component and in the pickmap, and it is stored in the base table, then the EAI Siebel Adapter can use the picklist to populate this field, only if this field is present and active in the integration component. This field must also be present in the input property set, and cannot be empty.

                    Calculated Fields and Integration Objects

                    Calculated fields are inactive in an integration object when it is created. They are inactive for the following reasons:

                    • Performing calculations on fields requires extra processing time.

                    • If the calculated field is based on a field that is not included in the integration object, then errors might arise when the calculated field is updated but the field used for the calculation is not.

                    If your business needs require it, activate the calculated fields in integration objects.

                    Note: Calculated fields are those integration component fields that have the Calculated flag checked on the corresponding business component field.

                      Inner Joins and Integration Components

                      When inner joins are used, records for which the inner joined field is not set are not returned in any query. By default the wizard inactivates such fields. If your business needs require these fields, activate them.

                      Note: If the inner join has a join specification that is based on a required field, then the wizard does not inactivate the fields that are using that particular join.

                      For example, assume that Account business component has an inner join to the S_PROJ table, with Project Id field being the source field in the join specification, and the Project Name field being based on that join.

                      If an integration component, with an active Project Name field is mapped to the Account business component, then when this integration component is queried only accounts with Project Id field populated will be considered.

                      Because Project Id is not a required field in the Account business component, not every account in the Siebel Database is associated with a project. So, having Project Name active in the integration component limits the scope of the integration component to only accounts associated with a project. This typically is not desirable, so the wizard inactivates the Project Name field in this example.

                      If the business requirement is to include the Project Name field, but not to limit the integration component’s scope to only accounts with the project, then you can change the join to S_PROJ in the Account business component to an outer join. For information on joins, see Using Siebel Tools.

                      Note: Activating an inner join can cause a query on that integration component not to find existing rows.

                        Defining Field Dependencies

                        Define dependency between fields by using the user properties of the integration component field. The names of these user properties must start with FieldDependency, and it is recommended that the value of each property 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.

                        The EAI Siebel Adapter automatically takes into account the dependencies of the fields set by a PickList on the fields used as constraints in that PickList. For example, if a PickList on field A also sets field B, and is constrained by field C, then this implies dependencies of both A and B on C. As a consequence, the EAI Siebel Adapter sets field C before fields A and B.

                          Repository Objects

                          For the EAI Siebel Adapter to deal with repository objects, a user property REPOBJ must be defined on the root integration component. If this property is set to Y, then the EAI Siebel Adapter sets a context on the repository so that the rest of the operations are performed in that context.

                            About Integration Component User Properties as Operation Controls

                            Each business component, link, and MVG has properties such as No Update, No Delete, and No Insert. So do integration components, in the form of integration component user properties. These user properties, listed in the following table, indicate the operations that can and cannot be performed on an object.

                            Table Operation Controls for Integration Components

                            User Property Description

                            NoDelete, NoInsert, NoQuery, NoSynchronize, NoUpdate

                            Indicate which operations cannot be performed on the corresponding business component. Can take the value Y or N.

                            If any of these user properties are set to Y, then the corresponding business component method is used to validate the operation. When the business component attempts to perform a restricted operation, an error is raised.

                            NoUpdate can also be set on integration component fields.

                            For more information on business component properties, see Configuring Siebel Business Applications.

                            IgnorePermissionErrorsOnUpdate, IgnorePermissionErrorsOnInsert, IgnorePermissionErrorsOnDelete

                            Suppress the errors that arise from having the NoUpdate, NoInsert, and NoDelete user properties set to Y, respectively. The errors are ignored and processing continues.

                            AdminMode

                            When set to Y, indicates that the update of the corresponding business component is to be performed in Admin Mode. Admin Mode turns off all insert and update restrictions for the business components used by a view, including those specified by business component user properties.

                            You can set the AdminMode user property on integration objects or integration components.

                            For more information on Admin Mode, see Configuring Siebel Business Applications.

                            For the EAI Siebel Adapter to successfully perform an operation, that operation must be allowed at all levels. If the operation is allowed at every level except the field level, then a warning message is logged in the log file and processing continues. Otherwise, an error message is returned, and the transaction is rolled back.

                            Permissions on integration components are checked by the EAI Siebel Adapter, and permissions on business components, links, and fields are checked by the Object Manager.

                              About Integration Component Keys

                              There are multiple types of integration component keys:

                              Note: It is recommended to have only one integration component key for every type of key except the user key. For example, if there are two hierarchy parent keys defined for an integration component, then the EAI Siebel Adapter picks the first one and ignores the second one.

                                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 in User 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 key, Account 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, then 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 Algorithm

                                  The 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 table

                                  1. Select the Business Component object in the Object Explorer.

                                    The Business Components list appears in the Object List Editor.

                                  2. Select a business component.

                                  3. Click the link in the Table column.

                                    The Tables list appears, displaying the table associated with the business component (for example S_CONTACT).

                                  4. 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 in the following figure. the table S_CONTACT has several user keys.


                                  User Keys for Table S_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 component

                                  Each 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, the following figure shows three user key columns for the user key S_CONTACT_U1.


                                  User Key Columns for the S_CONTACT_U1 User Key

                                  If the columns of the user key are exposed in the business component, and those columns are not foreign keys, then 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 in the following figure, the wizard defines one integration component key for each table user key column.


                                  Integration Component Keys for Each Table User Key Column

                                  Each valid integration component key contains fields. For example, as shown in the following figure, 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.

                                  Contact Integration Component Key Fields

                                  When the Integration Object Builder wizard creates these integration component keys, it attempts to use the appropriate table user keys, that is the user keys that help to uniquely identify a given record. In some cases, you might 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.

                                    Status Keys

                                    It is useful to know the status of your integrations. For example, if you are sending an order request, then 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 named Operation in the Status Key.

                                      Status Key Examples

                                      For example, the AccountAshish integration object has an Account integration component with an integration component key called StatusKeyAshish, with the integration component key fields AshishName, AshishId, and AshishHomePage (the following figure).


                                      Status Key

                                      Example with No Status Object

                                      When no StatusObject business service method argument is defined, as in this input XML file for an upsert operation using the EAI Siebel Adapter business service

                                      <?Siebel-Property-Set EscapeNames="true"?>
                                      <PropertySet>
                                      <SiebelMessage MessageId="42-1PGR" IntObjectName="AccountAshish" 
                                      MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical">
                                      	<ListOfAccountAshish>
                                      <Account Main_spcPhone_spcNumber="+33123456789" Primary_spcOrganization="Default 
                                      Organization" Home_spcPage="mycompany.com" Location="France" Name="Ashish 9 
                                      Telecom"/>
                                      		</ListOfAccountAshish>
                                      	</SiebelMessage>
                                      </PropertySet>
                                      

                                      all of the fields in the integration component are returned:

                                      <?Siebel-Property-Set EscapeNames="true"?>
                                      <PropertySet ErrorContextIntComp="" ErrorContextSearchSpec="" OMErrorCode="" 
                                      PrimaryRowId="42-C739Q" OMErrorSymbol="" ErrorCode="0x0" ErrorSymbol="">
                                      <SiebelMessage MessageId="42-1PGR" MessageType="Integration Object" 
                                      IntObjectName="AccountAshish" IntObjectFormat="Siebel Hierarchical">
                                      	<ListOfAccountAshish>
                                      			<Account Main_spcPhone_spcNumber="+33123456789" 
                                      			Primary_spcOrganization="Default Organization" Home_spcPage="mycompany.com" 
                                      			Location="France" Name="Ashish 9 Telecom"/>
                                      	</ListOfAccountAshish>
                                      </SiebelMessage>
                                      </PropertySet>
                                      

                                      Example with Status Object

                                      When the StatusObject method argument is set to true, as in this input XML file:

                                      <?Siebel-Property-Set EscapeNames="true"?>
                                      <PropertySet StatusObject="true">
                                      <SiebelMessage MessageId="42-1PGR" IntObjectName="AccountAshish" 
                                      MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical">
                                      	<ListOfAccountAshish>
                                      		<Account Main_spcPhone_spcNumber="+33123456789" 
                                      		Primary_spcOrganization="Default Organization" Home_spcPage="mycompany.com" 
                                      		Location="France" Name="Ashish 9 Telecom"/>
                                      	</ListOfAccountAshish>
                                      </SiebelMessage>
                                      </PropertySet>
                                      

                                      only the fields in the status key are returned:

                                      <?Siebel-Property-Set EscapeNames="true"?>
                                      <PropertySet ErrorContextIntComp="" ErrorContextSearchSpec="" OMErrorCode="" 
                                      PrimaryRowId="42-C739Q" OMErrorSymbol="" ErrorCode="0x0" ErrorSymbol="">
                                      <SiebelMessage MessageId="42-1PGR" MessageType="Integration Object" 
                                      IntObjectName="AccountAshish" IntObjectFormat="Siebel Hierarchical">
                                      		<ListOfAccountAshish>
                                      			<Account Id="42-C739Q" Home_spcPage="mycompany.com" Name="Ashish 9 Telecom"/>
                                      	</ListOfAccountAshish>
                                      	</SiebelMessage>
                                      </PropertySet>
                                      

                                      For more information on the EAI Siebel Adapter business service, see EAI Siebel Adapter Business Service.

                                        Hierarchy Parent Keys

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

                                        For example, when you insert quotes, each quote item in turn can have more quote items. In this case, the first quote item inserted by the EAI Siebel Adapter has the Parent Id set to blank, but for each child quote item, the EAI Siebel Adapter checks the keys to figure out which fields are to be set. If the Hierarchy Parent Key is not defined, then the child quote item is inserted as a new quote item without a link to its parent (denormalized).

                                        Note: You cannot rearrange the hierarchy after it has been created. For example, if A is a parent of B, and you try to upsert B as a parent of A, then an error will occur. Instead you must delete the hierarchy and then re-create it.

                                          Hierarchy Root Keys

                                          The Hierarchy Root Key is an optional key 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. For example, assume quote Q1 has quote items A, B, and C where each of the quote items has child quote items (A1, A2, B1, B2, ...). If you want to update the quantity requested for all quote items starting with the root quote item B, then it is faster if the data is denormalized. Using the Hierarchy Root Key, you can search for all records with Root Id equal to the Row Id of B, and set the QuantityRequested field for each item.

                                          Note: When the business component is hierarchy enabled, then the wizard automatically sets the Hierarchy Parent Key for the complex integration component. To have a business component hierarchy enabled you must set the property Hierarchy Parent Field.

                                            About EAI Siebel Adapter Access Control

                                            You can use the following mechanisms to control the access of the EAI Siebel Adapter to the database:

                                            • Restricted access to a static set of integration objects. You can configure the EAI Siebel Adapter business service, or any business service that is based on the CSEEAISiebelAdapterService class, to restrict access to a static set of integration objects. To do this, set a business service user property called AllowedIntObjects, which contains a comma-separated list of integration object names that this configuration of the EAI Siebel Adapter can use. This allows you to minimize the number of integration objects your users must expose outside of Siebel Business Applications through HTTP inbound or MQSeries Receiver server components. If this user property is not specified, then the EAI Siebel Adapter uses any integration objects defined in the current Siebel Repository.

                                            • ViewMode. You can specify the visibility mode of business components that the EAI Siebel Adapter uses. This mode is specified as the integration object user property ViewMode. This user property can take different values, as defined by LOV type REPOSITORY_BC_VIEWMODE_TYPE.

                                            Note: For information on ViewMode, see Siebel Tools Online Help.