Planning Analytics

Planning Analytics

Get AI-infused integrated business planning

 View Only
Expand all | Collapse all

Git Integration With PAW

  • 1.  Git Integration With PAW

    Posted 04/02/26 06:15 PM

    Hi All,

    We have successfully integrated GitHub with PAW and are able to use its capabilities. However, we are facing an issue while pushing objects to an existing branch.

    When pushing to a new branch, everything works as expected-the selected objects are pushed correctly. However, when pushing to an existing branch, the previously existing objects in that branch are getting replaced. Ideally, it should only update the modified objects or add new ones, without removing the existing files.

    This limitation is restricting us from fully utilizing this capability.

    To explain with an example:
    If an existing branch contains 10 TI processes, and I update only 2 TIs in TM1, pushing these changes should update only those 2 files while retaining all 10 files in the branch. However, currently, the branch ends up containing only those 2 files, replacing the original 10 files.

    Please let me know if anyone has insights into this issue or has encountered a similar situation.

    Thanks,
    Ajit Kumar



    ------------------------------
    Ajit Kumar
    ------------------------------


  • 2.  RE: Git Integration With PAW

    Posted 04/06/26 10:28 AM

    Hi Ajit,

    You are correct.

    You can either push all to keep everything in Git but you cannot select some of changes in given objects.

    Any changes to any objects would be pushed, or push selected objects but the rest won't be in Git.

    We have plans to implement selective push later this year.

    Best regards,



    ------------------------------
    Svetlana Pestsova
    IBM Planning Analytics Product Manager
    ------------------------------



  • 3.  RE: Git Integration With PAW

    Posted 04/07/26 03:57 AM

    Hi Ajit, Svetlana,

    Allow me to intervene here briefly, the problem is actually that PAW's so called 'GIT integration' is not really sharing the vision of GIT integration for which it was build into TM1. Instead it is focused on object movement and rather treats GIT as a fancy backup location from which you can restore/pull somewhere else again.

    That said the 'selective push' the TM1 team is looking to implement won't really help you either here, that would presumably intersect what you select in PAW with what you picked you'd want to push to begin with and at best make the number of files in GIT only smaller, yet still remove the other files if the fundamental disconnect isn't tackled.

    Just to be clear, not saying GIT integration can't be (ab-)used to move objects, but only that that is not source control for which the GIT integration capability in TM1 was designed/intended.

    Cheers,



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



  • 4.  RE: Git Integration With PAW

    Posted 05/06/26 06:46 AM

    Hi Svetlana,

    Thanks for the update.

    Could you please share the expected timeline for this? Also, in which version will this enhancement be supported?

    Thanks,
    Ajit



    ------------------------------
    Ajit Kumar
    ------------------------------



  • 5.  RE: Git Integration With PAW

    Posted 05/07/26 02:34 PM

    Hi Ajit,

    Expecting 12.6 or later,

    Best regards,



    ------------------------------
    Svetlana Pestsova
    IBM Planning Analytics Product Manager
    ------------------------------



  • 6.  RE: Git Integration With PAW

    Posted 05/07/26 03:34 PM

    Hi Svetlana,

    Is that tied to v11 or v12 only?  Any expectation on the PAW version as well?



    ------------------------------
    Roman Harasymiak
    ------------------------------



  • 7.  RE: Git Integration With PAW

    Posted 05/07/26 03:50 PM

    Hi Roman,

    It's for v12 only. PAW should be able to pick it up quickly, but no version yet.

    Best regards,



    ------------------------------
    Svetlana Pestsova
    IBM Planning Analytics Product Manager
    ------------------------------



  • 8.  RE: Git Integration With PAW

    Posted 23 days ago

    Hubert's distinction is the one that matters for Ajit's case.

    If the branch is treated as "whatever PAW just pushed," then pushing 2 of 10 TIs should leave 8 files behind. Git already works that way. Replacing the branch contents with the selected objects is snapshot/promote behaviour, not a commit.

    Selective push in 12.6 may shrink the set you send. It does not fix the model if unselected, already-tracked files are still dropped. The test is simple: after a push of two changed processes, do the other eight blobs still have their previous commits on that branch?

    Until the integration commits a delta against the existing tree, this stays a packaged object move that happens to use Git as the transport. Fine for promote. Not source control - and on v11 it will stay that way even after 12.6.



    ------------------------------
    Vitalij Rusakovskij
    ------------------------------



  • 9.  RE: Git Integration With PAW

    Posted 23 days ago

    Just letting you know selective push in TM1 is still being actively worked on and therefore did not make it into TM1 v12.6. Hopefully 12.7, fingers crossed ;-)



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



  • 10.  RE: Git Integration With PAW

    Posted 23 days ago

    Thanks for the update, Hubert.

    Good to know that selective push is still actively being worked on. The distinction between selective object movement and actual Git-based source control is important here.

    I think the interesting question for 12.7 will therefore be whether selective push also preserves the existing Git tree/branch state and creates a delta against it, rather than simply reducing the set of objects being pushed.

    That would be the point where the integration starts behaving more like actual source control rather than object transport via Git.



    ------------------------------
    Vitalij Rusakovskij
    ------------------------------



  • 11.  RE: Git Integration With PAW

    Posted 16 days ago

    But obviously Vitalij, you know me long enough to know that;-!

    Think of 'selective push' as you having a bunch of files changed in a Git repo but you are only adding a subset of those changed files to your commit whilst everything else keeps unchanged (your other changes you did locally remain whilst your repo only gets updated with what you put in the commit).

    The tm1project (.json) file continues to drive what's included (and remains) whilst selective push will allow you to push (read: commit) only a part the changes you might have done without impacting anything else.

    The other thing we are trying to tackle, next to selective push, is you being allowed to have files in your repo that are not of interest to TM1 itself (for example, github action definitions, a .vscode folder for your favorite editor, perhaps even some doc content for your static web site for the database etc.) which would leave untouched as well (currently a push from TM1 results in those being removed, very annoying I found out the hard way as well;-). 



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



  • 12.  RE: Git Integration With PAW

    Posted 16 days ago

    Thanks Hubert - that is exactly the behaviour that was missing.

    Selective push as a real commit of a subset, with the rest of the tree left alone - including files that TM1 does not own - is what turns this from object transport into source control.



    ------------------------------
    Vitalij Rusakovskij
    ------------------------------



  • 13.  RE: Git Integration With PAW

    Posted 16 days ago

    IF, and mentioning this only as this started out as a "with PAW" topic, PAW decides to start supporting "source control" thinking and not sticks with "object movement" as they do today. Only good news presumably, since the tm1project file would still not control files that "TM1 does not own" as you say, those would remain either way.



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



  • 14.  RE: Git Integration With PAW

    Posted 16 days ago

    Exactly. So the remaining piece is really PAW adopting the same source-control model rather than treating Git primarily as an object-movement target.

    If that happens, the TM1 selective-push work and the preservation of non-TM1 files should fit together naturally.



    ------------------------------
    Vitalij Rusakovskij
    ------------------------------



  • 15.  RE: Git Integration With PAW

    Posted 16 days ago

    TM1 is quite different from a traditional programming project, where developers work directly with files and Git tracks those file changes. In TM1, the objects live inside a running multidimensional database and are highly interconnected, so the real challenge is often not just making a selective Git commit, but deciding exactly which TM1 changes should be promoted together.

    That is where the SPACE TM1 Lifecycle Manager becomes particularly useful.

    You can compare two TM1 environments side by side, see exactly what is different, selectively choose the objects you want to promote, package those changes into a release, review the release and then either deploy them to your target evironment or Publish to Git, without leaving IBM Planning Analytics Workspace.

    For me, this is a more natural way to approach "selective commits" in TM1. Instead of starting with Git files and deciding what to stage, you start with the actual TM1 environments, understand the delta, select the required TM1 objects, and let that selection become the release/deployment unit.

    Before syncing anything into the target environment, SPACE also provides a preview of the changes, so you can review what will be created, updated or changed before applying the sync.

    We also use our own text-based representation of TM1 objects. JSON is excellent as a machine-readable format, but it is not always ideal for Git review - nested structures, ordering and metadata can make relatively small TM1 changes produce noisy diffs. The SPACE format is designed specifically so changes to cubes, dimensions, hierarchies, attributes, views, subsets, processes and chores are easier for a TM1 developer to read and compare in Git.

    Another important part is traceability. Everything in SPACE is logged, so the Lifecycle Manager also gives you a clear history of who deployed what, where and when. Combined with Git history, that makes it much easier to understand both the source-control history and the actual TM1 deployment history.

    The goal was therefore to keep Git underneath as the source-control mechanism, but make the workflow much more natural for TM1:

    Compare environments → select the required changes → create a release → review/preview → Publish or Sync → retain the full deployment history.

    That gives users selective source control together with the broader TM1 lifecycle, without requiring every TM1 developer to work directly with Git concepts such as push, pull and merge.

    And this is also where SPACE AI becomes particularly interesting. The next step is not simply "AI for Git", but AI-assisted TM1 lifecycle management - for example:

    "Show me what changed in DEV since the last production release."

    "Which of these changes belong to the new forecasting model?"

    "Create a release with everything required for this cube."

    "Am I missing any dependent dimensions, subsets or processes?"

    "Review this release and tell me what could be risky before I deploy it."

    "Who deployed this object, when, and what changed?"

    So instead of AI trying to understand Git files in isolation, it can work with the TM1 environment comparison, object relationships, releases, Git history and SPACE deployment logs to help users understand, package and safely promote changes.

    The direction we are working towards is:

    AI analyzes the TM1 delta → groups related changes → suggests the release → explains dependencies and risks → user reviews → SPACE deploys/syncs → the full action history remains auditable.

    Git stays underneath, but the user works at the TM1 lifecycle level.



    ------------------------------
    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/
    ------------------------------



  • 16.  RE: Git Integration With PAW

    Posted 15 days ago

    I don't mind you plugging SPACE every so often, Vlad ;-), and I'm sure there are as many different ways people want to do things, have different needs for ultimately the same capabilities and, perhaps most importantly, their own preferences as to how and with what they want to do them. And I get it, SPACE serves one of those ways nicely and without ever leaving PA.

    Thing is, I'm first and foremost a TM1-er, and there are many different kinds of TM1-ers out there - I'm probably of the more exotic kind (read: I might be rare ;-)). I'm one of those that would happily live in VSCode, never touch a modelling UI, and build an entire model from code and use the occasional transient TI process.

    PA is obviously the prime, and by far the most important, consumer of TM1, but PA isn't TM1. My job is to make sure TM1 provides the capabilities for PA, SPACE, and other tools, CI/CD pipeline, as well as that slightly odd developer living in VSCode to build whatever workflow works for them.

    So yes, what you're describing with SPACE is a perfectly valid workflow on top of this. I'm just looking at it one level lower.

    For me the native TM1 Git integration should make TM1 a proper participant in Git source control. tm1project.json defines what constitutes the project; pull lets me build/update TM1 from that source; push lets me commit changes made in TM1 back to it; and selective push should allow a client to decide what belongs in a particular commit without disturbing everything else in the repository.

    What happens on top of that is deliberately somebody else's choice. We all know the experience PAW put around it, SPACE may use it to provide a complete lifecycle experience (do you - or did you roll your own source definition?), somebody else may build something entirely different and I may just sit in VSCode and use any and all GIT tooling at my disposal and use the occasional call to the REST API.

    If we've made the Git integration sufficiently clean and complete that all of those are possible, then, from a TM1 perspective, I think we've done our job.



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



  • 17.  RE: Git Integration With PAW

    Posted 15 days ago

    Yes we rolled our own source definition and that was a deliberate choice.

    For me, the important question was not only whether TM1 objects could be stored in Git, but whether the source representation made the actual TM1 change easy to understand.

    Because TM1 is quite different from a classical source-code project, the meaningful unit is often not the file itself, but a small semantic change inside a TM1 object.

    That is why SPACE uses its own text-based representation for cubes, dimensions, hierarchies, attributes, views, subsets, rules, processes and chores. It is designed to produce clean, meaningful Git diffs, we wanted the source itself to be both TM1-friendly and Git-friendly.

    For example, if someone changes a single attribute value, you can see that individual change directly in the diff rather than inspecting a much larger serialized JSON structure.



    ------------------------------
    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/
    ------------------------------



  • 18.  RE: Git Integration With PAW

    Posted 15 days ago

    Yep, and I can understand that choice Vlad.

    For what it's worth, the TM1 representation isn't simply an arbitrary serialization of the objects either. It follows our CSDL using the OData 4.01 JSON representation, with an OData vocabulary that lets us externalize things such as Rules, TI code and MDX into separate files in their own syntax.

    But ultimately I don't think the representation in Git matters all that much. I'd expect a TM1-aware client to understand it and show me the objects, and the diffs between them, in whatever form is most appropriate.

    Where the native integration becomes more interesting to me is that tm1project.json describes more than what gets stored in Git: dependencies can control the order in which objects are materialized, and pre/post pull/push processes can participate in building or consuming the source. In other words, it's the foundation for what I tend to think of as TM1-as-code: source for building a TM1 model, rather than merely a textual representation of one.

    But we're probably disappearing down a different rabbit hole now ;-)



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



  • 19.  RE: Git Integration With PAW

    Posted 15 days ago

    Hi Hubert,

    Thanks for sharing your notes.

    I have also used VS Code to leverage Git features such as version control. However, from a TM1 developer's perspective, using Git through VS Code can be a relatively lengthy process, as TM1 developers may not regularly work with VS Code or Git commands.

    It would be very helpful if we could perform full or selective Push/Pull operations directly from PAW. This would make Git integration much more user-friendly and efficient for TM1 developers.

    Regarding SPACE, I am not yet familiar with how we can utilize it or what its specific purpose is in this context. It would be helpful if you could provide some guidance or additional information on how SPACE could support this workflow.

    Thanks,
    Ajit



    ------------------------------
    Ajit Kumar
    ------------------------------



  • 20.  RE: Git Integration With PAW

    Posted 15 days ago

    Hi Ajit,

    As I wrote already "I might be rare", I kind of hope I am actually especially as I'm not your typical TM1 developer and the last thing I want to do is trying to advocate that 'ordinary' TM1 developers should start leveraging VSCode for their day to day TM1 development, au-contrair!

    And I'm with you, it would be great if PA(W) would 1) embrace the 'TM1 as code' model (for which TM1's GIT integration was created) and, once we have it in TM1, 2) add support for selective push. Selective pull on the other hand... that's not really something that in an "as code" model exist and something, from a source control and CI/CD point of view, be impossible to govern. 

    Again, if "TM1 as code", and any CI/CD or other GIT based tooling/testing/pipelining that might go with it, is not for you then TM1's GIT integration might not be what you are looking for (and that's perfectly fine and probably still true for more then 95+% of the TM1 users.

    As for SPACE, I'll leave that to Vlad to answer, but it, as per Vlad's response above, is not using TM1's GIT integration or it's standard's based 'source' specification.



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



  • 21.  RE: Git Integration With PAW

    Posted 14 days ago

    Hi Ajit,

    I think Hubert's distinction is actually the key one here.

    The native TM1 Git integration is moving towards a true "TM1-as-code" model, which is very powerful if you want repositories, source-driven model builds, CI/CD pipelines and Git-based development workflows.

    SPACE is aimed at a different way of working: TM1 lifecycle management for people who think in environments, objects, releases and deployments rather than repositories and build pipelines.

    You start from your actual TM1 environments, for example DEV, TEST and PROD. Compare them side by side, see the object-level differences, selectively choose what should move, package those changes into a release, review them and then deploy/sync them.

    So the main unit in SPACE is really the TM1 change or release, not the Git commit.

    That does not mean you lose automation or CI/CD. In SPACE you can also create jobs to publish a release or sync changes from Git, so those deployment workflows can be automated as well, just expressed in a way that is closer to how a TM1 developer thinks about promoting changes.

    While Git is still useful underneath for versioning and history, TM1 developers do not need to work directly with branches, push/pull/merge or repository mechanics.

    For many TM1 developers, I think that maps much more naturally to how they already think about moving changes between environments.

    Happy to show you how that workflow looks in practice if useful.



    ------------------------------
    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/
    ------------------------------



  • 22.  RE: Git Integration With PAW

    Posted 6 days ago

    @Hubert Heijkers - Do you know if there has been any more focus on the TM1 git operations respecting native git functionality i.e. .gitignore and .github directories?  With more and more focus on building/deploying/maintaining TM1 as code, hoping a solution can be found as it's onerous to re-deploy those files manually on each push back to github.  I believe I heard there was something on the roadmap coming for v12 at some point, but not sure if there is any committed timeframes.



    ------------------------------
    Roman Harasymiak
    ------------------------------



  • 23.  RE: Git Integration With PAW

    Posted 5 days ago

    Hi Roman,

    Things are in the works (I've seen selective push working internally, however asked for the mechanics - read: API - to change a bit), unfortunately this is never top priority, not in the last place because PA really doesn't use it for "TM1 as Code", but it's not forgotten. Apart from selective push we are indeed also making sure you can have other files in there instead of having to re-add/revert removing those. `.gitignore` is an interesting in that to TM1, as the GIT client, that would just be another file as from a TM1 code point of view what's included/excluded is controlled by the `Files` and `Ignore` sections in the TM1 project file, going forward in combination with the selective push when pushing to GIT.

    So most definitely on the roadmap and typically I don't talk about it if it's not at least planned/targeted for this year, and in this case I'm still hopeful to have this out by the end of this year as well.



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



  • 24.  RE: Git Integration With PAW

    Posted 13 days ago
    Edited by Tim Geilen 13 days ago

    Hi all,

    Great discussion, and it matches exactly the distinction Hubert and Vitalij made: there's a real difference between "object movement over Git as a transport" and actual Git-based source control.

    I want to share the practical side of this, because we've been running exactly the model Hubert described ("that slightly odd developer living in VS Code") for our whole team, not just one person, and it removes basically every problem raised in this thread.

    We use the PA-Code extension for VS Code together with GitLab, and the reason this works so well is precisely that we don't invent anything custom. PA-Code writes TM1 processes and rules to disk as plain text files (.ti, .rux), and from that point on it's just... a folder. VS Code is arguably the best IDE on the market for exactly this kind of workflow, and it already ships with a complete, mature Git implementation. We're not building a TM1-specific Git client, we're using the same battle-tested source control every other software team in the world relies on.

    That directly solves the "existing branch gets its other files replaced" problem in this thread:

    • Git only ever creates a delta against the existing tree. Staging and committing 2 changed files leaves the other 8 completely untouched, because that's how a commit fundamentally works, not a snapshot/promote.
    • Non-TM1 files live in the same repo and are simply never touched by TM1 at all, because nothing is "pushing objects" - we're committing files.
    • Selective staging is native and file- or even hunk-level: git add path/to/processti , or stage individual changed lines in VS Code's Source Control view. No need to wait for a future "selective push" feature; this has existed in Git since day one.

    On top of that, VS Code gives every developer real diffs, blame, history, and merge conflict resolution for free, and PA-Code is the bridge that keeps the TM1 object and the file in sync in both directions.

    The part that turns this from "a dev using Git" into an actual team process is GitLab. We built our whole lifecycle on top of it:

    • Feature branches per Jira ticket (Ticket-12345), created from dev.
    • Merge Requests with mandatory pipelines, MR templates, and Definition of Done checklists.
    • Reviewers commenting directly on the TI/rule diff in GitLab, approvals required before merge.
    • CI/CD pipelines that validate TI syntax, auto-deploy to DEV, auto-promote to TEST, and only reach PROD through a reviewed, ticket-scoped release branch.
    • Full audit trail: every production change traces back to exactly one Jira ticket, one commit, one approved MR.

    So to directly answer the "is this only for the exotic VS Code developer" question: no, it scales to a whole team without anyone needing to reinvent branching, diffing, or review tooling. VS Code + PA-Code + GitLab gives you the full "TM1-as-code" model Hubert described, with the delta-based commits and selective staging this thread is asking for, plus the review/CI-CD layer on top - and it's a genuine game changer once your team gets past the initial learning curve on basic Git commands.

    Best Regards

    Tim