You are here

Siebel EAI

Verifying NEON COM Data Server Log

NEON Delivery adapter uses COM Data Server to connect and get access to the object layer of Siebel.

The Log files that are generated by Siebel Data Server can be seen in the following path

  • \sea752\client\LOG\

If you want to increase the log level to get a detail trace of the sql’s generated, you can do so by completing the below steps:

  1. Right-click on My Computer icon on the Desktop
  2. Select Properties drop-down option
  3. Select Advanced Tab and click on Environment Variables button
  4. Click New to create a new variable as given below: Variable
  • name = ‘SIEBEL_LOG_EVENTS’
  •  Variable value = ‘4’

     

restart the NEON adapters and once again push your messages to see a detail log created under the

  • \sea752\client\LOG\SiebelDataServerXXX.log
NEON Adapter for Siebel

The NEON adapter for Siebel provides the capability to automate data transfers to and from Siebel 6 (2000) and Siebel 7 Enterprise Applications by leveraging current New Era of Networks (NEON) and Seibel Integration Objects.

The Adapter for Siebel Integration Service is commonly used for real-time interaction with Siebel. Siebel provides an object interface that exposes Siebel Object data and functionality to the Adapter for Siebel. The Siebel object interface is composed of Siebel business service methods that expose data and functionality to external programs, providing access to Siebel interface object, events, and associated data. The Adapter for Siebel uses the Siebel COM data server to access the exposed object interfaces. Note: The Deliver Adapter uses the COM data server and not the Siebel Object Manager.


The NEON Adapter for Siebel Integration Service does not need to be installed on the Siebel server, but must be installed on a machine on which the Siebel Client is installed, as the Siebel Client provides the COM interfaces
used by the Integration Service to interact with Siebel.

The NEON Adapter for Siebel is configured and controlled through the MMC (Microsoft Management Console), a user friendly interface, or through the command line. The adapter employs one design-time mode: Schema, and three
runtime modes: Deliver, Process and Acquire. The Process mode is not covered in this document. These modes are used to accomplish the following tasks

  • Extract metadata from Siebel (Schema mode)
  • Deliver data to Siebel (Deliver mode)
  • Capture data from Siebel (Acquire mode)

 

Accessing Siebel Environment from Dot Net in C#.net

Siebel provides object interface to access Siebel Objects like Business Component, Business Object, Business services, Fields etc to be accessed from .Net, you can integrate Siebel and .Net using below steps.

Add the reference for the Siebel Data Object:

Add the “Siebel Business Object Interfaces Type Library” as reference which is available under COM tab in the add reference dialog box

Create one instance for SiebelBusObjectInterfaces:

public SiebelBusObjectInterfaces.SiebelDataControlClass SiebApp;

Login to Siebel Environment:

Mention the corresponding values for SiebelHost, EnterpriseServer and ObjectManager

string SiebLogin=”xxx”;
string SiebPassword=”xxx”;
string ConnectString = "host=\"siebel://" +
SiebelHost.ToString() + "/" +
EnterpriseServer.ToString() + "/" +
ObjectManager.ToString() + "/\"";
Boolean Ret = SiebApp.Login(ConnectString, SiebLogin.ToString(),SiebPassword.ToString());

If the value is true then the login is successful

Handling Siebel Objects from .Net :

Accessign Siebel object in .net is almost similar to Siebel script

Eg

following example shows how to access Busines object, Business service etc.:

SiebelBusObjectInterfaces.SiebelBusObject SiebBO;
SiebelBusObjectInterfaces.SiebelBusComp siebActionBC;
SiebelBusObjectInterfaces.SiebelService SiebSvc;
SiebelBusObjectInterfaces.SiebelPropertySet SiebInput;
SiebelBusObjectInterfaces.SiebelPropertySet SiebOutput;
SiebelBusObjectInterfaces.SiebelPropertySet SiebChild;
//ROWID IS THE ONLY INPUT FOR THE BELOW PROCESS-- strRowId
try
{
//Getting Siebel BO
SiebBO = SiebApp.GetBusObject("Action");
if (Convert.ToInt32(SiebApp.GetLastErrCode().ToString()) != 0)
{
//Process :error handling
}
//Getting the AIC Action BC
siebActionBC = SiebBO.GetBusComp("Action");
if (Convert.ToInt32(SiebApp.GetLastErrCode().ToString()) != 0)
{                   
//Process :error handling

}
//Getting the 'Server Request' Business Service
SiebSvc = SiebApp.GetService("Server Requests");
if (Convert.ToInt32(SiebApp.GetLastErrCode().ToString()) != 0)
{
//Process :error handling

}
//PropertySet for Workflow
SiebInput = SiebApp.NewPropertySet();
SiebOutput = SiebApp.NewPropertySet();
SiebChild = SiebApp.NewPropertySet();

//Executing Query----Search Spec
siebActionBC.ClearToQuery();
siebActionBC.ActivateField("Activity SR Id");                                                                   

            siebActionBC.SetViewMode(3);
siebActionBC.SetSearchExpr("[Id]='" + strRowId + "'");
siebActionBC.ExecuteQuery(1);
blnRecords = siebActionBC.FirstRecord();
if (blnRecords)
{
lngNumRecords = lngNumRecords + 1;

//WorkFlow Process Name
Process_Name = "Activity Asynchronous Process";

      //Getting the required field values in variables

strWorkItemID = siebActionBC.GetFieldValue("Activity SR Id");
//SiebChild Property set

SiebChild.SetProperty("RowId", strRowId);
SiebChild.SetProperty("ProcessName", Process_Name);
SiebChild.SetProperty("SearchSpec", "[Id]='" + strRowId + "'");
SiebChild.SetProperty("WorkParentId", strWorkItemID);

//Fetching SiebChild to SiebInput
SiebInput.SetProperty("Component", "WfProcBatchMgr");
SiebInput.SetProperty("Mode", "DirectDb");
SiebInput.AddChild(SiebChild);
if (Convert.ToInt32(SiebApp.GetLastErrCode().ToString()) != 0)
{
//Process :error handling
}
//Invoking WorkFlow
SiebSvc.InvokeMethod("SubmitRequest", SiebInput, SiebOutput);
if (Convert.ToInt32(SiebApp.GetLastErrCode().ToString()) != 0)
{
//Process :error handling
}
else
{
Console.WriteLine("\r\nSuccessful save for SR " + strRowId + "\r\n");
}
}
}

