Skip to Content
Author's profile photo Ted Ueda

SAP BusinessObjects Enterprise BI 4.0 – Integrate Your Custom Application Into the Enterprise Auditing Framework

The Auditing Framework in SAP BusinessObjects Enterprise has grown by leaps and bounds with each new version.  The XI Release 2 version was rudimentary.  The XI 3.x version was actually quite useful.  Now, with the new BI 4.0 version, auditing is essential in understanding how your Business Intelligence architecture is being utilized.  Without it, you’re flying blind.

I’m really happy with it, since, as a support guy, I’m thinking it’s going to make my job a lot easier.

New Auditing Features

There’s tons of enhancements to the auditing framework – you can read about it in the Administrator’s Guide.

I’ll briefly describe what I find the most interesting – from a custom coder perspective.

Each auditing event entry in the ADS_EVENT table has a Action_ID value.  As documented, this ID is  ‘A unique identifier that can be used to tie together a sequence of events initiatedby a single user action’.  So say a user clicks refresh on a dashboard, that then in turn refreshes a Web Intelligence document contained within.  The Action_ID will tie this cascade of events across multiple services back to the initiating user action.  In previous version, it was difficult to determine, looking at an auditing event for a document refresh, what exactly triggered the refresh request.  Not anymore!

In support, we spend appreciable time tracing back auditing and tracelogs, comparing timestamp values, just to infer this info.  Like I said, this new auditing feature is going to make my job a lot easier.

But what if the event was trigged by a custom application that uses the SAP BusinessObjects Enterprise SDK?  In previous versions, custom apps just weren’t within the purview of audited events.  Not anymore!

If you look at the ADS_EVENT.CLIENT_TYPE_ID column, those values are CUID representing the application that invoked the event.  If you link that column to ADS_APPLICATION_TYPE_STR.APPLICATION_TYPE_ID, and print out the ADS_APPLICATION_TYPE_STR.APPLICATION_TYPE_NAME, you’ll see values like ‘BI Launchpad’, ‘CMC’, ‘Web Intelligence’, etc.  This is the way to simply determine which client application requested the service that triggered the auditing event.

Custom Code and the Auditing Framework

But what of custom applications?  If you full-scan the ADS_APPLICATION_TYPE_STR, you’ll see interesting values for the APPLICATION_TYPE_NAME: ‘Custom Application 1′, Custom Application 2’, etc, all the way up to ‘Custom Application 25’.

Those 25 CLIENT_TYPE_ID values have been reserved specifically for custom applications.  If you look in the SAP BusinessObjects Enterprise Java SDK Developer’s Guide, you’ll see all the custom application CUIDs listed:

Application Name
Custom Application 1
Custom Application 2
Custom Application 3
Custom Application 4
Custom Application 5
Custom Application 6
Custom Application 7
Custom Application 8
Custom Application 9
Custom Application 10
Custom Application 11
Custom Application 12
Custom Application 13
Custom Application 14
Custom Application 15
Custom Application 16
Custom Application 17
Custom Application 18
Custom Application 19
Custom Application 20
Custom Application 21
Custom Application 22
Custom Application 23
Custom Application 24
Custom Application 25

Registering your custom app to register itself as one of these client IDs is quite simple.  There’s a new logon method, ISessionMgr.logonEx(String username, String password, String cmsname, String authtype, IEnterpriseLogonInformation logonInformation) that accepts a IEnterpriseLogonInformation instance. By specifying the ClientType bean for the IEnterpriseLogonInformation, subsequent actions taken by the generated EnterpriseSession will be audited under that CLIENT_TYPE_ID value.   For example, the following code snippet:

Log on code snippet registering app under Custom Application 13

registers the EnterpriseSession as ‘Custom Application 13’, and any subsequent actions triggered via this EnterpriseSession will cause an audit event with CLIENT_TYPE_ID equal to “AZETCpaYYmRIingE_hCnWFw”.

For any new development work with SAP BusinessObjects Enterprise BI 4.0 using the Enterprise SDK, I strongly encourage you to register your application with the auditing framework.  It’ll be a good idea to conference in all interested developers within your organization, and ensure each of the 25 custom application slots are used uniquely by each separate custom apps being developed.

And not just because it’ll make my job troubleshooting workflow issues on client deployments that much easier 🙂


The new auditing framework allows for auditing events triggered by users using custom code.  I highly recommend its use.

Assigned Tags

      1 Comment
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member
      The ability to trace a sequence of audit events back to 1 user initiated event is something I longed for since moving to XI.  This is especially desirable in clustered deployments where a given service is offered by multiple servers.  Very, very cool.

      Oh yeah, the ability to register your own app is also pretty sweet.