Monday, March 29, 2010

Displaying Images in BI Publisher Reports (Repost)

I usually do not re-post but I thought this exception is worth it. With the current push of BI Publisher in the Siebel CRM community, BI Publisher knowledge is now more important than ever before. The below post (slightly redesigned) was published more than a year ago.

The following is a description of how to display a product image in a BI Publisher Report for Siebel 8.1.1.

Before Siebel 8.1 was released, BI Publisher was not the official reporting tool, but in a Siebel 8.0 project we used it anyway (at least for a POC). One of the report requirements was to display attached images (the signature of a customer that is) in the report and we were able to do that in stunningly short time.

Before we start, let me add that this post is not intended to show you how to create a new BI Publisher report in Siebel 8.1.1 as this procedure is part of the documentation and there are courses available on this topic. I also assume that you are familiar with Siebel Integration Objects and the BI Publisher Desktop.

Let's start with the Integration Object. When generating the IO you have to include the business component that carries the image information. In our case we include the BC that implements the product image.

To use the IO with BI Publisher Reports in Siebel you must use a name that starts with "BIP" (no kiddin').

Create and compile the IO as usual. In Siebel 8.1.1 you can also deploy the IO to the database without compiling. A quick test with EAI Siebel Adapter and the Business Service Simulator shows that the IO works properly even when not compiled. Nicely done.

Question: How does EAI Siebel Adapter handle image and attachment data during query operations?

Answer: They are included in the output property set in base64 encoding. The resulting XML will carry the encoded string "inline".

Let's see how we can later decode that string.

Next you register the IO in the BIP Administration Screen and generate the sample data. Make sure that you have some data available, as the sample data generation pulls the first 10 records of the respective primary BC (based on my observations, maybe ordered by ROW_ID, there is no documentation on that). In our example, I created a simple product, uploaded a jpg image file via the Administration - Document screen and associated it with the product in the More Info view.

Create the report template using BI Publisher Desktop as usual. In our example we use the popular plugin for MS Word. We create a simple report with a grouped table.

But how to decode the base64 string for the product image?

Here's the trick: Include the field that carries the base64 encoded string. In our case it's named imageFileBuffer. When you double-click a field, the BI Publisher property window is displayed. Change the code to the following:

<fo:instream-foreign-object content-type="image/jpg" xdofo:alt="Product Image >
<xsl:value-of select="imageFileBuffer"/></fo:instream-foreign-object>

This code which uses the fo:instream-foreign-object object allows us to decode a base64 string back to the jpg image it previously was.

You might have to tweak the path to the base64 encoded string relative to the current object. Example:

<xsl:value-of select=".//AttachmentId" />

This would take the AttachmentId element from two levels below the current.

Did I mention that this example works with jpg images? It's supposed to work with other image formats (gif, png) as well but jpg seems the most reliable.

A preview in BI Publisher Desktop should already show the desired outcome.

Now we can upload the rtf template in the BIP Administration screen, generate the XLIFF file and associate our report with a Siebel view.

In the view, we can do a query for the desired products, click the Report button, select the newly created report and marvel at the magic of base64.

have a nice day

Reblog this post [with Zemanta]

Thursday, March 25, 2010

BI Publisher Table Formatting

Sometimes an easy solution is just around the corner. This time I'll discuss two simple options which we have when it comes to formatting tables in BI Publisher reports.

Repeating table header rows

If the table spans across two or more pages, the typical requirement is to repeat the table header row. To see an example how to accomplish this, we can use the BFwd-CFwd (Brought-Forward-Carried-Forward) sample template delivered with the BI Publisher Desktop installation.

Simply use MS Word formatting to indicate that the first row of the table should be repeated.

Alternate shading of rows ("green bar styling")

A common requirement for long tables is to apply different shading to even and odd rows. This is also called "green bar styling", a term which has its origin in vintage computing when pre-colored fanfold paper was used to produce outputs.

In today's BIPed world, we can simply use another MS Word formatting feature and apply a table style which uses different shades (doesn't need to be green) for even and odd rows.

Above is the result.

Have a nice day

