Planning Analytics

Planning Analytics

Get AI-infused integrated business planning

 View Only
Expand all | Collapse all

REST - FilterableProperties on TransactionLogEntries

  • 1.  REST - FilterableProperties on TransactionLogEntries

    Posted Mon January 06, 2020 05:07 PM
    Hello TM1 Team,

    we just noticed, that on the latest TM1 release (11.5.00000.23) the TransactionLogEntries EntitySet is not filterbale by user.
    It would be very useful though, if it was filterable by user.

    Do you guys plan to include this feature in a future release ?

    Cheers,

    Marius

    ------------------------------
    Marius Wirtz
    ------------------------------

    #PlanningAnalyticswithWatson


  • 2.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Tue January 07, 2020 04:47 AM
    Hi Marius, can you elaborate a bit as to what it is that is lacking here?

    I'm sensing you might have expected the User property to actually be a NavigationProperty and as such of EntityType User? If that's the case it is indeed not, it is merely a string representing the name of the user at the time the log entry was created.

    As such an admin could grab the transaction log entries created while I was logged in as in:

    http://tm1server:12345/api/v1/TransactionLogEntries?$filter=User%20eq%20'Hubert'


    ------------------------------
    Hubert Heijkers
    ------------------------------



  • 3.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Tue January 07, 2020 04:10 PM
    Hello Hubert, 

    You are absolutely right. In version 11.5 and 11.6 I can indeed filter the logs by user.
    I just got irritated when I found this (User is not explicitly listed as a filterable property) in the $metadata document :

    <EntitySet Name="TransactionLogEntries" EntityType="tm1.TransactionLogEntry">
    <Annotation Term="Capabilities.ChangeTracking">
    <Record>
    <PropertyValue Property="FilterableProperties">
    <Collection>
    <PropertyPath>ChangeSetID</PropertyPath>
    <PropertyPath>TimeStamp</PropertyPath>
    <PropertyPath>ReplicationTime</PropertyPath>
    <PropertyPath>Cube</PropertyPath>
    <PropertyPath>Tuple</PropertyPath>
    <PropertyPath>OldValue</PropertyPath>
    <PropertyPath>NewValue</PropertyPath>
    <PropertyPath>StatusMessage</PropertyPath>
    </Collection>
    </PropertyValue>

    Thank you

    Marius

    ------------------------------
    Marius Wirtz
    ------------------------------



  • 4.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Wed January 08, 2020 03:55 AM
    Ah, that's what you meant, hadn't noticed, that's indeed incorrect, I'll have that added to the metadata shortly.

    ------------------------------
    Hubert Heijkers
    ------------------------------



  • 5.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Wed January 08, 2020 12:10 PM
    Edited by System Admin Fri January 20, 2023 04:12 PM
    Is there a way to allow non admin users to query the transaction log? If not could it be added to the user capability controls? We would like to expose the log in a a new UI we are building.

    ------------------------------
    Ryan Clapp
    ------------------------------



  • 6.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Wed January 08, 2020 02:24 PM
    Hi Ryan,

    Interesting question...Not currently possible and it's not on our roadmap.   Why do users need to see transactions?  Is it transactions for all users or just the data changes made by the user running the query?

    I think we do want to look into storing transactions in proper database at some point in the distant (or maybe not so distant) future.  We might look at security for transactions at that point.  We won't plan any changes in security in this area in the current version of TM1 Server.

    ------------------------------
    Stuart King
    IBM Planning Analytics Offering Manager
    ------------------------------



  • 7.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Wed January 08, 2020 03:03 PM

    Today we extract transactions, push them into a database, and then expose them via drill through. There is an inherent time lag due to the length of the processing. In our UI we want users to be able to right click on a data point, cell in a view, and select an option to "Show all Changes".






  • 8.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Thu January 09, 2020 02:59 AM
    Ryan, if you hadn't told us that you were putting them already in a database I'd have suggested you should;-)

    Things being as they are (TM1Server v11 and before) queries against the transaction log are contentious (effectively block any other commits). The occasional brief query doesn't hurt as (hence: why I did a special implementation for deltas) but longer running queries could, especially with larger transaction logs, seriously impact the system.

    We contemplated at some point to allow users to see their own transactions (like we do in the REST API for the threads/sessions) but shed away from doing so for the exact same reason, not wanting to invite clever people to add contention to the most contentious resource we have.

    So, for now, I'd indeed put it in a separate database and, if I was writing my own client, I wouldn't even use TM1's drill through as the middle man but directly go to that database to retrieve the transactions I'd be looking for. Any reason why you wouldn't?

    Now the 'good' news perhaps is that in the next major version of TM1 server we already have these transactions in a database (part of the high availability work we've been working on for a while). We have not finalized any new APIs for that version, might not need any, but at least we'll have tackled the contention issues plus the performance presumably would be way better than ploughing through old fashion text files;-).


    ------------------------------
    Hubert Heijkers
    ------------------------------



  • 9.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Thu January 09, 2020 08:00 AM
    @Hubert Heijkers  Thanks for the detailed response!

    ------------------------------
    Stuart King
    IBM Planning Analytics Offering Manager
    ------------------------------



  • 10.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Thu March 12, 2026 10:36 AM

    "Things being as they are (TM1Server v11 and before) queries against the transaction log are contentious (effectively block any other commits). The occasional brief query doesn't hurt as (hence: why I did a special implementation for deltas) but longer running queries could, especially with larger transaction logs, seriously impact the system."
    Apologies for following up a 6 year old post - and please advise if this no longer applies.
    I have been doing some work with the Rest API transaction log functionality using TM1Py (2.0.3), with PAoC 11.8.02800.9. The client keeps three month's worth of transactions. They want to capture user changes to four specific mapping cubes.
    I started out issuing four calls specifying cube and date range. This worked well on Dev but migrating to prod with the larger volumes became slow - 6 minutes per call.
    I rethought the approach and changed to a single call for all transactions in a date range, then filtering the results in Python. This works much better, taking 3 minutes. It does of course use more memory in python but not an unreasonable amount - 5 gig for a month.
    Can you comment on the difference?
    The other test I carried out was to write values to a cube via PAW workbench while the call was running. I found that this updated without issues.
    Can you comment on this?



    ------------------------------
    David Usherwood
    ------------------------------



  • 11.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Thu March 12, 2026 06:14 PM

    Hi David,

    This is a fairly common challenge when querying large TM1 transaction logs via REST API. Once the log volume grows, longer date-range queries can become slow and resource-intensive.

    A common approach is to store the logs in an external system optimized for search and analytics.

    This is exactly what we implemented in SPACE. It continuously collects TM1 transaction logs and provides fast search and filtering by cube, user, elements, and time range without impacting the TM1 server and it is designed to scale to billions of records while maintaining very fast search performance. It also allows non-admin users to access transaction history with granular visibility controls. Since SPACE is integrated directly into Planning Analytics Workspace, users can explore the logs without leaving PAW.



    ------------------------------
    Vlad Didenko
    Founder at Succeedium
    TeamOne Google Sheets add-on for IBM Planning Analytics / TM1
    https://succeedium.com/teamone/
    Succeedium Planning Analytics Cloud Extension
    https://succeedium.com/space/
    ------------------------------



  • 12.  RE: REST - FilterableProperties on TransactionLogEntries

    Posted Fri March 13, 2026 04:48 AM

    Hi David,

    Wow, 6 years already, and yes my comment wrt queries against transaction log being contentious is most definitely still true, nothing changed in that regard, nothing will. What did change however is that I introduced an query execution optimization when filtering, most notably when filtering based on time ranges, but sounds like you are not doing that.

    Long story short, you shouldn't query transaction logs over and over again if you can prevent it. Trailing the transaction log, using delta pulls, and storing the transaction in either a database or something even more specific for log management like the Elastic Stack, would be the way to go IMHO (and which is what @Vlad Didenko is talking about as well whilst taking it a step further and give you a nice, integrated, UI on top of that). 

    This tracking/trailing of the log is also what I've shown in my tm1-log-tracker utility already back in 2017 (https://github.com/Hubert-Heijkers/tm1-log-tracker) a pattern later used for the so called, customer inspired, 'blackhawk pattern' to replay/apply those transactions immediately on a secondary TM1 server (https://github.com/Hubert-Heijkers/tm1-blackhawk). The trailing of the transaction log remains the same, it is just for you to fill in the blanks and where to send the data and in which form.

    Good news ahead though, in v12 you can simply subscribe to the transaction log and we'll happily push transaction to any URL you provide us it while they happen (without impacting performance of the TM1 database in question), you might have seen me demonstrate this using Elastic.



    ------------------------------
    Hubert Heijkers
    STSM, Program Director TM1 Functional Database Technology and OData Evangelist
    ------------------------------