A typical Enterprise Data Management (EDM) Application feeds metadata to multiple downstream applications. Each of these applications may have prefixes in their node names, which may be completely different from the prefixing nomenclature of any other system in the landscape. To increase the complexity, parent nodes in a system may have different prefixes in their names from the base nodes. Configuring subscriptions in such a landscape can be a massive headache. In this blogpost, I look to provide an approach to this kind of a scenario by drawing from my experience from an engagement in which Enterprise Data Management (EDM) was feeding 10 different target systems, each with a unique prefixing requirement.
Let us assume that we have EDM feeding metadata to the below target systems:
· Fusion Cloud GL
· Planning Cloud
· Financial Consolidation Close
We also assume that the hierarchies of each of these 3 systems are similar apart from the different prefixes.
Typically, the GL system will be the primary application and the other applications will be the subscribing applications for setting up Subscriptions. Imagine that in Table 1 below is the prefixing requirement for the ACCOUNT dimension for each of the systems:
Step 1: Create a ‘Boolean’ property ‘Is Base’ which indicates whether the node in consideration is a PARENT or a BASE. This property will require user input while adding a new node in the primary GL Viewpoint to indicate whether the node being added is a PARENT or a BASE.
Note that this property may not be created during application registration as we need this property only to help us in configuring our prefixing logic. We do not need this to be a part of our exports. So, this property should be added to the NODE TYPE of all the concerned dimensions from the NODE TYPE menu. Make this a REQUIRED property. Refer to Snapshot 1
Step 2: Define the ‘Default Qualifier’ and ‘Alternate Qualifier’ in the Node Type for the ACCOUNT dimension of the Planning Cloud and the Financial Consolidation Close Cloud Applications. Refer to Snapshot 2 and 3.
Note: You may define either the PARENT prefix as the ‘Default Qualifier’ and the BASE prefix as the ‘Alternate Qualifier’ or vice versa. I suggest defining the base prefix as the ‘Default Qualifier’. More on that a bit later in the blog.
Step 3: Setup the Node Type Converters between GL and Planning Cloud Node Types and the GL and Consolidation Close Node Type. This is where we define the logic for the calculation of prefixes.
Taking the example of the Node Type of Planning Cloud where the converter with GL Cloud is setup. The logic resides in the ‘Core.Name’ property. In the ‘Operation’ select TRANSFORM. Refer to Snapshot 4.
The logic used is simple:
If the node being added is a PARENT node, concatenate ‘AC_’ to the node name
Concatenate ‘AC’ to the node name
Refer to Snapshots 5 and 6 for how the above logic is implemented in EDM:
The same logic is written to calculate the prefixes for the ‘Consolidation Close’ viewpoint.
Step 4: Configure Subscriptions between the primary GL Viewpoint and the subscribing Planning Cloud and Consolidation Close Viewpoints and you are good to go!
Logic in Action:
Once we have done the above setups, we can try out the logic.
I have created the ‘Account Maintenance View’ (Snapshot 7) which includes ACCOUNT Viewpoints for each of Fusion GL, Planning Cloud and Consolidation Close.
Now let us add a new PARENT ‘100003’ under ‘100000’ in the GL Viewpoint (Snapshot 10) . Let us also add a BASE ‘100031’ under the PARENT ‘100003’.
Let us make sure that the ‘Is Base’ property value for ‘100003’ is ‘FALSE’ and for ‘100031’ is ‘TRUE’.
On submitting this request, the below 3 actions take place:
a. Nodes ‘100003’ and ‘100031’ will get added as PARENT and BASE nodes respectively. Refer to snapshot 11.
a. A subscription request should get triggered with 4 items (2 new nodes each to be added in the Planning Viewpoint and Consolidation Close Viewpoint). Refer to snapshot 12.
a. The new PARENT and BASE nodes should get added to the subscribing viewpoints with the correct prefixes. Refer to snapshot 13.
Keep in Mind!
Though this approach works wonderfully well, it does have a minor limitation. And you have Oracle and the EDM Development team to blame for it!
In our scenario, if we DELETE a PARENT node in the primary GL Viewpoint, the corresponding PARENT node in the subscribing viewpoints will NOT get deleted. In other words, if the prefix for the PARENT nodes is listed as the ‘Alternate Qualifier’, the PARENT nodes will not get deleted. Vice versa, if the prefix of the BASE nodes is listed as the ‘Alternate Qualifier’, the BASE nodes will not get deleted. So, the deletes will have to be performed manually.
Obviously, I reported this to Oracle, and they acknowledged this limitation. The reason given for the same is that once a node (with prefix listed as ‘Alternate Qualifier’) is deleted in the primary viewpoint, the node is gone from that application and ceases to exist. As a result, EDM is unable to establish any linkage of this now DELETED node with the corresponding nodes in the subscribing viewpoints.
Earlier, I had recommended to list the prefix of the BASE nodes as the default qualifier. The simple reasoning behind this was that you will more often end up deleting BASE nodes rather than PARENT nodes. So, listing the prefix of the BASE nodes as the default qualifier will save you some effort with the manual DELETES. Having said that, DELETES themselves are normally extremely rare.
Some may rightly point out that DELETES normally are not done in GL systems anyway. I am just trying to make a point that there can be cases when GL may not be your primary application or is not being managed in EDM. In other applications, DELETES are very much possible. So, the knowledge of this small limitation will come in handy.
Note: The IDEA for this enhancement was submitted in IDEA LABS and Oracle is working on addressing this limitation.