For the last 10 years I have been working with the widely criticized Siebel CRM. Sometimes I feel that I am in a small clan of Siebel advocates. Yes, there are headaches but it is a huge system that has been developed over a long period of time. If you can overlook some of the annoyances then you can find a tool that has a lot of functionality already in place for you. Even if there are 3 different ways to accomplish the same thing!
Developers have a hard time appreciating Siebel because Siebel/Oracle best practices are to configure the repository instead of writing custom code. Developers love to write custom code for a variety of reasons. Most of the time it is quicker and the developer doesn't have to spend time trying to determine what has already been implemented in the system. As your maturity level grows with configuring Siebel you start to find useful tools that are available "Out Of The Box" (OOTB) which ease development and maintenance. One of these tools is the integration data map.
Using data maps and the EAI Siebel Adapter business service together in workflows can be a dynamic duo that is just right for integration requirements. In this example I will be working with a Siebel outbound integration workflow that sends data from Siebel to an external system using a data map.
Sample OOTB data map
Here is a list of common steps that I like to take when setting up a new integration workflow:
- Create an integration object that is based off a Siebel business object and ONLY contains the fields and components needed. Identify the fields needed for workflow processing and for the external system schema. Inactivate all fields in the integration object that don't meet this criteria.
- Create a new integration workflow within Siebel Tools.
- Create a new workflow process property that has a data type of Strongly Typed Integration Object and has the correct Integration Object value that represents the integration object that will populated from querying Siebel.
- Import the WSDL file for the external web service into the Siebel repository. Ensure that the WSDL file is located in the Siebel Tools > TEMP folder on your machine. Open Siebel Tools and go to File > New Object > EAI. Choose the option for web service and follow the steps in the wizard. A new business service and integration object(s) will be created once the wizard is complete.
- Create a new workflow process property that has a data type of Strongly Typed Integration Object and has the correct Integration Object value that represents the integration object that will be sent to the external web service. This integration object would have been created when you imported the WSDL file.
- Allow the workflow Object Id process property control the database context of your workflow. The Object Id will be the ROW_ID of the primary business component of the business object the workflow is based on. The business object is defined when you first create the workflow. If your workflow is invoked via a button click in the UI, Runtime Event, Workflow Batch Job, or Signal then the Object Id will be populated for you when the workflow is invoked.
- Create a business service workflow step to query the database records using the EAI Siebel Adapter business service and Query method. Provide the PrimaryRowId value which will be the Object Id and provide an OutputIntObjectName which will be the name of the IO that is used for querying. Add an Output Argument which will populate the corresponding process property with the Output Argument Siebel Message from the EAI Siebel Adapter.
- Create a new data map in the Siebel UI. Navigate to Administration - Integration > Data Map Editor. Here you can map the integration object that you use to query Siebel to the integration object that was created from importing the WSDL file. This is where the meat of you business logic lives and you can use different tools based on your requirements. There are functions available to you in the maps such as the IIF function. A common use of IIF is to map boolean values (e.g. IIF([Integration Field] = 'Y', 'true', 'false'). You can also add custom input parameters to your Data Map. Navigate to the Data Maps hyperlink at the top of the page under Administration - Integration. If you define a parameter here, then it can be referenced with the "&" symbol (e.g. [&MyParam]) within the Data Map Editor.
- Create a step in your workflow to invoke your new data map. Add a new business service step that uses the EAI Data Transformation Engine business service and the Execute method. Add the MapName, OutputIntObjectName, and SiebelMessage input parameters. The SiebelMessage parameter will be the Integration Object workflow process property you added for querying Siebel. Add an output parameter for the workflow process property you added for the external web service input.
- Create a step in your workflow for calling the external web service. The business service name and method will match the business service name and method that was created when importing the WSDL. Add an input parameter for the workflow process property that you added for the external web service input.
Now you have a workflow that queries Siebel to get a XML hierarchy of data, transforms that data, and finally sends the data to an outbound web service. While unit testing you may run into various data issues. You can update the data map administratively without the need of a Siebel compile!
Finally, you might have the requirement to receive data back from the external web service and store within Siebel. For that you can add another data map into your system; map the output of the web service call to your existing Siebel integration object; and add a new workflow step to Insert, Update, Upsert, Synchronize, Execute, etc the integration object using the EAI Siebel Adapter. Now you have data coming from an external web service that can be edited Administratively before it is saved to the Siebel database.