Product:
Planning Analytic in containers (v12)

Issue:

Can i write to a file share from a Tm1 TI process?

Solution:

No, you can not use the old TI command ASCIIOUTPUT

The solution, i guess. is that you need to have a external script (tm1py) that get the data to file by doing HTTP REST API calls to the Planning Analytics installation.

https://github.com/cubewise-code/tm1py

This command only access the tm1 instance data folder in v12 of Planning Analytics.

TurboIntegrator function changes

The following TurboIntegrator file functions now work only with files in the database content directory or its child directories:

  • AsciiDelete
  • AsciiOutput
  • AsciiOutputOpen
  • FileExists
  • SetOutputEscapeDoubleQuote
  • TextOutput
  • WildcardFileSearch

 

Going from v11 to v12, you have to rewrite code that access the file system.

How to do things in the new version of Tm1 is mostly found in the community……

https://community.ibm.com/community/user/businessanalytics/discussion/planning-analytics-engine-drill-through-to-asciioutput-file

https://community.ibm.com/community/user/businessanalytics/blogs/edward-stuart/2023/10/13/executehttp?CommunityKey=8fde0600-e22b-4178-acf5-bf4eda43146b&Tab=groupdetails

More Information:

https://www.linkedin.com/pulse/developers-perspective-navigating-transition-tm1-v12-shane-bethea-2fwke

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=engine-changed-features-components-in-planning-analytics

Planning Analytics Engine (v12) does not support the C, Java, .Net, and all internal and experimental versions of the REST API. Only the OData compliant REST API is supported for interaction with the Planning Analytics Engine database.

Because older APIs are no longer supported, clients such as Architect and Perspective, do not work with Planning Analytics Engine.

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=engine-deprecated-features-components-in-planning-analytics

The following TurboIntegrator functions are not supported in Planning Analytics v12 Engine:

AddInfoCubeRestriction
AllowExternalRequests
AssignClientPassword
AssociateCAMIDToGroup
BatchCellIncrement
BatchUpdateFinish
BatchUpdateFinishWait
BatchUpdateStart
CGAddPromptValues
CGPromptGetNextMember
CGPromptSize
CreateHierarchyByAttribute
CubeDataReservationAcquire
CubeDataReservationGet
CubeDataReservationGetConflicts
CubeDataReservationRelease
CubeDataReservationReleaseAll
CubeGetLogChanges
CubeSaveData
CubeSetConnParams
CubeSetLogChanges
DisableBulkLoadMode
EnableBatchCellIncrement
EnableBulkLoadMode
ExecuteJavaN
ExecuteJavaS
LockOff LockOn
RefreshMDXHierarchy
RemoveCAMIDAssociation
RemoveCAMIDAssociationFromGroup
SaveDataAll ServerShutdown
SetChoreVerboseMessages
SetOdbcUnicodeInterface
SwapAliasWithPrincipalName

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=attf-asciioutput-1

https://www.ibm.com/support/pages/ibm-planning-analytics-20-fix-lists#anchor5

Example of write to PAL using TM1PY

https://gist.github.com/MariusWirtz/751c153a568d0f029c65f701fc6c03c8

https://succeedium.com/teamone/features.html

Product:
Planning Analytics 2.0.9.x
Microsoft Windows 2019 server

Issue:
Can i prevent user from change the transaction log files?

Solution:
That is the default – tm1 admin and users can not change the transactions log file from inside Planning Analytics (Tm1 architect).

You must have direct access to the TM1 server and the logg folder, and you can only change the file when the TM1 instance is stopped.

If you do not allow people access to the windows server disk – then the files can not be tampered with.

The transactions log can be read and search from inside TM1 architect, or PAW.

The following information is recorded in the tm1s.log file:

Date and time the change was made
Name of the client who made the change
Whether the new data is simple data (N) or string data (S)
Value before the change
Value after the change
Name of the cube in which the change was made
Elements that identify the cell that changed

