OEG Best Practice: Best practices for model cleanup in Anaplan

edited February 2023 in Best Practices

This article helps everyone with the suggested cleanup activities of existing models where Anaplan best practices weren’t adhered to from the beginning. Please follow this and develop a more user-friendly model.

User access

Begin by revisiting all the tabs in the User Access setting and set appropriate access by roles. A common mistake is granting full access to all roles, even though a specific role shouldn't have access to this complete level of items.

  • Users tab: Revise the access of each user and set ‘No Access’ if that user is no longer using the model. Setting ‘No Access’ will reduce the cell count of a module where the User list is being used.
  • Modules tab: Grant proper access as per each role in module settings. For instance, if the role doesn’t have to do any manual input to a module, then mark it as 'Read'.
  • List tab: Give access only to the roles which need to add/remove/edit items in that list. It is best practice not to give access to the list for all the roles. This not only reduces the risk of accidental corruption but also is more efficient as the system doesn't have to pre-allocate memory for the next block of "inserts" on the list.
  • Actions: This is the section where most of the people are inattentive to maintain the access restriction. It is always the best practice to give access to the roles as per the need.

Summary turnoff

Turning off the summary of a line item can make a huge difference, especially in the case of a hierarchical list used as a dimension in a module. Simple ways to find whether to turn it off include the following:

  • Reference non-blank: If the referenced line item applies to the dimension (*Parent level*), then you cannot turn it off. If the referencing line item has some other dimension and if the aggregated values are not being used, then mark the summary as ‘None’. All you need to consider is whether the line item’s aggregated value is being used in any of the calculations in top-level items.
  • Reference blank: Though the reference is blank, the line item could have been used in a dashboard as a User Interface. Before marking it as none, make sure the line item is not published or the summary value is not shown in the dashboard.

Create system modules

Creating system modules is one of the best practices in Anaplan, and you can learn more about it while working on the Level 2 certification. If you have properties for the existing lists, switch that to line items by creating system modules. Unless the property is a Display name or is being used in any of the dependent drop-downs or exports, delete and recreate it as a line item. Things to keep in mind before you do so for the existing lists include the following: 

  • Create a system module and bring all the properties from the list as line items (except Display name, Dependent drop-down and export properties)
  • Create import actions to update the line items. Remember to incorporate the action in the respective process
  • Change all the references from properties to System module line items
  • Then feel free to delete all the unwanted properties

Benefits of system modules

  • Increases the performance of the model
  • Helps to track the historical changes

Follow the nomenclature

Naming a list, a module, or even an action is more decisive. This would be helpful in the future for the reference as well as helping the end-user to ramp up quickly with the model design.

  • For a numbered list, the naming convention should end with “#” for easy reference.
  • Naming a module should define the purpose within a few words such as Emp01, Emp02, etc.
  • Name an action based on the sequence that action is placed in the process like 1. Import into Emp list, 2. Import into Emp module etc. We advocate using the word 'Build' when importing to a list and 'Load' when loading a file to the system.

Note: Turn off module names in the dashboards.

Remove obsolete/redundant items

Review the model multiple times and try to pull out all the lists, modules, actions or even dashboards that are obsolete. Then try to find the line items which are obsolete or redundant and delete them from the model. Be very cautious before deleting a line item that doesn't have 'Referenced By' reference. This is because a line item can be used as a 'DCA' or a 'Filter' or in a 'Delete action', and unfortunately we don't have the functionality to see it straightforward. In these situations, it is best to use the 'Notes' field.

Filter modules

Creating filter modules will aid model builders with the line items that are being used as a filter because Anaplan doesn’t give you this information. Things to keep in mind before you do this include the following:

  • Audit the dashboards and the saved views to find out the line items that are being used as a filter.
  • Create similar line items in a separate module with the appropriate dimension.
  • The formula used in the filter line items should always refer to the selection modules and system modules, not the calculation/interface modules.
  • It is always advisable to use Boolean format for filter line items as it consumes much less memory space.

Selection module 

The best methodology is to have only one selection module globally with 'Users' list as a dimension. If there are a lot of selection modules, try to merge them in one single module and use that

Import actions

  • Import actions should always be created by using either file in case of 'Data Hub' or 'Saved' view. Do not use list, module, or file (in case of Spoke model) as a source at any point in time. If there is an action in the spoke model that is using the flat file as a source, then load it into the data hub and from the data hub into your spoke model.
  • Cleaning out the 'Import Data Sources' is key as well. If there isn’t anything in the 'Imports' column under 'Import Data Sources' tab, wipe it out as that means there aren’t any actions tied to it.

Dynamic cell access 

It is a good practice to have a separate module for 'Dynamic Cell Access' (DCA). One module with the same dimensionality is sufficient to maintain the line items and can be referred to as DCA in the respective modules. It will be helpful to check the DCA line items in the future if all are at one place.

Contents cleanup

The first impression is the best impression. 'Contents' tab is the zone where the end-user tries to navigate to other worksheets/reports. Try to keep it clean as much as possible. Best practice recommends hiding modules and saved views. Show only the dashboards and their respective functional areas in the 'Contents' tab.

Benefits of model cleanup

  1. The size of the model will be curtailed immensely by following all the above steps.
  2. The performance of the model will be elevated.
  3. Agile/Accelerated response.
  4. It helps in analyzing the model.
  5. Effortless maintenance.
  6. Eliminate duplication.
  7. Avoid security breach, meaning only respective people can access the model.
  8. Helps with maintenance and scalability.

Author Kavin Lohanathan .



  • Thanks @kavinkumar. Excellent article and timely - this is when many models need to be annualized.

    I particularly like the idea of cleaning up those actions. I've seen models with hundreds of unused and undocumented actions - really makes it hard to find the ones that are really being used.

    Do you think it's also a good time to revisit those list subsets?

    Thanks for pulling this all together.

  • @JaredDolich Yep, that's a good idea!!

  • Thanks @kavinkumar.

    Good article on Model Optimization. Nicely written in simple words. Keep up the good work. Looking forward for more such articles which will be helpful for the Community. 

  • Excellent article, @kavinkumar !

    It's always a good idea to read theThe Planual  to get up to date with the current best practices (you have mentioned a lot here)

    In this way, a model builder can scope a development roadmap and ultimately improve the user experience of their model.



  • Thanks, 

    Along with what @CallumW mentioned, specifically, I avoid list subsets as much as possible, and instead use booleans in a system module to denote true/false for list members that are categorized for a purpose 

    Enjoy the day 

  • Excellent article! I thoroughly appreciate this checklist. 

  • DeepakK

    Great article!

    Can you clarify what you mean here?

    "Note: Turn off module names in the dashboards."

  • Panji

    @DeepakK I think is that if we used a classic dashboard,

    in the classic dashboard when we publish a module, the name of the module will show on that