## Sum a group of members base on hierarchy

Product:
Planning Analytics 2.0.9
Planning Analytics Workspace 54
Microsoft Windows 2016 server

Problem:
Sum up on a hierarchy?

Suggested solution:
Turn on hierarchy (virtual dimensions) by adding EnableNewHierarchyCreation=T to the TM1 applications tm1s.cfg file.
Ensure that you have free memory on the server before you turn this one.

Login to paw and open a new book.
Right click on the dimension, and select edit dimension. Click on attributes icon.
Right click on the attribute you want to create a hierarchy for.

The new hierarchy is shown as a dimension.

There are 3 first hierarchy created at first time, the one with same name is for backward compatibility, your new one, and levels. If you delete a member from a hierarchy – it is only removed from that virtual dimension. To delete a leaf member, you should delete it from the leaves hierarchy. Then data and all existing of that member is removed from all hierarchy’s.

Start PAX and connect to your TM1 application.
Right click on the cube that contain the data you want to see, and select Exploration.

Expand the dimension to see the new hierarchy. Drag the hierarchy to the rows area. Now you got the report summarized on the Plants.

Convert the report to a quick report.

Create a excel report the way you want and reference the result on the quick report sheet. Publish the report to TM1WEB.

Hierarchy can only be used in Explorations and Quick Reports. If you add members to the leaves, you have to recreate the dimension with a TI script to get the new members added.

## MDX in =@TM1RPTROW

Product:
Planning Analytics 2.0.9
Planning Analytics Workspace 54
Microsoft Windows 2016 server

Problem:
How sum up values from a group of accounts, in an Excel report?

Suggested solution:
Create a hidden dynamic report with the given subset in the TM1RPTROW and a sum underneath, then refer the sum.

Mark out the accounts that you want to sum with some text in the attribute, like here in planning samples, we set AccountCatagory to text “coffee”.

Go to Planning Analytics Workspace (PAW) and open a new book.
Expand the Dimensions, and for your “plan_chart_of_accounts” right click and select Edit dimension.
Click on icon for Member attribute mode in top right corner of the view.
Scroll to the column you want to edit, in out example AccountCatagory.
Enter the word “coffee” on the rows you want selected.
Updates are save direct to the dimension (tm1 database).

Go to Planning Analytics for Excel (PAX) and connect to your planning sample.
Expand the views on the right side and import a view that contain the columns you want.

On the view, right click and select dynamic report on new sheet.
Click on “Show Format Areas”.
In cell B11 insert the MDX formula:

‘{FILTER(TM1SUBSETALL([plan_chart_of_accounts].[plan_chart_of_accounts]) , (INSTR(1 , [plan_chart_of_accounts].[plan_chart_of_accounts].CURRENTMEMBER.PROPERTIES(“AccountCategory”) , “coffee” , 1) >= 1))}

In cell B21 update the TM1RPTROW to have a reference to the MDX formula last:

=@TM1RPTROW($B$12,”Planning Sample CAM:plan_chart_of_accounts”,,,”AccountName”,FALSE,B$11) Above B$11 will give that the TM1RPTROW use the MDX formula to select accounts.
Then you need to sum up this values to a single cell.

Open the drop down of areas and mark the tm1rptdatarng line and press ctrl+c to copy the value.
Go to cell C19 and enter a SUM formula with INDEX:

=SUM(INDEX(TM1RPTDATARNG48625521,0,3))

Replace the TM1RPTDATARNG48625521 with your unique area name.
This should give that this always sum up the values in column 3 (ly actual) to this cell.

Now create a new sheet in the excel workbook.
Insert the dynamic report you want, and on the last line enter a reference to above cell.

=Sheet2!C19

This will update this cell with the value from the other sheet.

You need to refresh the book for the numbers to be updated.

You can hide the second sheet in the excel workbook, then the report is only one page.

There is better ways to solve this – check out the links below.

## How add a clock to PAW?

Product:
Planning Analytics 2.0.9
Planning Analytics Workspace 54
Microsoft Windows 2016 server

Problem:
How add a nice clock to the dashboard?

Suggested Solution:
Create a separate html page on your IIS server (or external) that all users can reach.

In that HTML page have this code only:
<!DOCTYPE html>
<html>
<body>

