OEG Best Practice: Best practices for model cleanup in Anaplan
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.
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.
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.
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.
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 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.
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
- The size of the model will be curtailed immensely by following all the above steps.
- The performance of the model will be elevated.
- Agile/Accelerated response.
- It helps in analyzing the model.
- Effortless maintenance.
- Eliminate duplication.
- Avoid security breach, meaning only respective people can access the model.
- 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.2
@JaredDolich Yep, that's a good idea!!1
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.2
Few things from my side.
Contents Cleanup - Admins need to make sure that the "Enable Access to Hidden Content" is disabled otherwise End users have the ability to see the hidden content.
Filter Modules - Most of us do not pay attention to filter modules when defining access for the roles. We don't provide read/write access to these modules when these modules are being used as a filter in the reporting modules resulting in No access to the grid on the dashboard.
Notes - This feature is seldom used whereas it should be used all the times. It gives a clear idea why the Process/Actions/Modules/Dashboards/Lists etc was created & the purpose of having it in the model - provided Notes are written clear and concise.
List Subsets - As @JaredDolich pointed out already we need to have a close look on the list subsets as well. List subsets have a direct impact on the model size. List Subsets are not required if it contains more than 75% of the the list items hence can be get ridden of. Also if the list Subsets contain only one list item that too can be taken care of.
Functional Areas - Having modules arranged in the functional areas is again useful for the model clean up.
Overall nice post. Proud of you & keep shining!
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.1
Excellent article! I thoroughly appreciate this checklist.1