More Information:

  • Transaction logging can be enabled and disabled for specific cubes by setting the LOGGING column in the }CubeProperties cube. Transaction logging is typically needed on cube transactions only during period of manual user data entry. For more information, see Enabling and disabling transaction logging.
  • The current transaction log file is named tm1s.log. The tm1s.log file is locked by the TM1 database and cannot be viewed or edited with a text editor. The current transaction log file is renamed to tm1s<timestamp>.log during a SaveDataAll (SaveDataAll happens automatically on shutdown or restart). An empty tm1s.log file is generated when the TM1 database starts and during a SaveDataAll without a database restart. For more information, see SaveDataAll.
  • The tm1s timestamped files, can be moved to other storage area for secure storage, if they are needed for later analysis.
  • If the server is intentionally shut down without saving the changes, the log file is saved with a timestamp and the extension is changed to .rej. You can process the tm1s<timestamp>.log file through TurboIntegrator to recover the transactions.
  • During an improper server shutdown, the tm1s.log remains as is and is not timestamped during shutdown. When the server restarts, it recognizes the presence of an old tm1s.log file and prompts you to choose between recovering the new log from the old existing log.
  • By default, TM1 logs transactions to all cubes loaded on the server. As the system administrator, you have the option to turn off logging for particular cubes. When you disable logging, TM1 accelerates updating the data but you cannot recover the updates in the event of a system failure.

 

https://exploringtm1.com/using-tm1-log-files/ 

The transactions log – IBM Documentation

Product:
Planning Analytics 2.0.9.19 TM1
Microsoft Windows 2019 Server

Issue:

When user browse to the tm1web they get a error – random in different web-browsers e.g. chrome and edge.

Error msg:

This site can’t provide a secure connection
tm1sebservername.domain.com sent an invalid response.
Try running Windows Network Diagnostics.
ERR_SSL_PROTOCOL_ERROR

Solution:

Check the URL you use – it need to start with HTTP:// if you do not have a certificate on your TM1WEB service.

If you by accident enter;

https://servername.domain.com:9511/tm1web/

you get above error.

You need to enter

http://servername.domain.com:9511/tm1web/

 

More Information:

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=itw-configure-ssl-planning-analytics-tm1-webspreadsheet-services-existing-keystore 

https://www.ibm.com/support/pages/planning-analytics-ssl-configuration-tm1web-or-any-web-tier-components-does-not-work-expected

https://www.ibm.com/docs/en/SSD29G_2.0.0/com.ibm.swg.ba.cognos.tm1_ug.2.0.0.doc/tm1_ug.pdf

 

Product:

Planning Analytics 2.0.9.19 Tm1 Perspective

Microsoft® Excel® for Microsoft 365 MSO 64 Bit

Issue:

How add TM1 Perspectiv to always be started with Excel?

Solution:

After you have installed TM1 Perspective from tm1client_winx64h_2.0.919.10_ml.tar

Start Excel

Go to file – options

Click on Add-ins

Click GO at Manage Excel add-ins

Click Browse

Go find the file C:\Program Files\IBM\cognos\tm1_64\bin64\tm1p.xla

Click OK.

Now it should look like above.

Press OK.

Close Excel.

 

More Information:

https://www.ibm.com/docs/en/cognos-tm1/10.2.2?topic=ctcdti-installing-cognos-tm1-perspectives

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=configuration-installing-configuring-planning-analytics-microsoft-excel 

https://exploringtm1.com/how-to-upgrade-install-planning-analytics-for-excel-pax/

Product:
Planning Analytics 2.0.9
Microsoft Windows 2019 server

Issue:

How read in the dimension elements and hierarchy from a text file?

Solution:

Create a csv file where you have on every row one element, and all its sub-elements before it.

In our example we have a 4 sub-element deep dimension.

You have to use your name of the elements in the dimension.

Create a new TM1 TI process, that take parameters for the dimension to update and where the file is located.

Pick up the file in Data Source tab, and setup the variables as “other”.

Variable names could be of that kind that it is easy to understand what they show.

Create a proplog code to get the dimension or the path from a cube if the parameters is blank:


sSubset = '$.'|getProcessName();

# if parameter is blank - get value from sys cube
IF ( LONG (pDim) <= 0 );

