Product costing in Anaplan



I am just about to start a new project where the idea is to build a full product costing, with complete BOM and routing in Anaplan. I have a pretty good idead of how to do this, but it would be great to get some input from you guys before I actually start building. There is one thing which I think will be a bit more challenging, which is related to BOMs. It has to do with the fact that some raw material, let's assume steel in this case, is used in multiple products, which makes it impossible to use the build in Anaplan hierarchy, since many products can obviously have steel as a component. Then I would need to add steel multiple times (one time for each product) which wouldn't be ideal since it would mean that I would have to maintain the raw material steel in multiple places in my model (perhaps not an issue with steel, but other more complex raw material will need maintenance)

Also, another question: A final product might have a semi-finished good as a component, and I am not really sure how to incorporate that into the full BOM. What I want to achieve in the end is that you can look at "product A" and see all raw materials as well as the semi-finished goods used for that product, and then be able to click on the semi-finished good and see the raw materials and semi-finished goods for that one an so on...

Any input or suggestions are highly appreciated, thanks a lot in advance!



  • @fredrickstraube 

    Great question!

    You can handle a BOM quite effectively in Anaplan.

    Before I go into too much detail I would recommend you download this app from the App Hub.

    Take a look at the suggested implementation and see if it meets your use case. If not, come back here and we'll sort it out.

  • I worked on this with @ArunManickam  a while ago.

    The solution we ended up with is as follows:


    The best is to record first the BoM as " inversed flat", where you record for each item what it can produce:


    the list is like this: First we have a material list that contains all items and then a numbered list that will have a child for each otther item it is used to produced



    From there you can make your calculation (in this example quite simple). Note that the depth of the BoM isn't dynamic in our example, and I don't think you should make it (unless it changes often at your client's). Having it dynamic will make the formulas very hard to read. But you can create x level in addition to the current depth so that no changes are required in the near future.


    Finally, I'd advise also having a hierarchical list with a level for each BoM level where you can aggregate the data once you have calculated it o a flat level, for presentation.





  • Hi,

    Thanks a lot for your suggestions. I have looked quite a bit at the Anaplan Bill of Material Costing App in the App hub, and I think it uses quite a nice structure and way of handling the BOM breakdown and multiple components. 


    My problem at the moment has to do with model size. As soon as I start to increase the number of products and components, the model size increases very quickly, and after just a few hundred products and a few thousand components, the upload crashed due to model size.

    As far as I can tell, there is one module which is quite a bit larger than the other ones, see picture:

    BOM costing.png

    As far as I can tell, the main reason this module is so large is that it uses both the list of finished products as well as the entire SKU list. 

    Does anyone know a way to work around this so that I can retain the same functionality (rolling up the component requirement for each SKU) but having a smaller module, so that I can upload more products?

    Thanks a lot in advance!

  • 3 millions cells is not large, certainly not enough to cause an upload issue.
    which upload is failing by the way ?
  • Hi Nathan,

    Please see table below for example of how the model size increases with the number of products and components:


    Components (excluding products)

    Items (products and components)


    Model size (GB)



















































    When I try to upload 2500 products and 2500 components, the import fails.

    Upload fail.png


  • oh you mean 3 million cells is the size without any of your inputs ? Indeed 17GB for 2500 items seems to be lacking optimization.

    In that case you could rebuild in your own model just taking the part of the BOM calculation from the app, loosing everything that is not essential.
  • Hi Nathan,

    Sorry, I realized I wasn't very clear. 3.000.000 cells in that particular model is with a very limited amount of products and components (a few hundred I think). 

    My problem with your solution is that the app is very limited the way it is, and my plan was to add quite a lot of functionality to it, however, I don't want to do that if I'm only limited to a few hundred products and components, since my case requires several thousand of products/components. 


  • no you can definitely do BOM costing for many items (100K+) with Anaplan.
    Look at the solution I provided in my first post, I believe it to be the most size efficient.

    The problem with the apps is that they were built with the goal to be "installed" from a dashboard and to do often performance was sacrificed for usability.
  • Hi @fredrickstraube 
    From the blueprint screenshot you provided, it seems like you are dimensionalizing the module by Products and SKU lists. That's what causes the module/model to **** up in size because when you think about it you are providing an intersection for each product and every SKU not to mention the versions lists.

    Can you tell me what is the need to have both lists as dimensions?

    I believe I had a similar issue in Finance where I have a large number of "entities" - that's your Product Lists -  and even a larger number of GL accounts - that's your SKUs. An entity can be linked to one or more GL accounts but not the whole list of accounts. that's what having the 2 dimensions in the module mean.

    If I understand your logic better maybe the solution I found would work for you.



  • Hi Einas,

    Thanks a lot for your message and to clarify - this is a pre-build app from the app-hub that I have downloaded and are currently doing some testing on.

    In this particular case, the module is used for rolling up the entire component requirement for a semi-finished good, that is, summarizing a specific component over all BOM levels (maximum of 9 in the model) for the specific semi-finished good.

    I agree with you regarding the issue with having the two dimensions, but I don't currently see another way of doing it, since the module itself is very useful and I need to keep the functionality of it, but if possible, doing it in a way that doesn't use up the same size.

    You can find the app here:

    Any thought?


  • Hi @fredrickstraube 

    Unfortunately, I have been having issues accessing my workspace for about 4 days now (going crazy but support is helping me). So I can't really download the model and look at it but I promise I will do once I get my access issue fixed.

    Here is how I saw others go around this issue:
    Create a concatenated Key by combining the Product and SKU, this way you only have intersections you need. Honestly, I'm not a big fan of this solution for many reasons chief among them is the fact you will be concatenating 2 texts and you know how we feel about text 🙂 


    The way I did it for my issue with the transactions (entities and GL accounts) is to create a list that I populate using an action where it has the hierarchy for the items I need
    for example 
    All Products 
    ----- Product 1
    ----------------SKU 1
    ----------------SKU 7

    ----- Product 2
    ----------------SKU 8
    ----------------SKU 10


    The idea is that you build that hierarchy dynamically and then use it to dimensionalize the module instead of using the 2 lists Product and SKU, less size, less sparsity.


    It worked in my case because we had a daily import from the transactional system so a process was running every day and I was able to add my action to it. The potential drawback is how often do you need to adjust this list, and is it feasible from a user perspective to ask them to run an action every time you create a new product??

    For completeness... since I assume the model will have other modules dimensionalized by the Product or SKU list and you will probably need to access data from these modules, then this newly created list has to be created as an alternate list. That's a topic for a different time if you are interested. 🙂

  • Hi Einas,

    Thanks for your input, but the problem with doing it that way has to do with the hierarchies in Anaplan. In the model, a specific product can have up to 9 BOM levels (L1 -> L9).

    Anteckning 2020-05-06 134609.png

    A specific component, at a specific level, references an item in the list of all SKUs (list property). So for example, a product can have two Sub-assemblies (SA) in the L1 level, which then consists of raw materials (RM) in the L2 level. However, it could also be the case like below:

    Products AParentComponent 1Component 2...
    L1Product ASA_1RM_1 

    As you can see, it can be the case that a specific level is both SA and RM, as well as a specific RM (or SA) can be used on multiple levels. And of course, it can be more than just two components.

    However, it can, of course, also be the case like below:

    Products AParentComponent 1Component 2...
    L1Product ASA_1RM_1 

    That is, different products goes down to different levels, some might stop at L1 and some could go all the way down to L9 (or even lower). This means that if I put L9 as the dimension of my module, only capture the information for the products that go down to L9, and the same goes for the other levels. I would somehow need the dimension of the module to capture ALL of the different levels, almost like I had a formula that applied to all the levels within the hierarchy. 

    Does this make sense?