<iframe src=”https://free.timeanddate.com/clock/i7gqbnya/n239/fn6/fs16/fc9ff/tc000/ftb/bas2/bat1/bacfff/pa8/tt0/tw1/th1/ta1/tb4″ frameborder=”0″ width=”217″ height=”60″></iframe>

</body>
</html>

( you can create your own clock at site https://www.timeanddate.com/ )
Then copy the HTML code to a webpage that you save as default.html on your site. Any links need to be renamed to use https instead of http in the code, otherwise you get a blank page in paw.
(the default.html page will be the default page shown when a user browse to that url).

Inside PAW open the sheet you want to add a clock to.

Click on URL icon, and paste in the URL to your page.

https://time.tm1.dk/default.htm

Important that you enter HTTPS, as you can only use HTTPS pages inside PAW.
You can rotate the URL block and cut the empty space, then it looks nice when you leave edit mode in PAW.

## SUMIF of attributes in custom report

Product:
Planning Analytics 2.0.9
Planning Analytics for Excel
Microsoft Windows 2016 Server

Problem:
How sum a selection of accounts on a PAX custom report?

Suggested Solution:
Start Excel and login as developer in your TM1 instance (we use 24Retail in our example)
Find the cube that contain the dimensions you want to work with.

Right-click and select Open in viewer.
Move the dimensions to where you want them.

Right click on row and select Show attributes, to preview them in the view.

Mark the attribute you want to see and click on arrow and OK.

Click on the reports icon to insert it to your excel sheet.

Select custom reports, to have it in that format.

Select the column B and right click to Insert a new column, to show the attribute.

Enter the cube and dimension in cell A7
Enter the Attribute name in cell B8
Enter the DBRA function in cell B9, like this: =@DBRA($A$7,$A9,B$8)

Drag the formula, by grab in the corner of the cell, to the whole column to get values.
Now you have the attribute listed.

Enter the attribute value you want to sum in cell A27 and below.
Enter the SUMIF function in cell A27, like this: =SUMIF($B9:$B24,A27,C$9:C$24)
The SUMIF function have this parameters =SUMIF(area to search after value in, value to look for, area to sum rows where value is).
Copy the formula down to the other rows.

Now you can hide column B if you want it to look more automatic.

In TM1WEB you click on “recalculate” icon, to get new values.
There exist other ways to solve this, use of hierarchies can be one.

http://public.dhe.ibm.com/software/data/cognos/documentation/docs/en/tm1/9.0sp3/is_document_1425_tm1websupportedexcelfeaturelist.pdf

Some excel function does not work in TM1WEB, you must test them first.

Recreating TM1 Alternate Hierarchies

https://code.cubewise.com/blog/mastering-hierarchies-in-ibm-tm1-and-planning-analytics

## How find reference inside TI processes

Product:
Planning Analytics 2.0.9
Microsoft Windows 2016 server

Problem:
How can i find if a TM1 TI process contain any reference to other TM1 process?

Suggested solution:
Search in DOS in all the PRO files in data folder (normally the TI process are saved as text files with pro ending in data folder) for the name of the TI process.

Change to the folder where you have your TM1 application.
Enter below command to find the word “security” in all TI process for planning sample:
find  /i  “security”  “C:\Program Files\ibm\cognos\tm1_64\samples\tm1\plansamp\*.pro”

You will get a result similar to this;

but it lists all the files it search – so a better command can be to use FINDSTR

findstr /i /m /s “plan_load_budget_asci” “C:\Program Files\ibm\cognos\tm1_64\samples\tm1\plansamp\*.pro”

Above line will search for the TI process name plan_load_budget_asci

Inside the Test1.pro i had enter a reference to the other TI process – that way it is listed.

https://www.groovypost.com/howto/find-command-search-windows/

https://ss64.com/nt/find.html

https://ss64.com/nt/findstr.html

Running a TI Process from within another Process

## How install Planning Analytics on Linux

Product:
Planning Analytics 2.0.91
Linux Centos

Problem:
How install PA to Linux server?
https://www.ibm.com/support/pages/ibm-planning-analytics-20-fix-lists

Linux commands:
https://ss64.com/bash/

Solution:
Install the Linux distribution with a GUI.

Setup a static IP address on Linux, so it is easy to connect to it with PUTTY and WINSCP.
https://winscp.net/eng/index.php

(Test this steps in you lab first, they may differ because of your flavor of Linux)

Install simple editor:
yum install nano

Install X11 windows system (if needed) on linux:
yum install xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-apps -y
In /etc/ssh/sshd_config file set X11Forwarding=yes
Restart the SSH service with command:
systemctl restart sshd

To use X11 you must install Xming on your Windows laptop:
https://sourceforge.net/projects/xming/

Open file C:\Program Files (x86)\Xming\X0.hosts in notepad++
add the IP address of the linux system you want to work with

Restart the Xming program on your Windows laptop.

Install C++ libraries:
yum -y install libstdc++ libstdc++.i686 motif libXm.so.4 libXtst

Create a installations folder:
mkdir -p /data/installationsmedia

Copy the file tm1_linuxi38664h_2.0.91.41_ml.tar.gz to the linux server with WINSCP.

Change to root user:
su –

Go to the folder where media are:
cd /data/installationsmedia

Unzip the file:
tar -xf tm1_linuxi38664h_2.0.91.41_ml.tar.gz

Go to the linuxi38664h folder:
cd linuxi38664hprof

Check that you have execute permissions on the files:
ls -al

Run the installation:
./issetup

Click next for the installation.

select production if it is a production server.

All components are selected above.

Create a user:
passwd cognos

Install java:
Copy file ibm-java-x86_64-jre-8.0-6.10.bin to linux server.
Go to folder where the media is. Copy to data folder with command:
cp ibm-java-x86_64-jre-8.0-6.10.bin /data/
Go to data folder:
cd /data
Change to be able to execute:
chmod 777 ibm-java-x86_64-jre-8.0-6.10.bin
Run install of java with command:
./ibm-java-x86_64-jre-8.0-6.10.bin

Click OK to English as language

Select “i accept..” and click Next

Click Next
Click Next

Click Install

Click Done

Create environment values (only if they are needed):
JAVA_HOME /opt/ibm/java-x86_64-80/jre
LD_LIBRARY_PATH /opt/ibm/cognos/tm1_64/webapps/pmpsvc/WEB-INF/bin64/

Do not edit the /etc/bashrc file, instead create a custom.sh shell script in folder /etc/profile.d/ to make custom changes to your environment for all users

Go to folder /etc/profile.d/ and create a new cognos.sh file to store your variables.

export JAVA_HOME=/opt/ibm/java-x86_64-80/jre
export LD_LIBRARY_PATH=”/opt/ibm/cognos/tm1_64/webapps/pmpsvc/WEB-INF/bin64:$LD_LIBRARY_PATH” export PATH=”$PATH:/opt/ibm/cognos/tm1_64/bin64″
export DISPLAY=’192.168.1.11:0.0′

You must set the IP of the windows laptop you run Xming on to the export DISPLAY command.

Enter . ./cognos.sh to activate the settings above. In some Linux installations you do not need above values – as they are already configured, then it can be enough to only type JAVA_HOME=/opt/ibm/java-x86_64-80/jre before your command.

Enter env to check the variables values.

Change the file block value:
sysctl -w vm.max_map_count=‭1310600‬

Create a folder for the tm1 applications (tm1 do not work well with long paths):
mkdir -p /data/pa

chmod -R 777  /data/pa
chmod -R 777  /opt/ibm/cognos

Change owner to the cognos account:
chown –R  cognos:cognosusers /data/pa/
chown –R  cognos:cognosusers /opt/ibm/cognos/

To start Cognos Configuration:
LD_LIBRARY_PATH=/opt/ibm/cognos/tm1_64/webapps/pmpsvc/WEB-INF/bin64/ JAVA_HOME=/opt/ibm/java-x86_64-80/jre /opt/ibm/cognos/tm1_64/bin64/cogconfig.sh

Set the memory for the TM1WEB to higher number if TM1WEB is used.

Use only FQDN instead of localhost in TM1 Application.

Only to be sure add the company domain and all tm1 servers to the valid domain list for the Cognos Application Firewall.

Do all configuration and press save icon.

Start the service to see that they do not give errors.

Stop the service in cognos configuration and exit cognos configuration.

Open ports in firewall for TM1 on linux:

firewall-cmd --zone=public --add-port=5495/tcp --permanent

firewall-cmd --reload
firewall-cmd --list-ports


(you may need to open more ports in the Linux firewall for your TM1 applications)

Update the values for TM1WEB if used, in file (nano /opt/ibm/cognos/tm1_64/webapps/tm1web/web-inf/configuration/tm1web_config.xml)

<!– CubeViewerRowPageSize: Number of rows to fetch in a page of cubeviewer –>

<!– CubeViewerColumnPageSize: Number of columns to fetch in a page of cubeviewer –>

Use the scripts to start and stop the PA services.

Create unit service files with the configuration to prepare for systemd services, like the tm1 admin service.

That have this content:
[Unit]
Description=Cognos TM1 – tm1 admin server.service
After=network.target auditd.service
Documentation=https://www.ibm.com

[Service]
Type=forking
Environment=”LD_LIBRARY_PATH=/opt/ibm/cognos/tm1_64/bin64:/usr/lib:/lib:$LD_LIBRARY_PATH” Environment=”JAVA_HOME=/opt/ibm/java-x86_64-80/jre” Environment=”TM1_PATH=/opt/ibm/cognos/tm1_64/bin64″ ExecStart=/opt/ibm/cognos/tm1_64/bin64/startup_tm1admsrv.sh ExecStop=kill ps -e | grep “tm1admsrv.exe” | awk ‘{print$1}’

User=cognos
WorkingDirectory=/opt/ibm/cognos/tm1_64

# Kill root process
KillMode=process

# Wait up to 30 seconds for service to start/stop
TimeoutStartSec=120
TimeoutStopSec=60

# Remove process, file, thread limits
#
LimitNPROC=infinity
LimitNOFILE=infinity

# Restart on non-successful exits.
Restart=on-failure

# Don’t restart if we’ve restarted more than 3 times in 2 minutes.
StartLimitInterval=120
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

To start the service enter (use this first to test and ensure your unit file works):

To make the service start after a reboot of linux enter:

After unit files are created you can stop/start the tm1 services with these commands:

• Start service: systemctl start [Name of Service]
• Stop service: systemctl stop [Name of Service]
• Restart service: systemctl restart [Name of Service]
• Status of service: systemctl status [Name of Service]

Create the file for TM1 Application web
nano /usr/lib/systemd/system/tm1app.service

That have this content:
[Unit]
Description=Cognos TM1 – Application server
After=network.target auditd.service
Documentation=https://www.ibm.com

[Service]
Type=forking
Environment=”JAVA_HOME=/opt/ibm/java-x86_64-80/jre”
# we use the script to start and stop
ExecStart=/opt/ibm/cognos/tm1_64/bin64/startwlp.sh
ExecStop=/opt/ibm/cognos/tm1_64/bin64/stopwlp.sh
User=cognos
WorkingDirectory=/opt/ibm/cognos/tm1_64/bin64

# Kill root process
# KillMode=process

# Wait up to 30 seconds for service to start/stop
TimeoutStartSec=120
TimeoutStopSec=60

# Remove process, file, thread limits
LimitNPROC=infinity
LimitNOFILE=infinity

# Restart on non-successful exits.
# Restart=on-failure

# Don’t restart if we’ve restarted more than 3 times in 2 minutes.
# StartLimitInterval=120
# StartLimitBurst=3

[Install]
WantedBy=multi-user.target

Create the file for TM1 planning sample (update for your TM1 instance)
nano /usr/lib/systemd/system/tm1plansamp.service

That have this content:
[Unit]
Description=Cognos TM1 – Planning Sample
Documentation=https://www.ibm.com

[Service]
Type=forking
Environment=”LD_LIBRARY_PATH=/opt/ibm/cognos/tm1_64/bin64:/usr/lib:/lib:$LD_LIBRARY_PATH” Environment=”JAVA_HOME=/opt/ibm/java-x86_64-80/jre” Environment=”TM1_PATH=/opt/ibm/cognos/tm1_64/bin64″ # the case of the letters in path is important ExecStart=/opt/ibm/cognos/tm1_64/bin64/tm1s.exe -w -z /opt/ibm/cognos/tm1_64/samples/tm1/PlanSamp ExecStop=kill -s INT ps -ef | grep “tm1s.exe -w -z /opt/ibm/cognos/tm1_64/samples/tm1/PlanSamp” | grep -v grep | awk ‘{print$2}’
# must be root to be able to kill this process
User=root
WorkingDirectory=/opt/ibm/cognos/tm1_64/bin64

# Kill root process
KillMode=process

# Wait up to 30 seconds for service to start/stop
TimeoutStartSec=120
TimeoutStopSec=60

# Remove process, file, thread limits
LimitNPROC=infinity
LimitNOFILE=infinity

# Restart on non-successful exits.
Restart=on-failure

# Don’t restart if we’ve restarted more than 3 times in 2 minutes.
StartLimitInterval=120
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

You need to test the start and stop a few times to get the commands correct.

Check in TM1 architect that you can reach the TM1 instance from your laptop.

If you edit the unit file, you must run this command to reload the file:

To list running TM1 instance on Linux, enter this command:
ps -ef  | grep “tm1s.exe”

To check the service running use this command:
systemctl  list-units  –type=service

To remove failed service enter this command:

systemctl reset-failed

If the TM1 instance is run with systemd, as above, then you must in each TM1s.cfg file have this value:

RunningInBackground=F

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

https://www.ibm.com/support/pages/how-manage-your-tm1-application-server-java-memory

https://www.cyberciti.biz/faq/how-to-check-open-ports-in-linux-using-the-cli/

https://www.thegeekdiary.com/how-to-open-a-ports-in-centos-rhel-7/

https://www.ibm.com/support/knowledgecenter/SSD29G_2.0.0/com.ibm.swg.ba.cognos.tm1_inst.2.0.0.doc/c_inst_troubleshooting_timeouts.html

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/managing-services-with-systemd_configuring-basic-system-settings

https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

AWK tutorial: find and kill process use awk

Note that use of ODBC drivers on Linux demand a expensive license. Recommend to only use csv files to transfer data to and from TM1 on Linux.

## ERROR: PAA Agent not found at the PA installation directory passed as input

Product:
Planning Analytics 2.0.9
Planning Analytics Workspace 53

Problem:
When run the installation of the PAA agent you get the error: ERROR: PAA Agent not found at the PA installation directory passed as input

Solution:
Enter the path to tm1 folder in quotation mark.
Unzip the file to a empty folder.
Enter updatePAAagent.bat “d:\program files\ibm\cognos\tm1_64”

## Error paste to tm1web from excel

Product:
Planning Analytics 2.0.9 tm1 application web
Microsoft Windows 2016 server
Microsoft Edge Version 83.0.478.58 (Official build) (64-bit)

Problem:
Can not copy and paste between planning analytics application web and excel.
First time you get a error message:

Solution:
For chrome or IE edge install the tm1 plugin from here

Start new Edge and surf to https://chrome.google.com/webstore/detail/ibm-cognos-tm1-web-clipbo/pfcpjkoiknombhfcjnjihpafmkhmdcjb

Click on the “add to chrome”

Then it should work to copy and paste between Tm1 app web and excel.

https://www.howtogeek.com/120743/how-to-install-extensions-from-outside-the-chrome-web-store

## CCLMsg: system text=’Argument value is null’

Product:
Planning Analytics 2.0.9
Microsoft Windows 2016 server

Problem:
After upgrade of Planning Analytics you get a error when you start Performance Modeler.
CCLMsg: system text=’Argument value is null’

Solution:
On your computer, uninstall Performance Modelere from Control Panel\Programs\Programs and Features.

Then install it again manual, from folder D:\Program Files\ibm\cognos\tm1_64\webapps\pmpsvc\rcp_installs\PerformanceModeler64.msi

To make the installation be for all users, run it with this cmd command as administrator
msiexec /i “d:\install\pm\PerformanceModeler64.msi” /L*V “d:\install\mypm.log” TARGETDIR=”d:\Program Files\pm” ALLUSERS=1

## SystemServerClientNotFound

Product:
Planning Analytics 2.0.7
Cognos Analytics 11.0.x
Microsoft Windows 2012 server

Problem:
During change of CA11 server, you can not login to TM1 Architect or TM1WEB.
You get error: SystemServerClientNotFound
The new windows IIS for the Cognos BI gateway server is using HTTPS.

Solution:
Inside tm1s.cfg file ensure the values for IntegratedSecurityMode=5 point to correct part of Cognos Analytics.

ServerCAMURI=http://caservername.domain.com:9300/p2pd/servlet/dispatch
ClientCAMURI=https://caservername.domain.com:443/ibmcognos/bi/v1/disp

If the Cognos BI dispatcher also uses SSL, then set it up like this
https://www.ibm.com/support/pages/how-configure-planning-analytics-connect-ssl-secured-cognos-dispatcher