Reblog this post [with Zemanta]

Monday, March 22, 2010

Rich Enterprise Apps - Get a Grip

It has been a while that a link to Oracle's Rich Enterprise Applications page appeared on these pages. I often recommend this site to customers who are keen on knowing how the future Oracle applications (dare I say "Fusion") will look like.

So if you feel the same inclination, go and visit, and navigate to the Rich Client Demo sandbox. You should use a decent or recent browser for this.

For those who can't wait for the release, the data visualization demos might be of particular interest.

You can also save bookmarks and impress your peers. Wanna see a resizable chart?

Note: The sandbox doesn't seem to be available 24x7, so keep tryin'.

Have a nice day


Thursday, March 18, 2010

Siebel CRM Desktop at Work

In a recent post I discussed the installation and setup of the fresh-from-the-oven Siebel CRM Desktop product.

As promised, here is a closer look to how it works. Follow along...

1. Create a Contact in Outlook

I created a new Contact in Outlook and clicked the "Share with Siebel" button. The Contact form for CRM Desktop is a one-stop shop to enter all data and associations of the contact person with Accounts, Notes, Attachments, Opportunities, Activities and Contact Team (positions).

2. Send an e-mail to the new Contact

I then hit the E-Mail button in the Communicate menu and wrote a message to my test contact. Note the "shared with Siebel" bar.

3. Synchronize with Siebel CRM

Now it's time to synchronize. Clicking the CRM Desktop icon in the system tray launches the synchronization process.

4. Verify data in Siebel CRM

Now we can log on to the Siebel Web Client and verify the new (or updated) Contact.

As we can see, the contact person is correctly associated with the account and a new activity of type "Email - Outbound" is there too. Let's drill down on the activity.

Very nice: The complete e-mail is stored as an attachment (.msg file) to the activity record.


Siebel CRM Desktop seems to be a promising productivity tool. Installation, setup and usage are comparatively simple. One of the major benefits is the storage of e-mail communication in Siebel activities.

have a nice day


Monday, March 15, 2010

Siebel Server Component Start-up Mode

Google's first production server rack, circa 1999Image via Wikipedia

Each Siebel release brings a whole bunch of new features. It is admittedly difficult to track all enhancements throughout the releases. Of course there are "New Features" course offerings and the "What's New" chapter in bookshelf - just to name two sources of information.

One of these seemingly hidden features - introduced in release 8.0 - is the Siebel Server component start-up mode.

Similar to services in Microsoft Windows, Siebel server components can be set to manual or automatic start.

The benefit of setting components which are not immediately used on a server to manual start is that the Siebel server doesn't have to spawn a process at start-up time thus reducing the amount of (CPU) time and memeory needed to start the Siebel server dramatically.

The component will still be available on the Server and can be started manually using the srvrmgr command line or the GUI.

I often find that server admins disable entire component definitions to avoid them being loaded into the Siebel server. But the drawback is that if you quickly want to enable functionality on the Siebel server, you would have to activate the component definition and restart the entire Siebel server which results in server downtime.

How to set a Siebel server component to manual start

At the Siebel Server Manager (srvrmgr) command line enter a command similar to the following:

manual start comp eserviceobjmgr_enu for server appserver1

This will set the component to manual start mode. When the server is started, the component will be available on the server albeit in shutdown state. We must use the startup comp command to bring the component up.

The following command sets the component back to automatic start:

auto start comp eserviceobjmgr_enu for server appserver1

We can verify the start mode in the command line by using the following command

list comps show CC_NAME, CP_STARTMODE

The start-up mode can also be set (but not seen...) in the Server > Components view of the Administration - Server Configuration screen in the Siebel Web Client.

have a nice day

Reblog this post [with Zemanta]

Thursday, March 11, 2010

Siebel CRM Desktop - Hands on

The latest Fix Pack for Siebel CRM ( - available for customers on My Oracle Support) includes support for Siebel CRM Desktop for Microsoft Outlook.

I couldn't help but get my hands on this as it provides a lot of features which are quite interesting.
  • Web service based integration of Outlook and Siebel CRM
  • Offline storage of Siebel CRM data
  • Ability to synchronize e-mails, contacts and calendar
  • Extensible framework
