The IBM Cognos SDK: Bridging the Gaps

While the IBM Cognos 8 BI application suite provides best of breed capabilities and user acceptance, the one size fits all approach necessary for software vendors to allow their applications to remain business agnostic can often leave organizations lacking a focused solution to a specific issue. Providing a process to extend and add value to your organization’s solutions by utilizing existing application architecture ensures that the company continues to realize the maximum ROI from their Cognos software. The Cognos SDK provides a method for IT professionals to collaboratively utilize additional applications, streamline business processes and reduce manual work with a minimal resource commitment.

What is the SDK?

IBM Cognos 8 is a web-based, SOA application. It has been designed with keeping scalability, availability, and openness in mind. Using platform independent, industry proven technologies, such as XML, SOAP, and WSDL, the IBM Cognos SDK can be used to create custom reports, automate report deployment, integrate security and portal functionality, expand and integrate your BI content with other applications such as embedding reports, dynamically retrieving and manipulating BI content, mashups, desktop widgets etc. To facilitate development, the SDK application comes with the following tools:

Software Development Kit: Provides programmatic access to the BI Bus API via Java,
NET, and Visual Basic languages.

URL interface: Allows the passing of commands and parameters over HTTP to integrate the Cognos interface with other applications.

Published IBM Cognos 8 DTD or Schema and documentation: Cognos 8 document type definition (DTD) is an extensive documentation to
support the development of customized solutions using standard report specifications.

Framework Manager Software Development Kit: Utilizes a collection of cross-platform Web services, libraries, and programming interfaces provided with the SDK API to access the full functionality of Framework Manager. It supports two methods of modeling metadata: the ScriptPlayer and the Metadata Service. Both methods use action logs. The BmtScriptPlayer is a stand-alone command line utility capable of playing action logs. While the Metadata Service sends requests through the BI Bus API.

Custom Authentication Provider API: When your corporate authentication provider does not appear on the list of Cognos supported providers or the basic functionality of your authentication provider does not meet your requirements, you can develop a custom authentication provider for IBM Cognos 8. The API is only available in the Java programming language. Based on your needs you can develop a full authentication provider which implements all the functionality required by IBM Cognos 8 to communicate with an authentication source or trusted signon provider providing identification for each user.

Custom Report Function Libraries – Provides customizable report based functions to further enhance the report author’s capabilities. Report authors create report expressions using the Expression Editor which provides a list of default functions that can be used in expressions. In addition to those functions that are available by default, you can create custom functions and make them available to report authors through the SDK application.

Other Customization Capabilities: You can customize the look and feel of IBM Cognos Connection and other IBM Cognos 8 applications, in addition to altering the layout and presentation of many of the IBM Cognos 8 interfaces. A few examples include: creating a custom welcome page, corporate branding, default themes (default skin), or even programmatically adding default portal pages for all users.

How Does it all work?

The IBM Cognos 8 BI SDK provides a single application programming interface (API) that provides the ability to access literally all the functionality within the Cognos application allowing developers to integrate applications and to provide methods for developing custom solutions. Utilizing the Cognos BI Bus API, developers will typically have an external application sending SOAP messages to the SDK component that provides the functionality required. The BI Bus API consists of a set of services and protocols that IBM Cognos 8 services use to communicate with each other, and with external applications.

Figure 1 – External Application Communicates with BI app via SDK

Access to Cognos services using the BI Bus API is achieved through a SOAP request transmitted over HTTP. When a SOAP message sends a request to a service, the message is encoded in XML and then transmitted using HTTP.

The SOAP request consists of the following components:

  • An HTTP header, required as part of transmitting a request using that protocol.
  • A SOAP Action section that the IBM Cognos 8 dispatcher uses to identify the target service for the request.
  • A SOAP header and body that contain the information required to complete the request.

Architecture and Design

Generally speaking, the IBM Cognos SDK application is commonly used either as a stand-alone application or part of an e-business application. Similar to other application development toolkits, a good architecture and design is critical to returning an effective, high performance, flexible and reusable SDK application. It is critical to not only provide a solution to solve a business problem but also ensure the integrity of the architecture, security and other functionality across enterprise applications. There are a couple of key points to consider during the design phase of any SDK related project:

  • Creation of a standard input/output format, such as xml or CSV which are commonly and widely used for many database related applications.
  • The architecture must remain flexible and configurable to optimize the ROI.
  • Reusability and portability should always be kept in mind.
  • Memory leaking, errors and security handling are three often overlooked critical factors in any application.
  • The application should be manageable and expandable at the enterprise level to ensure that the original benefits of the Cognos application are not lost within the developed application.

Three Key Factors to Keep in Mind: Coding Practices, Maintenance and Upgrading

Coding Practices

  • Depending on which programming languages you are using, try to use the appropriate IDE for easier development and debugging. For instance use Eclipse for Java SDK or Visual Studio for .Net programming.
  • Use version control if there are multiple developers involved for large SDK application developments.
  • Documentation should start on day one.
  • Use language-specific naming conventions.
  • If running a report is involved, test the data source connection and specific reports within Cognos Connection first to validate the output before coding the implementation of the report.
  • Start with a simple non-secured Cognos environment before working up to the full production complex security environment. This will help to save significant time on debugging and can often make identifying issues easier.
  • Use a dedicated gateway to connect to the dispatcher via the internal dispatcher URI for SDK applications.
  • Bypass unnecessary security zones if the SDK application is to be used on the intranet only.


  • Centralize the SDK applications and limit to one programming language for simpler maintenance.
  • Centralize application development and related documentation.
  • Always check Cognos software supported environments BEFORE applying any computer operation system patches and/or programming language specific updates. The Cognos SDK application only works well with the matching Cognos application version.
  • Secure programmatically produced sensitive report outputs, and archive old versions as development continues to allow for rollback.
  • Periodically archive and clean up application generated log files to minimize future maintenance.


  • Backup your application code!
  • Install the new IBM Cognos application.
  • Install and configure the new IBM SDK application, including updating the new programming environment, for instance use Java SDK 1.5 for Cognos 8.4.
  • If your SDK application creates, modifies, or saves report specifications, modify the access permissions for your reports to prevent your users from inadvertently saving them with a new report specification schema.
  • Review the SDK new release notes to modify your SDK application appropriately.


The IBM Cognos SDK is an easy to use, single application programming interface toolset that allows you to maximize your BI investment by incorporating the solution into other e-applications and making the connections between BI with other applications, highly portable, reusable and configurable. In addition, it allows the organization to take advantage of your existing Cognos 8 security and other IT infrastructure. In the end it makes both your BI application and other business applications more intelligent, more robust, and more valuable with minimal cost.