Canonical dimensions
A canonical dimension is the single agreed-upon list Novaplan plans and reports against, independent of what any one source calls things. Each source then maps its raw values onto that list, so a department named one way in your HRIS and another way in your ledger still rolls up to the same canonical department.Raw to canonical mapping
1
Define the canonical list
Maintain the canonical values for each dimension. This is the list everything rolls up to.
2
Map raw source values
For each source, map its raw values (a CRM stage, a source department name, a ledger entity)
onto the canonical value. Mappings are stored in a registry, not hard-coded, so adding a
source value is a configuration change, not an engineering one.
3
Reconcile entity names to IDs
External names (CRM accounts, HiBob employees, ledger vendors) reconcile to canonical IDs
through a name-to-ID lookup that tries an exact ID match first, then a mapped name, then a
confident fuzzy match. This is what keeps identity stable across syncs.
Identity resolves by ID, not by name. When a source renames a department or vendor, the mapping
keeps your hierarchy stable instead of scrambling it. Each data page links back here through a
“Manage mappings” entry point.
Common questions
A new source value is not rolling up
A new source value is not rolling up
It is unmapped. Add the raw-to-canonical mapping for that source, then re-run curation. Until
it is mapped, the value will not roll up to a canonical dimension.
Two sources call the same thing differently
Two sources call the same thing differently
Map both raw values onto the same canonical value. They then reconcile to one ID and roll up
together everywhere.
Troubleshooting
- A filter or pivot shows a value twice: two raw values are reconciling to two IDs. Map both onto one canonical value.
- An account is missing from a report: confirm its source-to-canonical account mapping in GL Mapping.
- Numbers do not reconcile after a rename: the rename should be absorbed by the ID-based mapping. If it is not, the source value is likely mapped by name; correct the mapping.