Tips and Tricks while using Analytic Application for Planning

Would like to share few tips and tricks while utilizing Analytic Application in SAC for planning scenarios. This helps us to improve the performance and also helps to build a flexible solution in Analytics Application.

Standalone model – Master Data Model

  • Consider a scenario where we use Project information data / any Business information that needs more flexibility to get updated through Application Designer later point, post booking project values on the mandatory dimensions through input template in a story.
  • Defining appropriate columns as properties for dimensions help us to keep the Planning Model light weight. This will help us to avoid booking everything on unassigned for all other dimensions not listed in the input table template.
  • Apart from the original planning model, we can leverage a blank model with public dimensions (Add existing Dimensions) apart from free hand entries for both Dimensions and properties and refer this pre entered values in drop downs/input fields while entering other information through Application Designer.


This will help us to have a pre listed entries allowing us to have our planning model light weight. The entries can be easily maintained by users if we need to add more entries.

Dynamic Security in Analytic Designer to view/update information

For a requirement in Analytics Application design, business managers wanted to use the application to update the properties of the project information. The application should allow the respective project managers to enter all the information except two fields for which we need to allow only the Project Directors.


Analytic Application Security

This can be achieved via utilizing the example piece of code below.

/* Getting Project Managers from Master Data Model*/ var pm = TBL_MASTERDATA.getDataSource().getMembers("PMs"); for (var p=0; pp< pm.length; p++) { var pm_str = pm_str + ";" + pm[p].description; } /* Getting Directors list from Master Data Model*/ var directors = TBL_MASTERDATA.getDataSource().getMembers("Directors"); for (var d=0; d< directors.length; d++) { var directors_str = directors_str + ";" + directors[d].description;} //To get the user logged in currently var curr_user = Application.getUserInfo().displayName; //The below code is to change the User info display name to the format in the master model and compare var curr_user_parsed = curr_user.slice(curr_user.indexOf(" ")+1,curr_user.length)+", "+curr_user.slice(0,curr_user.indexOf(" ")); var pm_flag = pm_str.indexOf(curr_user_parsed); var directors_flag = directors_str.indexOf(curr_user_parsed); if(directors_flag===-1) //if the session user is not a director { INPFLD_STATUS.setEnabled(false); INPFLD_ STATUS.setVisible(true); DD1_STATUS.setVisible(false); } else { INPFLD_STATUS.setEnabled(false); INPFLD_STATUS.setVisible(false); DD1_ STATUS.setVisible(true); }

There by we can keep the planning model light weight by segregating few dimensions in Stand alone master data model and utilize the code flexibility to swap the components based on application security.

Please feel free to comment your thoughts on this.