# get the values from sys settings cube
pDim = cellgets('sys.Settings','DimtoUpdate','Value');
pPath = cellgets('sys.Settings','FiletoImport','Value');

ENDIF;

# set the values from parameters
sDim = pDim ;
DataSourceNameForServer = pPath ;
DataSourceNameForClient = pPath ;

# set the format of the file
DatasourceASCIIQuoteCharacter = '';
DatasourceASCIIDelimiter = ';'; 

 

Create in metadata section, that insert the elements into the dimension:

DIMENSIONELEMENTINSERT( pDim ,'',V1,'c');
DIMENSIONELEMENTINSERT( pDim ,'',V2,'c');
DIMENSIONELEMENTINSERT( pDim ,'',V3,'c');
DIMENSIONELEMENTCOMPONENTADD( pDim ,V1,V2,1.000000);
DIMENSIONELEMENTCOMPONENTADD( pDim ,V2,V3,1.000000);
DIMENSIONELEMENTCOMPONENTADD( pDim ,V3,V4,1.000000);

 

There is more ways to do this – but this is maybe the simplest way.

More Information:

https://www.wimgielis.com/tm1_tm1_EN.htm 

https://quebit.com/askquebit/using-turbo-integrator-to-build-dimension-hierarchy-in-planning-analytics/ 

https://vrgultom.wordpress.com/2013/08/13/updating-attribute/ 

https://intellipaat.com/blog/tutorial/cognos-tm1/dimensions-and-cubes/ 

https://www.bihints.com/dimensions_updates_mapping 

Catalogue your dimension creation processes in Cognos TM1

https://tm1up.com/3-dimensions-in-tm1.html 

 

Product:
Planning Analytics 2.0.9.19
Microsoft Windows 2019 server

Issue:

Do you have a checklist to help out with the upgrade/installation of Planning Analytics?

Solution:

Best is if you create a checklist that cover the needs of your environment, but here is a suggested to be used as a starting point.

Download from here: https://www.ibm.com/support/pages/ibm-planning-analytics-local-20919-now-available-download-fix-central-0 

Detail upgrade instruction here: https://www.ibm.com/docs/bg/planning-analytics/2.0.0?topic=configuration-upgrading-planning-analytics-local 

 

Action Date
Copy the media to local hard disk on server d:\install
Export configuration from cognos configuration to backup folder d:\temp\backup
Backup samples folder D:\Program Files\ibm\cognos\tm1_64\samples\tm1
Backup the tm1web_config.xml for TM1WEB from:

D:\Program Files\ibm\cognos\tm1web\webapps\tm1web\WEB-INF\configuration

Backup server.xml and jvm.options and bootstrap.properties files from folder:

D:\Program Files\ibm\cognos\tm1web\wlp\usr\servers\tm1web

Backup of your PAA Agent bootstrap.properties file in folder:

D:\Program Files\ibm\cognos\tm1_64\paa_agent\wlp\usr\servers\kate-agent

Export the TM1 applications as a backup – the data is saved in the TM1 data folder.

  1. Open the TM1 Cognos Applications portal.
  2. Click the Export Application icon under the Actions column.
  3. From the File Download dialog box, click Save.
  4. Navigate to the directory to where you want to save the export file.
  5. Click Save.
Backup home.jsp in folder D:\Program Files\ibm\cognos\tm1web\webapps\tm1web
Backup CommonMessages.js in folder D:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\common\nls\sv
Backup Tm1WebAppCam.js in folder D:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\standalone
Backup pa_header.svg file in D:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\themes\carbon\standalone\images\login
If HTTPS is used, backup all certificate stores
Ensure that anti-virus or Windows Defender SmartScreen is turned off on the server during installation
Uninstall Planning Analytics Performance modeler from the windows server before you install the upgrade of TM1
Check that firewall ports between servers are open

https://cogknowhow.tm1.dk/archives/4147

https://www.ibm.com/support/pages/client-shows-list-tm1-servers-cannot-connect-any-them

