Several new bugs

Happy New Year! It’s been a busy time, however, I’m back with some new posts. I wish the readers the best of the best of the best :-) I wish that your repository always stays consistent, that your physical layer is a true star, and your users never have problems with BI Answers.  I’ve digged up a few things that might be interesting:

Issue 1

Duplicate records are being eliminated from the Answers request results, when the desired results would be to include all rows, including duplicates.

The duplicate rows can have both the same case or different case.  Setting the case sensitivity parameter has no impact.


One row may be:

Another row may be:
dinner or Dinner

The second row is not included in the Answers results.  Running the same SQL directly on the server does return all rows, including duplicates.  Analytic server is removing the duplicates.


Analytic Server issues the distinct clause.


Include the table key column in the request.  Hide the column so it is not actually seen in the request results.  This will make each row unique and thus each row, including what would be considered duplicate, is included in the results.


Item 2

How to configure External Db Authentication that supports OBIS Impersonation (i.e. Delivers, BI Publisher)


To implement external DB authentication (i.e., authentication via a user/pw record in a database), you should NOT use AUTHENTICATION_TYPE = DATABASE. Instead, define it exactly like the Siebel Integrated setup in SiebelAnalytics.rpd’s/EnterpriseBusinessAnalytics.rpd’s Authentication init block. That is:
Use the default NQS Authentication type in NQSConfig.ini by commenting out all authentication types.
Define a separate physical database in the rpd which has a connection pool configured to hit the external database used which has the defined OBI users.
Enable Shared logon for this connection pool; set User name to :USER and Password to :PASSWORD.
Only the connection pool configuration is required for this physical database – no table/column objects are required.
Define an Authentication Session initialization block to set the session system security variable ‘USER’ to be used for OBIS External DB Authentication.
Point the initialization block to the connection pool defined in step 2.
Use an initialization string like “Select ‘:USER’ from external_table WHERE USERID=':USER’.
Define the ‘Edit Data Target’ to use system security variable ‘USER’ – this will make this initialization block the defacto OBIS authentication init block.
Define all connection pools used for backend data access to use ‘Shared logon’ with an explicit database user/password with at least read access to all backend tables.
This configuration supports OBIS Impersonation (i.e. Delivers). Database Authentication will be done via the connection pool defined in the Authentication init block. The user / password entered in an OBIPS client browser session will be passed to OBIS via the :USER / :PASSWORD system session variables. These values will then be passed to the database for user validation – if a database session is established using this user/password combo, the user will be considered authenticated to OBI.

Also, it does not require all OBI users to be defined in the rpd. In fact, remove all the OBI users from the rpd that will be authenticated via a database user entry. If you require OBIS Group Security assignments for users, you should use a separate external table (either existing or new) that stores the user-to-OBIS group associations, and make the associations via a session initialization block. Again, similar to the SiebelAnalytics.rpd’s/EnterpriseBusinessAnalytics.rpd’s Autherization initialization block.

Leave a Reply