So if you want to get your hands on Siebel CRM Desktop for MS Outlook too, this is what to do:

1. Download and install Siebel CRM Fix Pack

Ensure that you install the Fix Pack on all Siebel software components, including Siebel Tools as this will fill the tools/reppatch directory with the necessary .sif and .dat files for the next steps.

2. Import repository and seed data

The archive in the tools/reppatch folder contains all necessary files to update the database. Follow the instructions in the word document in the .zip file to import the .sif archives and the seed data.

The repository updates include the following:
  • Brand new S_PIM% tables to hold the CRM Desktop package information
  • UI components for the new Administration - CRM Desktop screen (which is added to most standard application object definitions)
  • Some business services and classes
  • a bunch of integration objects
  • updates to the S_EVT_ACT table and Account, Contact, Employee and other BCs and BOs
Don't forget to apply the schema changes and compile...

The seed data import creates the necessary LOV data and registers the new views with the Siebel Administrator responsibility.

BTW: In a real-life environment the procedure described in this post would be executed against a Siebel server database. However you can also run it against the sample database if you wish to have a small demo environment.

3. Upload the CRM Desktop metadata files

This step is done in the new Administration - CRM Desktop screen. After logging in as SADMIN, we should be able to locate the new screen in the sitemap. In the Metadata Files view, we have to register the java script and XML files that make up the CRM Desktop metadata. These files are located in the CRM Desktop installation folders, so we can upload them in the Metadata Files view from the following folder:

%imagedir%\ClientAncillary\Siebel_CRM_Desktop_Client\enu\Outlook\SIA (or HOR respectively).

The step is explained in the documentation and the result is as follows:

CRM Desktop metadata files uploaded and registered with the respective file type.

4. Create a test responsibility

CRM Desktop packages are associated with responsibilities to control which user groups have access to what packages. For first evaluations it is recommendable to create a test responsibility and assign the test user account to it.

5. Create a CRM Desktop package

In the Administration - CRM Desktop screen, we use the Packages view to create a new test package and associate it with the test responsibility.

The test package includes all metadata files which we previously registered. The step is described in the documentation.

6. Install the CRM Desktop client

The client side software is based on invisibleCRM's Sales Desktop for Siebel and the installer is delivered with the Fix Pack. Before attempting to install, ensure that you have set up MS Outlook (2003 or 2007) with a default profile.

7. Set up Siebel CRM Desktop

