© Copyright 1990-2017 P3 Consulting unless otherwise indicated. Please contact us with any questions or comments.

 HyperCube-based Access Control Management System

Innovative solution to handle authorizations of users in enterprise applications: ACMS is the tool used to answer the general question: « Can this user do this action in this context? ».
Or in a more general way: "Does object A has access to object B given context C?"

 Highly customized

In opposition to commonly found solutions, there is no hardcoding of the specific business way of working of the client applications into the internal data structures: no "users", "tasks", "applications", "domains," "scopes" tables in the database repository. This means you don't have to adapt your way of working to the software, but quite the opposite: you adapt HC-ACMS to your needs, which gives the solution a high resilience to your business evolution.

 How customization is achieved

Simple and Abstract Data Model

Based on the concept of geometric Hyper Cube, the data model handles mainly "cubes", "dimensions" and "coordinates" of which relationships are stored in a recursive hyper-tree structure in which each node value is the access: abstain, deny, grant or dynamicaly evaluated

Programming language

All the data manipulation can be done by scripts written in the specific programming language

create cube MYSOLUTION as «te;Main cube»te; Access.abstain.
set current cube MYSOLUTION. create dimension USER_GROUPS as «te;Users and Groups»te; isMandatory.
create dimension APPLICATION_DOMAINS as «te;Applications and Domains»te; isMandatory.
create dimension TASK_ROLES as «te;Task and Roles»te; isMandatory.
create group ROOT of USER_GROUPS.
create group ADMIN of USER_GROUPS.
create user 'root' identifiedBy "${rootPassword}" unlocked expires "31/12/2999".
add coordinate root to ROOT of USER_GROUPS.

NB. The export of data of a cube can be done in the script langauge itself: debugging and backup are easely achieved

More on the scripting language...

Dynamic evaluation of access

In the hyper-tree, the access value can be evaluated dynamically in function of the submitted context. Rule can be written in Java Expression Language or Groovy

Orthogonal definition of Coordinates and Group of Coordinates

In the hyper-cube, the coordinates can be groups, defined either in static, either in dynamic way. Membership rules can be written in Java Expression Language, Groovy or be a simple Regular Expression

Developer hooks

At important points of the code, the system calls possible custom "hooks" (written in Groovy) installed by the client, giving further opportunities to customize specifc operations.


The consultant implementing the solution is in charge of mapping the customer needs to the number of dimensions, their naming and ordering, defining the dynamic rules, etc.

 Open source

For higher resilience and customization

The solution is open source under licencing conditions to give you higher long-term security