I hear that you’ve bought the OneStream Administrator Handbook – well, well, congratulations on taking the steps that will (hopefully) make your life as an Administrator easier!
The book is brimming with great examples and use cases on topics that the Administrator will likely encounter, but here’s something a little extra – a more detailed break-down on how C#Top works between the base entities to their parents! This comes in handy when an end user new to OneStream, comes to you and says something along the lines of, “Hey, the sum of the base entities doesn’t equal to the parent entity, what gives?”
Before you break down in a full-out cold sweat, let’s read this handy dandy blog.
This blog covers how C#Top is viewed and used with the Parent dimension. With this blog, you help you to help your end user familiarize the beauty that is C#Top.
C#Top truly represents the Consolidation trail in relation to the parent via Parent dimension. C#Top is a great way to track how the base entity, starting with its loaded local values, end up being translated, eliminated and adjusted, and finally arriving at the expected amount to be contributed to its parent.
In other words, what a base entity contributes, via C#Top, to its parent does not always necessarily equal to what the base entity initially had due to adjustments made to it, be it journals, custom eliminations or logic, etc.
Hold on, hold on, why do we care about the Parent dimension with C#Top?
The use of Parent dimension is especially important if you have entity structures that have entities categorized as equity pick-up, joint ventures, non-controlling interests, or holding companies, or custom eliminations or logic on specific base entities. These are instances where the relationship between base and parent matter.
Let’s walk through a simple example below –
Assuming base entity, E#101, rolls up to E#100 (parent) and for demonstration purposes it is only E#101 that rolls up to E#100. I must explicitly highlight that my example is for demonstration and educational purposes; I personally dislike the use of 1:1 base to parent as this creates unnecessary metadata maintenance and the setup does not bring value to your overall consolidation processes.
E#101 |
Amount |
Assumptions/Explanation |
C#Local |
100 |
Assume E#101’s local currency is CAD. This 100 means 100 CAD. |
C#Translated |
75 |
Assume that E#100’s (parent of E#101) local currency is USD and the FX rate for CAD:USD is 1 CAD = 0.75 USD. C#Translated takes on the rates and currency associated with the parent entity. In other word’s C#Translated for E#101 will be USD. Thus, the system will take 100 * 0.75 = 75 USD. C#Translated:E#101 will correspond exactly to C#USD:E#101. |
C#OwnerPreAdj |
10 |
When do we want to consider using this? Any time you have a specific adjustment to the base entity that you want to specifically impact how C#Share will be calculated. The use of C#OwnerPreAdj requires a Parent reference in journals or in business rules. Amounts referenced in C#Translated, C#OwnerPreAdj, C#Share, C#Elimination, C#OwnerPostAdj, C#Top will be in the parent currency. Let’s say we created a journal entry to C#OwnerPreAdj:E#101:P#100 of 10 (USD). |
C#Share |
85 |
The amount is captured here depends on your cube’s Consolidation Algorithm Type. Let’s assume the cube is set to Standard (Calc-On-The-Fly Share and Hierarchy Elimination) Let’s assume that E#101 is set to 100 Percent Consolidation. The system will calculate C#Share as (C#Translated + C#OwnerPreAdj) * Percent Consolidation => (75+10)*100% = 85 |
C#Elimination |
0 |
Elimination out-of-the-box will be found on the first common parent unless you have custom logic to populate this intersection. |
C#OwnerPostAdj |
20 |
When do we want to consider using this? Any time you have a specific adjustment to the base entity that you want to specifically impact the amount at C#Top. The use of C#OwnerPostAdj, like C#OwnerPreAdj, requires a Parent reference in journals or in business rules. Let’s say we created a journal entry to C#OwnerPostAdj:E#101:P#100 of 20 (USD). |
C#Top |
105 |
C#Share + C#Elimination + C#OwnerPostAdj which will be 85+0+20 = 105 |
Then when you look at C#Local:E#100, the amount will be 105.
So back to your end user’s question, “Hey, the sum of the base entities doesn’t equal to the parent entity, what gives?” – now that you have read the Administrator Handbook and got down to the end of the blog, and you know you have various ownerships or custom logic for your entities, you can confidently check the sum of base entities at C#Top and ensure that the overall amount is equal to C#Local at the given parent entity. You can then respond back and ask what Consolidation member is being referenced.
Don't forget to get your copy of the OneStream Administrator Handbook if you don't have it yet!
Blogs from Experts on OneStream