By Naveen Kumar
Let's say I have two updaters—one created by the user and the other by the vendor. Both updaters modify the same parameter within an element whenever a change occurs. Since they operate on the same parameter, conflicts may arise due to simultaneous or overlapping modifications, leading to an internal error. The Revit journal logs the issue as follows:
Dynamic Updater with ID xxxxx touched atom ((Element, 147536, -1)) that was previously touched by another updater with ID xxxxx.
If you work with Revit APIs and automation, managing multiple updaters can be a complex and challenging task. So, let's break this down and see what can be done.
What Was Tried (But didn't work)
Several approaches were attempted to fix the issue:
-
Changing ChangePriority values – The idea was to set different priority levels so Revit could process one before the other. No luck.
-
Using UpdaterRegistry.SetExecutionOrder – This should have controlled the sequence of execution, but the error still happened.
-
Using an ExternalEvent – This workaround technically worked, but it’s not ideal. It creates unnecessary or unexpected transactions that the user can undo, potentially leaving the model in an inconsistent state.
Why This Happens?
Revit enforces this restriction to prevent multiple updaters from making conflicting changes to the same data within an element. If both updaters modify the same parameter, there's no way around it—both can't run without interfering with each other.
For developers, this is a nightmare because you don’t want to be in a situation where your updater "stops working" because another vendor’s add-in is overwriting your data. Revit seems to assume that a single vendor should manage all updates to an element to avoid conflicts.
What's The Best Solution?
If you ever run into this situation, here’s what you can do:
-
Check if both updaters modify the same parameter. If they do, they are fundamentally incompatible.
-
Talk to the third-party vendor. There may be a way to tweak how their updater works so it doesn’t conflict with yours.
-
Disable one updater if possible. Depending on the project, you might be able to work around the issue by limiting when one of them runs.
Ultimately, the cleanest solution is to either use a single add-in to modify the specific data or work with the vendor to develop a custom solution that integrates the necessary features of both add-ons without conflicts. Otherwise, expect compatibility issues to keep popping up.