Best practices and tips writing Cognos TM1 TI Processes and Rules

In this article I would like to write some tips that can be usefull for TM1 developers. Some of them will be very common and easy, but still some will be very usefull and important.

Write code in appropriate place


My first recomendation is to develop in special dedicated text editors, I recommend to use Sublime, that is free for download and use and has a lot of usefull features. As any other source-code editors, Sublime has a lot of functions that can impove the way you write your code:

  1. It stores complete history of document changes, thus you can roll back to any version of code;

  2. You have a lot of shortcuts that can inscrease the way you write your code, two of my favotites are:

    • CMD/CTRL + / – transform line or lines into comments;
    • CMD/CTRL + [ and CMD/CTRL + ] – add or delete one indentation level to current line/lines;

    Also there are a lot more, you even can create your own.

  3. Sublime packages! A large comunity of developers have created a lot of different packages, which certainly will increase your productivity. Working with Cognos code I usually use:

  4. Advanced search and replace posibilities.

Of cource there are many other advantages of developing in Sublime, these are only the most important of them. Also there is one inconvenience – you need to copy code from TM1 to Sublime and vice versa, but I think it worth it.

Log process parameters


To make your life easier, I recommend you add some logging data for processes. For example if process have posibility to rewrite or erase data depending on start up parameters – just log this parameters to main log using function LogOutput() with INFO severity level. If you will do that, it will become easier to find out reasons for uncalculable data changes. It can save you a lot of time!

Avoid of using dynamic subsets in processes and views

If you need to use views with dynamic subsets as sources for TI process, think twice about that. Execution of such process can be very slow, if we will compare it with the same process that uses view with static subsets. This is because TM1 will spend extra resources to recalculate structure of subset every iteration over data. This will become more noticeable if subsets have a lot of members or MDX is very complicated.

If you still need to use MDX subset, I recommend you to tranform it to static one in Epilog with function SubsetMDXSet (sDimension, sView, '').

When I first time notice that, I decrease execution time of some processes in times – sometimes from minutes to seconds.

Also be carefull with using views with complicated DMX-subsets, especially if dimensions is large. They also can slow down system productivity, expecially if there are a lot of simultaneously working people in such view.



Bedrock as described on their site is:

Bedrock is an open source, collaborative space that brings together information and experiences for business intelligence professionals.

They have a lot of intresting materials about Cognos TM1. For example I recommend to read and follow their write papers with best practices over some very common topics connected with developing of Cognos projects.

But that's not all, as Bedrock community have developed a lot of very common processes, which you can download and use for free as something like framework for your project. Today there are 68 processes, that can do a lot of very common tasks – create, modify cubes/dimensions/views/data and many-many other tasks, just go and see. I recommend you to familiarize yourself with all of them and use then as necessary in your everyday work.