Once MS Outlook is started, the CRM Desktop Setup Assistant is launched and guides us through the remaining setup steps. This includes the connection information to the Siebel CRM server. With a bit of tweaking (the Windows registry) you can convince CRM Desktop to connect to the Siebel Mobile Web Client (which supports inbound web services since but this should only be done for evaluation purposes.

If you run your first evaluation against a large Siebel database or the Siebel sample database it is recommendable to set some filters to limit the amount of data to be synchronized.

The CRM Desktop Synchronization Control Panel with filters for Siebel Account data

8. Initialize local CRM Desktop data

The first synchronization downloads all necessary data to local files. After patiently waiting for completion, we can marvel at the results.

The screenshot above shows the Outlook form for Siebel CRM Contacts. We can now start modifying or creating Contacts, Accounts or Opportunities (replete with notes and attachments) or send e-mails to contacts.

CRM Desktop will synchronize all these changes to the Siebel CRM server.

In the next post, I'll describe how the synchronization works, so stay tuned.

have a nice day

Reblog this post [with Zemanta]

Tuesday, March 09, 2010

How to use the Siebel Bookshelf

The ever so heedful reader might already have noticed a new page on this blog.

Even if I often post quite advanced stuff (at least I try to live up to that illusion), I often meet people who are completely new to Siebel CRM and don't know where to start. Of course, reading the documentation IS a good start.

This is why I created the Siebel Bookshelf page. If you have anything to add, there is a comment function on the page.

have a nice day


Monday, March 08, 2010

Siebel Mobile Web Client and Web Services

SOAPImage via Wikipedia

As indicated in the first teaser post for the latest Siebel CRM Fix Pack, one of the more interesting features is the ability of the siebel.exe - the program engine behind the Siebel Mobile or Developer Web Client - to process incoming SOAP requests.

In this article, I'd like to discuss the setup steps and then I'll show how to invoke a Siebel inbound web service on the local machine.

Setting up web service support for the Mobile Web Client

As the bookshelf guide (EAI2) has already been updated, we can follow the instructions here to enable web service support for Siebel (of course after applying the patch).

In short, you have to add two parameters to the [Siebel] section of the .cfg file you are using:

EnableWebServices = TRUE
WebServicesPort = 2330

You can choose any free port number. 2330 is the default port.

The effect of these settings is as follows. When you start the mobile web client, a second instance of siebel.exe is started in the background (consuming the same amount of memory as the foreground instance) and starts listening on the specified port.

You can also use a command line similar to the following to start only the background listener:

C:\SIA81\CLIENT\BIN\siebel.exe /c C:\SIA81\CLIENT\bin\ENU\siebel.cfg /d sample /u SADMIN /p SADMIN /webservice 2330

Note the /webservice switch followed by the port number. If you run the siebel.exe in background mode, the parameter EnableWebServices is not needed in the .cfg file.

Invoking an inbound web service against the mobile web client

I always wanted to sniff out the BIP Data Service which comes along with the BI Publisher integration. It is used by BI Publisher to process scheduled reports. I am intrigued by this service as it allows to specify any internal integration object name, view mode and search spec and retrieve data from Siebel CRM via web services.

So it is a perfect target for a first test using good ol' soapUI.

Get the WSDL file

The following assumes that you have imported the XMLP Data Service business service (that's the name in Siebel Tools) and the accompanying inbound web service (BIPDataService). This is typically done on server environments during the BI Publisher setup for 8.1.1.x releases.

Launch the mobile web client against the sample database and navigate to the Administration - Web Services | Inbound Web Services view.

Locate the BIPDataService inbound web service, ensure that it is set to "Active" and change the port address to


Click the Generate WSDL button and save the file locally.

(Note: alternatively you can just download the file and change the endpoint address later in soapUI)

Prepare the SOAP request

This is not going into depth how to download, install or use soapUI. Creating a soapUI project for a WSDL file is straightforward.

Once you have the sample request open, you see that the BIPDataService takes five input parameters. Carefully modify the input request and set the parameters similar to the below example.

NamedSearchSpec = 0*
LoginID = (leave empty)
OutputIntObjectName = 12*Perf Account
SearchSpec = 24*[Account.Name] LIKE "K*"
ViewMode = 3*All

The interesting bit about the BIP Data Service is that it accepts only parameter values which are preceeded by the length of the parameter value followed by an asterisk (in a kinda "property set" fashion which is really unusual).

For example to specify the "Sales Rep" view mode, you would have to enter 9*Sales Rep as the value for the ViewMode parameter.

(How to find that out? You can observe how BI Publisher scheduler sets these parameters in the list of executed reports in the BIP Administration console).

Do it

Now let's don't waste any more time and click the green arrow button in soapUI.

Voilá: Nice XML data returned back from the local siebel.exe.

Of course you can create additional test scenarios, for example with the Siebel Account ASI. Have fun!


Setting up web service support for Siebel Mobile or Developer Web Clients (version and higher) is straightforward. The ability to invoke inbound web services on remote clients is not only beneficial for developers but it also has the potential to change the way client-side integration (for example with MS Excel) will be approached in the future.

The BIPDataService is a splendid example how a single web service can serve as a query access point for any data stored in Siebel CRM.

have a nice day

Reblog this post [with Zemanta]

Thursday, March 04, 2010

Multilingual BI Publisher Reports for Siebel CRM

{{ca|La pedra de Rosetta resolgué un problema ...Image via Wikipedia

As indicated in the previous post, I would like to share some insight in how to create BI Publisher reports for Siebel CRM in multiple languages.

As the official documentation is a bit sparse, I'll provide a simple example.

1. Create the report template

Follow the usual steps to create a BI Publisher template. It is recommendable to use English as the development language.

2. Create the XLIFF file

BI Publisher uses the XML Localization Interchange File Format (XLIFF) to allow translation of translatable strings in the report template to multiple languages. For each target language, we have to create one XLIFF (or .xlf) file.

In the BI Publisher Desktop (Word plugin), we can navigate to Tools | Translate Template | Extract Text to create the .xlf file for the current report template.

It is beneficial to save the file as .xlf in the xliff/[lang] folder of the Siebel Developer Web Client's XMLP directory because this is where they have to stay for testing.

3. Translate the .xlf files.

The file created by the BI Publisher Desktop plugin must now be copied and translated once for each deployed language.

Place each copy in the language specific subfolder of the xliff directory of the Siebel client installation. In each language specific copy we must change the target language and the translatable strings.

Comparison of the original .xlf file (English-US, left) and a translated copy (German, right)
Changes are highlighted.

For a list of valid language identifiers, click here.

4. Test

We can use the BI Publisher Desktop to apply an .xlf file to a report template. To do so, we go to Tools | Translate Template | Preview Translation. We can then select an .xlf file and inspect the preview.

5. Deploy

The deployment of multilingual BI Publisher reports includes the following steps.

Copy the report template and the .xlf files to the respective directories on all Siebel Servers. You can also use ADM to accomplish this.

In the Siebel Web Client (connected mode), use the views in the Administration - BIP Reports screen to register the template and associate it with one or more views as usual.

You can use the Report Template Translation view to specify a display name (for the dropdown menu of the Report button) for each deployed language.

Upload the report to the BI Publisher server.

Copy the .xlf files to the BI Publisher server. The .xlf files must reside in the same report-specific folder where the uploaded .rtf template is found.

Rename the .xlf files so that the name is equal to the .rtf file, suffixed with the language identifier.

Now, you're ready to test the BIP report from each language-specific object manager

Here's a screenshot of the Server component report of the previous post in the German Siebel application.

have a nice day

Reblog this post [with Zemanta]

Monday, March 01, 2010

BI Publisher Report on Siebel Virtual Business Components

A commenter recently asked: "Can we build BI Publisher reports on a Siebel Virtual Business Component (VBC)". The answer is "Yes, we can!".

In fact the type of business component doesn't matter. It could be a VBC, or even an EBC. As long as you can create an Integration Object on top of it and run a successful query with EAI Siebel Adapter, it is very likely that a BI Publisher report (which uses integration objects) will also work. When you get as far as a working integration object then you can even do more than just a BIP report but I digress.

I would like to underline this with a simple example. The most prominent set of Siebel standard VBCs is situated behind the applets in the Siebel Server Management views.

An example for a preconfigured server admin view using VBCs
to pull data from the Siebel Gateway Name Server.

Here is the recipe for a nice BIP report on VBCs to display the current state of server components.

1. Verify the business object definition

We can only create integration objects on top of business objects which have a primary BC defined. If this is not the case, specify the primary BC or create a new business object with a primary BC.

If you decide to create a new business object, you must associate it with at least one view in order to be able to show the report when the user clicks the report button in the toolbar.

2. Create the integration object

Use the standard technique (Integration Object Wizard) to create a new integration object in Siebel Tools. Refine the IO's definition so that it suits your needs. And make sure that the IO name starts with "BIP" ;-).

Don't forget to compile...

3. Create and register the BIP Report

I have already outlined the steps to create and register a BIP report in a previous post.

So I am not going to reiterate that here.

4. Test

In my prototype, I used the Server Components Statistics view in the Administration - Server Management screen. The report works fine (albeit a little slower than with normal BCs because of the connection to the Gateway Name Server).

The report displays only the selected record, which is interesting and maybe worth a separate post.


Because we can create integration objects on top of any business object with a primary BC, no matter what type of BC (Standard BC, VBC or EBC) is used in the BO, we can also create BI Publisher reports to create printable output.

PS: I created the prototype above on a multilingual environment. So stay tuned for some updates on how to create BI Publisher reports for multiple languages.

have a nice day