I am trying to enable the user to give selective access on a list via dashboard. I published the list to the dashboard and can clearly see the "Read" and "Write" columns on the dashboards, however if I save the dashboard and close and reopen it , the columns of "Read" and "Write" are not visible. Can somebody explain what is the issue here? Is there any workarounds for the same as one can neither import into those columns nor can one apply formula to them.
This going to be a long post (might be a record), but the short answer is you have to create an action to write into the User list. When you do this, you have to specify the Read, Write, and if you are removing access, the None. Say your list is L3 Projects, you will have to specify L3 Projects Read, L3 Projects Write, and L3 Projects None. To do that, follow these instructions.
Fake Users - you will need this to dimensionalize the input
You can either use the L3 Capital Projects for input or what I did is use the Capital Projects Flat list. Either way will work, but the flat list will be smaller (especially if L3 rolls up to L2 which rolls up to L1), but is a bit more complicated as you have to link to the L3 member.
So this example will be on the Projects Flat list. Create a module named SYS Fake Users which is dimensionalized by Users. Create 4 line items: In Fake Users List (formatted as Fake Users), Load? (formatted as boolean), Anaplan Calcs (formatted as No Data - this is used as a spacer), and User txt (formatted as Text).
In Fake Users List: FINDITEM(Fake Users, User txt)
Load?: ISBLANK(In Fake Users LIst)
Anaplan Calcs: nothing
User Txt: NAME(ITEM(Users))
Create an action with a filter on Load?
The results are everyone that that has access to the model, but are yet to be loaded into Fake Users. Only show the line item Load? and User Txt.
Rename the action to Build Fake Users
Create a SYS Capital Projects Flat Properties module. Since I am using a numbered list, I need to get the "internal" name of the Capital Project. Create the following line items:
Code of Capital Projects (text): CODE(ITEM(Capital Projects Flat))
L3 Link (L3 Capital Projects): FINDITEM('L3 Capital Projects', Code of Capital Projects)
Name of L3: (text): NAME('L3 Link')
L2 Link (formatted as L2): PARENT('L3 Link')
L2 Link (formatted as L1):PARENT('L2 Link')
Create a module dimensionalized by Capital Projects Flat and Fake Users. You have to user Fake Users because you will not have access to everyone. Create the following line items with the associated formulas:
User: (boolean) - IF Write OR Read OR ISNOTBLANK('L3 Capital Projects None') THEN ITEM(Fake Users) ELSE BLANK
Write: (boolean) -
Anaplan Calcs: (formatted as None) -
L3 Capital Projects Write (formatted as Text): IF Write THEN SYS Capital Projects Flat Properties.'Name of L3' ELSE BLANK
L3 Capital Projects Read (formatted as Text): IF Write AND Read THEN BLANK ELSE IF Read THEN SYS Capital Projects Flat Properties.'Name of L3' ELSE BLANK
L3 Capital Projects Non (formatted as Text): IF NOT Write AND Previous Write OR NOT Read AND Previous Read THEN SYS Capital Projects Flat Properties.'Name of L3' ELSE BLANK
Load? (formatted as boolean): Write <> Previous Write OR Read <> Previous Read AND ISNOTBLANK(User) OR ISNOTBLANK('L3 Capital Projects None')
Clear Area: formatted as None
Previous Write (formatted as boolean):
Previous Read (formatted as boolean):
Create a view: Load to Users
Change the pivot where you have Capital Projects and Fake Users on the Rows, showing the following line items: User, L3 Capital Projects Read, L3 Capital Projects Write, L3 Capital Projects None, and Load?
Filter is defined as:
Create another view: Previous Read Write Selections
Line items to show: Read and Write
Filter is defined as:
Create a third view, called User Access db which will be published to the dashboard.
Go to the Users area and click Import.
Select the view User Access - Capital Projects.Load to Users. Fill in the blanks with the appropriate fields.
Rename the action to: Build Read Write Security
Create another action which will write the current Write and Read selections to the Previous Write and Previous Read line items. This will be based on the view User Access - Capital Projects.Previous Read Write Selections.
Rename the actions to:
Build Read Write Security
Build Read Write Security
Create a new Process is named Update Security with the following actions:
Publish this to a new dashboard as well as the view you created earlier (User Access db). I also created a "Refresh Projects" button that refreshes the Capital Projects based on the selection, but that will be a different post.
Thank you so much for providing such a detailed solution. It worked for me. Earlier I had been trying to import into the column "<listname> Write" using textlist but it occurred to me that a comma separated list of list items won't be imported into that columns.