Port 25, 80, 9300, 9362, 1433, 389 etc for BI. Port 5495, 5498, 5895, 5898, 8888,9510,9511,9012, 12345, 12346 , 12366 etc for PAL
Stop all related IBM Cognos TM1 and IBM Planning Analytics services and set to MANUAL
Reboot Microsoft Windows server
Install PAL from file tm1_winx64h_2.0.919.10_ml.tar (run as administrator)
Install TM1WEB from file tm1web-11.0.93-24020517-winx64h_bundle
Go into cognos configuration and click save
Reboot the Windows server
Modifications are required when FIPSOperationMode set to 1 (Basic)

— Remove or deprioritise TLS RSA CipherSuites

— TLS V1.2 or higher must be enabled

— EDCHE CipherSuites must also be enabled

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=pa2f82-change-default-value-fipsoperationmode-in-tm1scfg-cogstartupxml 

Restore configuration files that were backed up before
Start the IBM planning services  (start CA11 if needed)
Check that you can login to TM1 Architect
Check that you can login to TM1WEB
Set all related IBM Cognos TM1 and IBM Planning Analytics services to AUTOMATIC start
Reboot windows server
Check that you can run Cognos Analytics reports against the upgrade TM1 cubes

 

In older versions, this was also needed to be done:

Planning Analytics often uses Cognos Analytics for authentication. If CAM security is used and an SSL certificate has been enabled in Cognos, then we need to add the certificate from Cognos Analytics into Planning Analytics. This post explains the steps required to integrate Cognos Security with SSL for Planning Analytics LocalTM1Web (Planning Analytics Spreadsheet Services) and Planning Analytics Workspace.

https://exploringtm1.com/configure-planning-analytics-to-recognise-cognos-ssl-certificate/
https://exploringtm1.com/cognos-analytics-configure-ssl-certificate/

https://www.sempreanalytics.com/blog/increasing-reporting-capabilities-from-planning-analytics-using-cognos-analytics/
Extract from above websites:
Navigate to the Planning Analytics server and to the directory < PA install location> \bin64\ssl and copy the ibmtm1.arm file to the Cognos Analytics server. You can copy the file anywhere, but I recommend creating a directory for it in the installation location.
In order to import this certificate we use an executable on the Cognos Analytics server called ikeyman.exe which resides in the <CA install location> \ibm-jre\jre\bin directory. Simply double click this file to open it.
Click the Open icon on the toolbar, ensure the Key Database type is set to JKS, navigate to the directory <CA Install Location> \ibm-jre\jre\lib\security, and open the file called cacerts.
Now you have loaded the certificate file it’s time to import the Planning Analytics certificate. Under the ‘key database content’ section change the drop-down value to ‘Signer Certificates’ and press the ‘Add’ button….

 

 

Planning Analytic Workspace upgrade Date
Copy the media to the server d:\install
Unzip the file ipa_workspace_win_2019_2.0.92.156.zip
Check free disk space on the PAW windows server
Rename folder to PAW92 and place it at root
Exclude new folder d:\paw92 from anti-virus scanning
Copy the <paw_install_location>/config/paw.ps1 file from your current installation to the new installation location
Copy the <paw_install_location>/config/certs directory from your current installation to the new installation location.
If you configured SSL, copy the <paw_install_location>/config/ssl directory from your current installation to the new installation location.
Take screen capture of the configuration today in PAW administration – any existing errors will not be solved by upgrade.
Take a backup
Stop the docker containers Paw.ps1 stop
Check that no running dockers containers Docker ps
Go to the new folder
Run installation ./start.ps1 Start.ps1
Check that admin settings are correct
Check you can login to PAW website
Stop the docker containers Paw.ps1 stop
Reboot windows server, this to ensure the system will work after a reboot.
Check you can login after 30 min
Download the new kate agent  https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=idt-install-configure-planning-analytics-administration-agent-local-only
Unzip to a temp folder
To update the Planning Analytics Administration agent Windows service, run UpdatePAAAgent.bat, passing in the full path to <PA_install_location>, that is, the parent of the paa_agent directory.
Check that bootstrap.properties contain the settings for smtp email as before
Running the /clean.ps1 script removes images for the release in which it is run. Run from old folder e.g. d:\paw90
Check free disk space

 

 

More information:

