Comparing Properties in DRM
My client updates several hierarchies monthly using extracts from SAP (DRM is not currently the source of Master Data). One of the things updated with the hierarchies are the member descriptions. They have a requirement to move the existing description to another property when descriptions change. We then load the new description and the prior description to separate alias tables in our Essbase and Planning applications. This allows our users to retrieve in smartview without having to worry about what has changed.
We could have (and discussed at length) implemented a process where all aliases moved once a month. We have three aliases (Default, Prior1, and Prior2) dedicated to this process. We decided not to because occasionally changes happen more than once a month and moving everything could negatively affect usability from a SmartView user perspective. So we decided that it would be best to only move from Default->Prior1->Prior2 when there was a change.
To accomplish this goal we created two "compare" properties. The first property (Compare.Descr) mirrors Core.Descr but allow for it to be overridden. The second property (Compare.DescrChanged) will check to see if the value of Core.Descr matches the value of Compare.Descr. To determine if a change occurs we load the new hierarchies to a new version and blend structural changes and differences in Compare.Descr with the current version to create a new version.
return node.Prop("Compare.Descr").Overridden = PropOrign.Overriden;
String(node.Prop("Core.Descr")) === String(node.Prop("Compare.Descr")). This dramatically reduced the number of changes detected.
return node.Prop("Compare.Descr").Origin === PropOrigin.Overridden && !(String(node.Prop("Core.Descr")) === String(node.Prop("Compare.Descr")));
Once I could reliably detect changes, I created an export based on Compare.DescrChanged being True. I then created a Jython process in ODI to generate a DRM action script. Finally, the Jython process executed the action script using the drm-batch-client to apply the changes to the newly created version.