Carriage Return in Siebel Workflows

In Siebel Workflow, there is no function for a carriage return line feed. So, if we want to populate a text field and format the contents so that they appear on separate lines, there is no simple way to do it.
One solution would be to write some eScript in a Business Service to return the CRLF escape sequences to the calling routine. The workflow can then call your business service to populate a process property with the CRLF characters and it can then use that process property as and when required.
Another solution exists which does not involve escript is to use siebel vanilla Business Service. There exists a “vanilla” Business Service which returns CRLF as a return argument.
 
Business Service details:
Business Service Name: SSSE Address Parser (eScript)
Business Service Method: GetCRLF  
 
Note : Newline characters can be added in oracle database level using the following ASCI functions CHR(10) – Line Feed and CHR(13) – Carriage Return

Siebel EAI Adapter: skiptree and skipnode operations in Execute Method

The whole sub tree rooted at this node is not processed. It is the same as that whole sub tree not existing in the integration object instance. Operations specified in child nodes do not affect processing in any way since the EAI Siebel Adapter does not act on the child.

<?xml version="1.0" encoding="UTF-8"?>

  <?Siebel-Property-Set EscapeNames="false"?>
<SiebelMessage MessageId="1-2RE" MessageType="Integration Object" IntObjectName="Sample
  Account" IntObjectFormat="Siebel Hierarchical">
<ListOfSampleAccount>
<Account operation="upsert">
<Name>foo </Name>
<Location>cold storage</Location>
<ListOfContact>
  <Contact operation="skiptree">
    <FirstName>firstname</FirstName>
    <LastName>contact1</LastName>
    <ListOfBusinessAddress>
    <BusinessAddress operation="insert">
      <City>San Mateo</City>
      <Zip>94402</Zip>
      <AddressName>primary address</AddressName>
    </BusinessAddress>
    </ListOfBusinessAddress>
  </Contact>
 </ListOfContact>
</Account>
</ListOfSampleAccount>
  </SiebelMessage>
 

Based on this example, the account is upserted. The processing of the contact is completely skipped although the business address child has an insert operation set.

If the skiptree operation is specified for the account integration component, then the EAI Siebel Adapter skips processing the complete account. This results in no operation.

Skipnode Operation

Similar to all other Execute operations, the children nodes inherit the semantics of the operation from the parent nodes. If a node has operation skipnode set, then the EAI Siebel Adapter will skip setting field values for all children unless a child has an explicit operation set that will override.

 
<?xml version="1.0" encoding="UTF-8"?>
<?Siebel-Property-Set EscapeNames="false"?>
<SiebelMessage MessageId="1-2RE" MessageType="Integration Object" IntObjectName=
"EAI Account" IntObjectFormat="Siebel Hierarchical">
<ListOfAccount>
<Account operation="skipnode">
<Name>foo</Name>
<Location>cold storage</Location>
<ListOfContact>
  <Contact operation="upsert">
<IntegrationId>1-123</IntegrationId>
    <FirstName>firstname</FirstName>
    <LastName>contact1</LastName>
  <ListOfContact_Organization>
    <Contact_Organization>
      <Organization operation="insert">MyOrganization</Organization>
      </Contact_Organization>
</ListOfContact_Organization>
  </Contact>
  <Contact operation="upsert">
<IntegrationId>2-123</IntegrationId>
  <FirstName>firstname</FirstName>
  <LastName>contact2</LastName>
  </Contact>
</ListOfContact>
</Account>
</ListOfAccount>
  </SiebelMessage>

Based on this example, the account is skipped. However, the EAI Siebel Adapter will attempt to insert the two contacts. 