https://www.ibm.com/support/pages/ibm-planning-analytics-20-fix-lists

https://code.cubewise.com/blog/determine-the-version-of-ibm-planning-analytics/ 

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=features-whats-new-in-planning-analytics 

https://exploringtm1.com/planning-analytics-version-management/ 

Due to a security update included in Planning Analytics 2.0.9.19, customers who have the non-default FIPSOperationMode=1 set in their Tm1s.cfg should remove or deprioritize the TLS RSA CipherSuites for a successful handshake to occur. This includes all CipherSuites that are prefixed with TLS_RSA_. This also means that TLS V1.2 or later must be enabled, as TLS 1.1 and prior do not support alternatives. In the case of TLS V1.2, the ECDHE CipherSuites must also be enabled.

https://www.ibm.com/support/pages/whats-coming-next-ibm-planning-analytics-2093-sc

https://www.ibm.com/support/pages/troubleshooting-tm1bi-data-source-connections

https://exploringtm1.com/forcing-cognos-bi-use-native-tm1-engine/

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=itw-configure-ssl-planning-analytics-tm1-webspreadsheet-services-existing-keystore 

https://www.ibm.com/support/pages/how-configure-ibm-planning-analytics-spreadsheet-service-custom-ssl-using-existing-keystore 

https://www.ibm.com/support/pages/how-configure-ssl-planning-analytics-web-tier-using-gskit-using-existing-signed-certificate

Product:
Planning Analytics 2.0.9.19 TM1 Perspective

Microsoft® Excel® for Microsoft 365 MSO (Version 2308 Build 16.0.16731.20542) 64-bit

Issue:

After installing a new TM1 Perspective, you get a message when you start excel:

Microsoft Office has identified a potential security concern. The digital signature is valid, but the signature is from a publisher whom you have not yet chosen to trust.

Solution:

Press “Trust all from Publisher” and TM1 perspective will work in your excel installation.

 

More information:

https://www.ibm.com/support/pages/opening-tm1-perspectives-generates-digital-signature-message

 

Product:
Planning Analytics 2.0.9.18
Microsoft Windows 2019 server

Issue:
In a TI process check that the parameter is not empty?

Solution:

If the parameter is pFirst then enter code like this in prolog:

IF ( ~( pFirst @= '' ) ) ;

    ProcessQuit ;
ENDIF;

ProcessQuit will stop the process totally,  itemreject will go to the next tab and process that – if run from prolog. In MetaData and Data tab the itemreject will act different.

# sErrorMessage = ‘The ‘ | pFirst | ‘ is not empty’;
# ItemReject ( sErrorMessage );

More Information:

 https://www.tm1forum.com/viewtopic.php?t=8074

https://exploringtm1.com/operators-tm1-ti-if-statements/ 

https://exploringtm1.com/operators-tm1-rule-statements/

https://www.wimgielis.com/tm1_ifstructures_EN.htm 

https://exploringtm1.com/itemreject-tm1-function-syntax-use/

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=pctf-itemreject 

Product:

Planning Analytics Workspace version 88

Issue:

How add or change text to the front page?

Solution:

Login to PAW and go to administration.

Click on customization.

Click on themes.

Select system default and click download at the right.

sample-theme.zip should you save in a empty folder.

Unzip sample-theme.zip to a folder sample-theme.

Rename folder sample-theme to DEV-theme.

Go into folder, and open file spec.json in notepad++

Edit the text, to something like this

“name”: “DEV-theme”,
“brandText”:”DEVELOPMENT”,

Change the path in “brandIcon”: “DEV-theme/images/brand.svg”, to be the same as your folder name.

Change any color values – like “appbarBackground”:”#66a3ff”,

Save the file.

In file manager, use 7zip, to zip the folder to a new file:  DEV-theme.zip

Go back to PAW Admin page in your browser.

Click on ADD, and upload you new theme.

Select the new theme, and click Active on the right.

The SVG files can be edit with inkscape https://inkscape.org/ 

More Information:

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=company-create-custom-theme 

https://quebit.com/askquebit/designing-highly-customized-dashboards-in-ibm-planning-analytics/ 

 explanation
