Whenever I change anything I want to know how that change will impact. The Cross Reference feature in DAX provides a handy tool for that. How it works? According to my study, it relies on a data model, known as Cross Reference System Data, that contains the names of objects and their dependency relationships. That being said, to maintain that data model to be available and up-to-date is essential. DAX has two ways for this: auto and manual. The x++ compiler can be configured for maintaining the cross reference data (development > tools > options > development> compiler <tab> > cross reference <check box>). In this case, every time a code change triggers the compiler to update the cross reference data. Inevitably, it will affect development performance. In contrary, with manual approach AX provides update function through tools menu (development > tools > cross reference > periodic > update), and through context menu (right click > add-ins > cross-reference > update). The difference is that from the context menu I can only update for the selected single item at a time, whereas through the editor’s tool menu I can update a group of items in a batch.
I prefer the manual approach for performance reasons. Since I usually don’t concern about the holistic dependency relationships but rather concern about certain things that I would be working on at the moment, and it is not a big deal to update the cross reference only for those items before I check the dependencies. However, when I start working, the manual approach doesn't work as expected. I modified the InventSum table by adding a new display method, then added a column to a grid that uses the display method on the InventOnHand form. Then I checked the used-by by right clicking the display method, the InventOnhand form doesn't show up! Until I updated the cross reference for InventOnHand form and go back to the display method, it starts showing the dependency.
It is unfortunate but makes sense that the update command for an element only updates the elements it is using (depending on). It is impossible to know what other elements use an element without a full cross reference update. However, I would overcome this if I always update the cross reference for any elements I change, then I don’t need to worry about updating the list of elements that uses the elements I am working on. Am I right?