Skip to content

Security Package

The Security Package is a prebuilt set of model objects - a cube, its supporting dimensions, a card and the processes that drive them - that adds a front-end UI for configuring model security. It's designed to drop into most instances on a model-by-model basis.

Without it, security is configured object by object through the Gateway. With it, an administrator manages the whole picture from a single screen inside the application: which dimensions are secured, what each group can see within them, which screens each group reaches, and which users belong to which group.

Download

Download the Security Package

The file is named #Security.package. Save it as-is - the leading # is part of the filename and the import expects it.

What the interface covers

The UI is divided into five areas:

AreaPurpose
Model SecurityConfigure which dimensions are secured model-wide.
Group SecurityConfigure which elements of those dimensions each group can see, and which screens each group can reach.
User SecurityAllocate users to groups.
Manage UsersAdd and remove users.
Manage GroupsAdd and remove groups.

The Model Security table, listing each dimension against a Dimension Access column with Yes/No dropdowns

What the package contains

Object typeContents
CubeSecurity
DimensionsApplication, Dimension, Element, Group, Screen, Security Measures, User, Validation
CardSecurity - houses the UI
Processes24 processes that populate the dimensions, save the UI's inputs, and apply them to the model's real security settings

See Security Package Processes for what each process does and how they chain together.

Installing the package

1. Upload and import

  1. Download the package, then upload it to the target instance's file store.
  2. Import it into the target model, selecting all package contents.

See Packages for the general import mechanics.

2. Create the screen

Create a Screen whose page is the Security card, in an appropriate Application within the model.

Create the screen before running setup

Setup reads the model's existing screens into the Screen dimension. Creating the security screen first means it's picked up in that pass - otherwise you'll need to re-run the dimension build before it appears in the UI.

3. Run the setup process

Execute the scripted process Model.Security.Setup.

This must run before anything else in the package is used. It reads the model's existing infrastructure - users, groups, dimensions, applications and screens - into the package's new dimensions, grants every group write access to the model, and gives Admin users an access tag for every application.

Until it has run, the UI has nothing to display and the other processes have nothing to act on.

Using the interface

Once setup is complete, administrators configure security from the screen created in step 2.

The important thing to understand is that editing a table does not change security settings. Saving happens in two distinct stages, and both are required before anything takes effect in the model.

Stage 1 - save the inputs to the cube

Enter the configuration you want into a table. The dashboard registers the edits and offers to save them:

The unsaved changes banner, reading Note: You have unsaved data changes on this dashboard, with Save Data Changes and Revert Data Changes buttons

Save Data Changes writes what you typed into the corresponding cells of the Security cube. At this point the intent is recorded, but the model's actual security is unchanged.

Stage 2 - execute the saved values against the model

After the card refreshes, a Save Changes button appears beneath the table, along with a note that the table's values aren't yet applied:

The Model Security table showing the message The values in this table aren't saved alongside a Save Changes button

Save Changes takes the saved cell values and executes them against the model's real security settings. This is the point at which access actually changes.

Applying several tables at once

Stage 1 can be repeated across as many tables as you like before anything is executed. Saved cube values persist, so you can move between the different areas of the UI - and between screens - without losing them.

When you're ready to apply everything together, execute the process Model.Security.Refresh. It runs every populate, save and execute process in the correct order, so all outstanding changes across all tables are applied to the model in one pass.

Which route to use

Use Save Changes on a table for a single, targeted change. Use Model.Security.Refresh when you've staged edits across several areas, or whenever you want to be certain the model's security matches what the UI is showing.

Managing users and groups

Users and groups are managed from modals rather than tables. Both are reached from the cog button in the UI.

The Manage Groups modal listing existing groups with delete icons and an Add New Group field, with the cog menu showing Model Security, Group Security, Manage Users and Manage Groups

TaskSteps
Add a groupCog → Manage GroupsAdd New Group → enter the name → confirm with the tick.
Delete a groupCog → Manage Groups → trash icon on the group's row.
Add a userCog → Manage UsersAdd New User → enter name and email → confirm with the tick.
Delete a userCog → Manage Users → trash icon on the user's row.

Deleting a group unallocates its users

Users allocated to a deleted group lose that allocation, and with it all access to the model, until they're reallocated to another group.

Refreshing the displayed data

Each table in the card has its own Refresh button. These run the processes that repopulate the table from the model's current state, so the values shown reflect the properties that actually determine access.

Use them when the model has changed outside the UI - a new screen, user or dimension added elsewhere - and the tables need to catch up.