“PRM ANI Utility Service” BS - Extract Hierarchy Structure

There are a lot of instances while working on Siebel integration we use “PRM ANI Utility Service” BS with “GetProperty” method.
The issue with this is when you don’t get a proper hierarchy as expected from the previous step; your Get Property method throws an error message.
 
Usage:
When we have a hierarchy structure and want to extract a property value from that without script.
 
Required Properties:
Input Arguments:
Hierarchy Path - the hierarchical path to reach the desired property (for e.g.: SiebelMessage.Service Request)
Property Name - the Name of the property (for e.g.: SR Number)
SiebelMessage - Hierarchical structure from where we are going to extract the property value
 
Output Arguments:
Property Value - The Value of the property.
 
Issue:
When we are not getting the hierarchy in the desired format, which means the hierarchy path is not retrieved correctly as specified in the Hierarchy Path input argument.
It throws an error stating  “Error Running Method 'Execute'.(SBL-PRM-00104)”
 
Resolution:
In the “PRM ANI Utility Service” BS we can give an optional input argument that will suppress this BS from throwing error and return null when it cannot find the required property.
 
So in the WF Step -> Input Arguments, create a new input argument though it will not be available in the picklist. 
ReturnBlankIfNull      Literal              Y
 
Or if used from script Set the value of this Input Argument property (ReturnBlankIfNull) to “Y”.
 

How to create the EBC’s in Siebel
EBCExternal Business Component The external business component feature provides a way to access data that resides in a non-Siebel table or view using a Siebel business component. This is a feature in new Siebel 7.7.
 
Steps to create the EBC in Siebel 7.7:
 
Create a DDL file from the external database from where you are going to access the data.
 
1. Cerate a DDL file:
 
You can create the DDL file from the other databases like DB2, Oracle, SQL etc, with the tool provided by the database vendor.
Below is the syntax for the creation of DDL file through DB2:
 
Path of the DB2 BIN>db2look -d DataDSourceName -t TableName -e -i DBUserName -w DBPassWord -o Outputfile.ddl
 
-d à Data Source Name.
-t  à External table name from where you are going to access the data.
-e à Extract DDL file needed to duplicate database.
-i  à User ID to log on to the server where the database resides.
-wà Password to log on to the server where the database resides
-0 à Redirects the output to the given file name
 
Exmaple:
C:\Program Files\IBM\SQLLIB\BIN>db2look -d siea -t s_srv_req -e -i sadmin -w saddb2772 -o c:\test001.ddl
 
After executing the above said statement we will get the DDL file in the specified destination.
 
2. Import the DDL into the Siebel tools:
 
Import the newly created DDL file into Siebel tools as:
File à New Object
From the General tab select ‘External Table Schema Import’ option and specify the required details in the dialog box.
 
After the completion a new table will be get created with the prefix EX_. (e.g. EX_100_0000001)
 
3. Specify Data Source:
 
Copy the existing [ServerDataSrc] section in the application .cfg file and paste below that section in the same file rename the section differently and specify a new section name.
 
 
 
Specify the below mentioned values in the .cfg file.
[ServerDataSrcEBC]
Docked                             = TRUE
ConnectString         = (Your Connection String for the external DB)
TableOwner            = (Specify the Table Owner)
DLL                       = sscddcli.dll
SqlStyle                            = DB2
DSUsername            = Data Base User Name
DSPassword            = Data Base Password
 
Enter the above created data source in the [DataSources] section in the .cfg file.
 
Specify the newly created Data Source in the Data Source child object of the Table object. This name should be the same name which you entered in the .cfg file.
 
4. Create a New BC based on the newly created table:
 
Specify BC’s data source property as ServerDataSrcEBC’ which we created newly in the .cfg file.
Make the Log Changes BC property as ‘FALSE’ to disable the log.
 
Add the required columns to the BC from the newly created table.
NOTE: Id is the required column which maps to the unique column in the external table.
 
5. Create a new applet and expose the columns to the applet. Add the applet to a view and add the view to the screen.
 
6. Compile all newly created objects.
 
7.Specifying Run-Time Parameters:
After the data source definition is named in Siebel Tools, you will specify the run-time parameters
by creating a Data Source definition in the Administration - Server Configuration screen and updating
the Server Component definition.
Navigate to the Administration - Server Configuration screen and select the Enterprises amazon
link.
From the Enterprise Server, view select the Profile Configuration tab.
Copy an existing record that has a Subsystem Type of InfraDatasources.
Change the Profile and Alias properties to the Data Source name configured in Siebel Tools.
Update the profile parameters to correspond to the external RDBMS:
DSConnectString = the data source connect string.
DSSSQLStyle = database SQL type.
DSTableOwner = data source table owner.
DSUsername = default user name used for connections.
DSPassword = default password used for connections.
 
NOTE: The DSUsername and the DSPassword parameters are optional. If specified, this will
override the default user name and password.
 
You can see the data from the external table in the applet which you have created newly.
Please look into the EAI Volume II PDF (7.7) for further details about the EBC creation.

Pages

Subscribe to Siebel EAI