Regenerate cryptographic keys in Cognos Analytics

If you Cognos service is not starting with following error, then your cryptographic keys got corrupted.

[Launching a JVM using ‘Maximum memory in MB’]
Successfully launched a test JVM with the memory setting of ‘16384’. Note that this does not guarantee that the IBM Cognos service will start and run successfully.
To see which JVM options are based on this setting, view ibmcognos_location/bin64/bootstrap_wlp_<OS>.xml and see your JVM documentation for an explanation of those options.
[Authentication Service]
[ ERROR ] The server did something wrong.
[ ERROR ] AAA-AUT-0016 The function call to ‘CAMFactory.initialize’ failed.
[ ERROR ] CAM-CRP-1095 Unable to find the encryption certificate with alias ‘encryption’ in the keystore ‘E:/cognos/analytics/configuration/certs\CAMKeystore’.
[ ERROR ] AAA-AUT-0016 The function call to ‘CAMFactory.initialize’ failed.
[ ERROR ] CAM-CRP-1095 Unable to find the encryption certificate with alias ‘encryption’ in the keystore ‘E:/cognos/analytics/configuration/certs\CAMKeystore’.

Follow the steps from the url: to regenarte the keys.

Tableau personal folders

Currently Tableau doesn’t have personal folders kind of structure. With below steps you could create a personal folders for your organization.

1. Create a new project – Personal folders
2. at permissions – For “All Users” set project permissions as – Publisher. Leave rest all to none
3. click on “Edit Content Permissions” and then select “Locked to the project”

personal folders are ready. Content is only visible to publishers and admins only. tableau personal folder_1tableau personal folder_2


How to create personal folders in tableau.


Schedule tableau pdf reports using powershell, tabcmd and windows task scheduler

Though using Tableau UI we can schedule pdf email but it doesn’t give us the flexibility in setting up page layout, scaling, sending email outside of tableau users, etc.,

I used below script to achieve this

Tableau url:
Tableau workbook url: /#/site/sitename1/views/DashboardName_1/ViewName_1
Tableau logon user name: user_1 , password: Password_1
Email address to use for sending email:
Email recipients:;
Tableau tabcmd installed path: E:\Tableau\Command Line Utility\tabcmd.exe
Power shell installation path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Power shell script path: E:\Tableau\Command Line Utility\ps_tableau_script.ps1
Pdf output location: E:\TableaurRportOutput\DashboardPdf_1
Below is the power shell script.
Smtp server:

Before writing power shell script make sure you are able to send email using command prompt.
You can schedule power script using windows scheduler.
Powershell script: save below code as .ps1 format.


$file = “E:\TableaurRportOutput\DashboardPdf_1″+ “_” + $(get-date -f yyyy-MM-dd) + “.pdf”

#login to tableau and export pdf to a location.
./tabcmd.exe login -s https:// -t sitename1-u user_1 -p Password_1 $ –no-prompt
#-h –no-prompt
#–timeout 5
./tabcmd export ” DashboardName_1/ViewName_1″ –fullpdf –pagelayout landscape –pagesize letter -f $file –no-prompt
./tabcmd logout

#sending email
$FromEmail = “”
[string[]]$ToEmail = @(“”,””)
$smtpserver = ” ”

$Subject=”PDF Dashboard Report”
Good morning,
Please see attached the Dashboard daily report.

send-mailmessage -from (“$FromEmail”) -to ($ToEmail) -subject “$Subject” -Attachment $file -body “$message ” -BodyAsHtml -smtpServer $smtpserver


#failure email
catch [Exception]
Write-Host (“Errorcount $errorcount”)
Write-Host (“Error: {0}” -f $_.Exception.Message)
$errorcount = $errorcount + 1
$message = $_.Exception.Message
if ( $errorcount -eq 1)
send-mailmessage -from (“$FromEmail”) -to ($FromEmail) -subject “$Subject failed” -body “$message” -smtpServer $smtpserver
Start-Sleep -s 600


sql server disk space usage by database

sql server disk space used by database.
You need to run following query on each database to get information by tables and its size on disk with number of rows.

    t.NAME AS TableName,
    s.Name AS SchemaName,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
    CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
    sys.tables t
    sys.indexes i ON t.OBJECT_ID = i.object_id
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
    sys.allocation_units a ON p.partition_id = a.container_id
    sys.schemas s ON t.schema_id = s.schema_id
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
    t.Name, s.Name, p.Rows
    SCHEMANAME,TotalSpaceMB DESC, t.Name

ibm i2 documentation and learning


ibm i2 ibase

few referral documents:

Click to access ibm_i2_ibase_white_paper.pdf

i2 ibm documentation:

i2 ibase learning”%2Cfilters%3A()%2CnumberOfResults%3A’20’%2CpageNumber%3A1%2CpubEntIdentifier%3A”%2Cquery%3Aibase%2Csorting%3Arelevance%2F%2Fasc%2Ctype%3Aall%2CviewMode%3A0)

ibm i2 ibase

IBM i2 EIA Lab enviroment:

ibm i2 videos