Hi Philipp,
Sorry for my delayed response.
I will send the audit report to the users every six months using their model, which used the dataset.
The audit report SQL from the audit package
SELECT
"COGIPF_RUNREPORT"."COGIPF_PACKAGE",
INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/package['),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/package[') + 16, INSTR(SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/package[') + 16), ']') - 2),
INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/module['),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/module[') + 15, INSTR(SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/module[') + 15), ']') - 2),
INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/uploadedFile['),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/uploadedFile[') + 21, INSTR(SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/uploadedFile[') + 21), ']') - 2),
INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/dataSet2['),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/dataSet2[') + 17, INSTR(SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", INSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", '/dataSet2[') + 17), ']') - 2),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_PACKAGE", 1, LENGTH("COGIPF_RUNREPORT"."COGIPF_PACKAGE")),
"COGIPF_USERLOGON0"."COGIPF_USERNAME",
"COGIPF_RUNREPORT"."COGIPF_REPORTNAME",
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 1, 11),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 19, LENGTH("COGIPF_RUNREPORT"."COGIPF_REPORTNAME") - 20),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 1, 7),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 15, LENGTH("COGIPF_RUNREPORT"."COGIPF_REPORTNAME") - 16),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 1, 18),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 26, LENGTH("COGIPF_RUNREPORT"."COGIPF_REPORTNAME") - 27),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 1, 12),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 20, LENGTH("COGIPF_RUNREPORT"."COGIPF_REPORTNAME") - 21),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 1, 6),
SUBSTR("COGIPF_RUNREPORT"."COGIPF_REPORTNAME", 14, LENGTH("COGIPF_RUNREPORT"."COGIPF_REPORTNAME") - 15),
"COGIPF_RUNREPORT"."COGIPF_REPORTPATH",
to_char("COGIPF_RUNREPORT"."COGIPF_LOCALTIMESTAMP", 'mm-dd-yyyy'),
CASE
WHEN
UPPER(SUBSTR("COGIPF_RUNREPORT"."COGIPF_TARGET_TYPE", 1, 1)) IS NULL OR
LOWER(SUBSTR("COGIPF_RUNREPORT"."COGIPF_TARGET_TYPE", 2, LENGTH("COGIPF_RUNREPORT"."COGIPF_TARGET_TYPE") - 1)) IS NULL
THEN
NULL
ELSE UPPER(SUBSTR("COGIPF_RUNREPORT"."COGIPF_TARGET_TYPE", 1, 1)) || LOWER(SUBSTR("COGIPF_RUNREPORT"."COGIPF_TARGET_TYPE", 2, LENGTH("COGIPF_RUNREPORT"."COGIPF_TARGET_TYPE") - 1))
END
FROM
(
SELECT
"COGIPF_USERLOGON"."COGIPF_USERNAME",
"COGIPF_USERLOGON"."COGIPF_USERID",
"COGIPF_USERLOGON"."COGIPF_LOG_LEVEL",
"COGIPF_USERLOGON"."COGIPF_STATUS",
"COGIPF_USERLOGON"."COGIPF_ERRORDETAILS",
"COGIPF_USERLOGON"."COGIPF_LOCALTIMESTAMP",
"COGIPF_USERLOGON"."COGIPF_REQUESTID",
"COGIPF_USERLOGON"."COGIPF_TIMEZONE_OFFSET",
"COGIPF_USERLOGON"."COGIPF_SESSIONID",
"COGIPF_USERLOGON"."COGIPF_LOGON_OPERATION",
"COGIPF_USERLOGON"."COGIPF_TENANTID"
FROM
"COGIPF_USERLOGON"
WHERE
"COGIPF_USERLOGON"."COGIPF_LOGON_OPERATION" = 'Logon' AND
"COGIPF_USERLOGON"."COGIPF_USERNAME" <> 'EMPTY logData'
) "COGIPF_USERLOGON0"
LEFT OUTER JOIN "COGIPF_RUNREPORT" "COGIPF_RUNREPORT"
ON "COGIPF_USERLOGON0"."COGIPF_SESSIONID" = "COGIPF_RUNREPORT"."COGIPF_SESSIONID"
WHERE
"COGIPF_RUNREPORT"."COGIPF_LOCALTIMESTAMP" >= CASE WHEN EXTRACT( DAY FROM TRUNC(CURRENT_DATE) - NUMTODSINTERVAL( EXTRACT( DAY FROM TRUNC(CURRENT_DATE) ), 'DAY' ) + INTERVAL '1' DAY + NUMTOYMINTERVAL( -6, 'MONTH' ) + INTERVAL '1' MONTH - INTERVAL '1' DAY ) < EXTRACT( DAY FROM TRUNC(CURRENT_DATE) ) THEN TRUNC(CURRENT_DATE) - NUMTODSINTERVAL( EXTRACT( DAY FROM TRUNC(CURRENT_DATE) ), 'DAY' ) + INTERVAL '1' DAY + NUMTOYMINTERVAL( -6, 'MONTH' ) + INTERVAL '1' MONTH - INTERVAL '1' DAY ELSE TRUNC(CURRENT_DATE) + NUMTOYMINTERVAL( -6, 'MONTH' ) END
------------------------------
Ramanujam Rajagopal
------------------------------
Original Message:
Sent: Thu November 18, 2021 03:29 AM
From: Philipp Hornung
Subject: Managing Multiple Cognos Environments
:-D Ramanujam, How did you communicate that you delete unused stuff after six months?
------------------------------
Philipp Hornung
Original Message:
Sent: Wed November 17, 2021 09:46 AM
From: Ramanujam Rajagopal
Subject: Managing Multiple Cognos Environments
Users always compare the other BI tools; So, we allow excel sheets to create a dataset in a test and QA environment. We recommend moving to the FM model if it is an extensive dataset or updating every day or once a week. Users love to use the small dataset for their data requirements. We move the small dataset reports to production and monitor for six months. If they dont use it, we will purge these reports and datasets.
Thanks,
Ram
------------------------------
Ramanujam Rajagopal
Original Message:
Sent: Wed November 17, 2021 08:38 AM
From: Andrew Newell
Subject: Managing Multiple Cognos Environments
Ha! Great post. Once our users saw what they could do the horse was out of the barn and long gone. We have some IT generated datasets and file uploads that go through the traditional dev, test, prod protocol. User generated datasets have exploded and quickly overran the capacity of IT change control. But the intent is to circumvent IT change control. Much of Cognos Analytics work doesn't fit nicely into the dev, test, prod framework because analytics is about learning and that typically involves much try and fail before eventually succeeding.
We have reached something of a compromise and users do most of their dataset work in the test environment and then submit a change request to move to production. We don't keep the dev environment in sync with test for users generated data sets.
------------------------------
Andrew Newell
Original Message:
Sent: Tue November 16, 2021 07:22 PM
From: Chris Adams
Subject: Managing Multiple Cognos Environments
Hi there Community,
I'm really interested to hear how you're managing you multi environment Cognos setups.
Cognos has progressed rapidly over the years, becoming much more self service orientated, IMO making it more and more difficult to have the traditional dev, test and prod environments, Back in the day when I worked for the big banks in London, we had a very rigorous development and prod promotion regime. However, these days, in order for Cognos to play catchup with the competitors, IBM have introduced more and more features enabling users to upload their own data, create datasets and pretty much do their own modeling.
I'm keen to understand how you're managing keeping you separate environments in sync and controlling what's published in prod
Cheers....
------------------------------
Chris Adams
------------------------------
#CognosAnalyticswithWatson