JSON key name
Definition
name The name for the theme. This name is displayed on the Themes tab of the Excel and Customizations page in Planning Analytics Workspace Administration. You cannot use the name System default, which is reserved for the system default theme.
brandText The branding text to display on the Planning Analytics Workspace home page.
brandIcon The branding image to display on the Planning Analytics Workspace home page. This image is displayed immediately prior and near the brandText.
favicon Not currently supported.
uiShellTheme Determines the appearance of items in the Home menu Home menu. Specify either light (carbon 10) or dark(carbon 100) background.
appbarBackground Application bar background color. This color is applied to the entire application bar, both clickable and non-clickable regions.
appbarForeground Application bar foreground color. This color is applied to text and icons on the application bar.This setting is not applied to the Switcher widget on the application bar. The Switcher displays a list of open items. The text of the Switcher always appears White.
appbarSelectLine Application bar selection line color. This color is applied to the border that surrounds a selected or clicked item on the application bar.
appbarPushButtonBackground Application bar push-button background color. This color is displayed when you hover or click an item on the application bar.
navbarBackground Navigation bar background color. This color is applied to the entire navigation bar, both clickable and non-clickable regions.
navbarForeground Navigation bar foreground color. This color is applied to text and icons on the navigation bar.
navbarSelectLine Navigation bar selection line color. This color is applied to the bar that appears on a selected navigation bar item.
navbarPushButtonBackground Navigation bar push-button background color. This background color is displayed when you click on an item on the application bar.
personalMenuBackground Specifies the background color of the Personal menu icon User icon.Specify inherit to inherit the navbarBackground and navbarPushButtonBackground colors.

See Application of theme keys in Planning Analytics Workspace for a graphical depiction of the application of theme keys in the user interface.

https://convertingcolors.com/hex-color-66A3FF.html 

Product:
Planning Analytics 2.0.9.13 TM1_version=TM1-AW64-ML-RTM-11.0.913.10-0

Microsoft Windows 2019 server

Problem:
How do i give a message to Tm1Web users that they will always see?

Solution:

Edit the CommonMessages.js file and the home.jsp files in Notepad++.

The first is the name of the tab in the web browser – here you can add text, like 1984 in our example by edit the file home.jsp in folder C:\Program Files\ibm\cognos\tm1web\webapps\tm1web. Change the row 47 to the text you want:

<title>IBM Cognos TM1 Web 1984</title>

Save the file and refresh your web browser to see the change.

The second value is in a different folder for each language. The language setting in your web browser will tell what text you will show.

Go to folder C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\common\nls\sv for Swedish language.

Edit the 378 or 379 row in file CommonMessages.js to your message text:

OFFERING_NAME:"Cognos® TM1® Web (please use chrome)",

Save the file and refresh the web browser. If you do not see the text, go into the settings and change the language for the web browser.

For English language, you may need to edit in the Tm1WebAppCam.js file, direct in folder C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\standalone. Search for the word cognos to find where you can edit the file.

 

Third, you may want that the users of TM1WEB should not see the cubes views at all. This is done by a change in the tm1web_config.xml file in folder

C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\WEB-INF\configuration.  Edit the line 25 to this:

<add key="NavTreeDisplayServerView" value="N" />

Save the file and restart the service “IBM Planning Analytics Spreadsheet Services”.

To change the background picture in TM1WEB you may need to edit the file C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\themes\carbon\standalone\images\login\PA_Header.svg.

These changes is not supported by IBM.

More information:

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=ctwsas-displaying-hiding-views-node-in-navigation-pane

https://www.w3schools.com/html/html_css.asp

https://www.toptal.com/designers/htmlarrows/

https://www.iso.org/obp/ui/#search

https://www.w3schools.com/charsets/ref_html_entities_4.asp

https://www.iso.org/obp/ui/#iso:pub:PUB500001:en

https://developer.mozilla.org/en-US/docs/Learn/CSS/First_steps/How_CSS_is_structured

https://cubewisecode.squarespace.com/blog?offset=1528787669586

https://www.tm1forum.com/viewtopic.php?t=426