Skip to main content
Adaptive Insights
Knowledge @ Adaptive Insights LLC, a Workday company.

Model Design Best Practices

We are often asked for “best practices”, but best practices are really only the best if they are the best for you.  This article outlines some generic best practices for the structure of an Adaptive Insights model covering:  Levels, Accounts, Dimensions, and Versions.


  • Level attributes vs level dimensions:
    • Attributes are the faster way to do almost exactly what level dimensions do so they are preferred.
    • There are some unique use cases where level dimensions can do things that attributes can’t, so typically we try to solve the use case with attributes and if we encounter the situation you can quickly switch to using level attributes.
    • It is not typically recommended to convert existing level dimensions, as that can create a lot of work to fix reports and formulas.
  • Leverage version availability over “DO NOT USE”:
    • Version availability lets you remove a level no longer in use but preserve it for historical purposes.  In the Actual version you end it as of a date and for new Plan versions you just uncheck it to remove it.  Search for “Version Availability” for more information.
  • Remove 1-1 levels, if you can:
    • Many accounting systems force an even level structure on you but Adaptive Insights supports what is often called a “ragged” hierarchy.  This impacts both the usability of the system for users and the performance.  For example the USA breaks down to states and cities, but the UK goes right from country to city adding a middle layer just to maintain the same number of layers is unneeded.



  • Only use Metric accounts for something divided by something, avoid A+B formulas:
    •  Metric accounts recalculate at every level so they are great for ratios but end up doing a lot of extra work if just adding data together, instead leverage Custom accounts.
  • Prefix your Custom and Metric accounts:
    • This saves a lot of confusion later when debugging formulas, common prefixes are:
      • C_ for all Custom accounts.
      • M_ for all Metric accounts.
  • Leverage the faster versions of IF and DIV, IFF and DIVF respectively:
    • These functions will reduce the number of evaluations the system does to only those necessary to display the requested data.
  • Use Master Formulas on Custom and GL accounts if the formula is the same for all Levels and Versions (including Actual).
  • Avoid referencing Top Level(+) in formulas:
    • That reference forces the rollup to be recalculated for every level calling on it.
    • Instead create an Assumption account equal to that portion of your formula then reference that Assumption account in the formula.clipboard_e790a4386005481ecf51225f45a8cd625.png
    • This type of formula is most commonly used in allocations, another alternative is to leverage the Allocations Wizard to define the rules as they are tuned for performance.
  • Remember that you can add anything as an account:
    • Anything that is a number or a grouping of other accounts can be an account.
    • If you are looking to create a formula in a report, think through if it might make more sense as a new account then available to all the model.


  • Remove unused dimensions and dimension elements from your model:
    • They both clutter things up and impact model performance.
  • List dimensions vs standard dimensions, list dimensions are best:
    • List dimensions are a flat list of all base level items that allows you to create an unlimited number of roll ups via attributes.clipboard_e86f17cdea8a2c11aa20dac33dc6ad506.png


  • Use folders to organize your versions.
  • Move your current versions to the top of the list to avoid scrolling past years of versions to get to current:
    • TIP:  It is hard to drag items to the top of the plan versions so instead drop them in 2nd position then drag the top one down.
  • Keep your Left Scroll Limit in check as this both reduces the size of the version impacting performance and improves the usability by eliminating the need to keep removing the last 10 years from the sheets:
    • TIP:  You can’t adjust the Left Scroll Limit on the version tagged as Default, so instead make any other version the temporary Default, adjust and save, reset it to be your Default.
  • Leverage Virtual Versions for constant currency reporting:
    • Instead of exporting all your data then importing to another version you can just create a virtual version to combine the data from any version with the exchange rates from another version.
  • Leverage Virtual Versions to reduce report/dashboard maintenance:
    • If you find yourself frequently updating versions in reports, instead setup pointer versions for items like Current Forecast, Prior Forecast and build your reports off those.  Then when you update the Virtual Versions, all of your reports/dashboards are up to date.

Consider letting your system of record define your models structure as Adaptive Insights support meta-data synchronization from the source system(s) via Adaptive Integration (you may not own this module).  With this if you add a new Account, Level, or Dimension element it just shows up in your model.  This is only the best option though if you want to plan at the same level that you capture data in the source system, although you can do a mix of approaches.