Updating an object thru actions and pipelines

Does anyone have any advice/recs for updating an existing object thru both pipelines and actions?

We have an existing facility object that certain users have edited (added object instances, edited properties, etc.). We also have a monthly import into our system from another system that should be incorporated, but isnt always accurate/needs one off changes sometimes, and thus isnt a “source of truth”. We want to incorporate facilities from this monthly import, but also include user edits. Additionally, for conflicts between whats in our platform vs what is coming in from the import, we are planning on creating a resolution workflow where a user can determine which edit is correct.

I was thinking of using a combination of incremental transforms and joining on the materialization for the existing object to create a “proposed facility change” object that could then be resolved via actions in a UI. However, im hesitant because i feel like this could create some weird cyclical logic.

Not sure if there are smarter ways to solve this, but here are two different approaches we have implemented in similar cases to avoid cyclic dependency:

  • you can create two separated OTs where the one only holds the editable parameters and the other “main” the editable parameters + all rest. Downside In this scenario is that the action type always needs to update both object types with the same information (in theory you could also just always link in the editable properties, but this would come with its own set of limitations like non-filterable, charting difficulties etc). However what this would allow you to do is have your pipeline use the materialization of the only-editable properties OT to create the backing dataset of the main OT without cycle dependency. In OMA you just need to select the option to either take user input or backing data based on some updatedAt timestamp.
  • option two would be to do your batch updates through an automation. In this case you would upload all file based data onto an individual “upload OT” with an upload timestamp and then update your main OT through an automation.

Here is a recent post that sounds similar and where Jamie describes nicely how to configure the automation execution to just update once on a batch of objects.
https://community.palantir.com/t/automate-trigger-on-sync-event/3796/6