We have a TI process that loads data from a flat file to a cube, then executes another process to load the new cube data to a different cube.
When executing the process via Server Explorer, everything happens as expected. We have a Canvas app that includes a function to execute this same TI process. It was working fine until a couple of months ago when it started behaving strangely.
The TI process executes via Canvas, updating log files, generating error files (part of the process), but we have found that it doesn’t actually register any objects on TM1 or commit any data to cubes.
For example, I changed the TI process so it didn’t delete the temporary objects for a cube view that is used as a datasource for the follow on TI process. When executing the main process via Server Explorer, the temporary view is created and remains as expected. When executing via Canvas, however, it runs, even apparently loads data, but the view is never created.
I have eliminated every possible option I can think of, even ruling out security as the issue is there for admin users. I am completely stumped as what it’s doing seems impossible! Any suggestions?
From a Canvas point of view, there is not much from here as it just calls the process via the REST API. This also means that once it reaches TM1, it can only wait from TM1’s response.
About the TM1 behaviour, can you help further clarify the part that it is not committing any data?
What do you mean by:
So when you say even apparently loads data, do you mean the TI process was processing these data into your staging cube but just not loading into the second cube?
What I meant was that TM1 goes through all the motions as if it’s processing data, both in the staging cube and then the second cube, even generating log file messages and error log files (some invalid data exists and this is ok). However, no data of any description is created - no views and subsets in prolog, no new elements in metadata, and no data written to the cubes.
Why would the process API call be behaving like this, when executing the TI process directly via Perspectives works fine?
What version exactly of PA are you using? 2.0.x What is “x”?
This sounds very much like the TI process is being executed with the now more or less depreciated ProcessExecute e.g. Processes('YourProessName')/tm1.Execute
There is a bug in ProcessExecute (IBM may claim it as a “feature”) which is a difference in behaviour to the old API where even if the process encounters just minor errors or a ProcessBreak it won’t commit and will rollback all changes.
There’s a new function ExecuteWithReturn which was introduced in 11.3 (2.0.5) Processes('YourProessName')/tm1.ExecuteWithReturn
Assuming you’re on at least 11.3 this is the call you should be using to run any TI processes.
And in addition to what @cw-ch-scott has shared: Canvas will handle the TI calls to switch to using ExecuteWithReturn for you automatically from version 2.0.5 onwards should this be the case.
Just to be precise, you will need at least 2.0.5 IF3 for this REST API function to work, there is a known issue in its initial implementation in 2.0.5, please see here: https://forum.cubewise.com/t/tm1-11-3-pa-2-0-5/1736