ParitySync: Cross-System Dimension Alignment
How ParitySync detects and resolves dimension gaps between source systems and planning targets so your metadata stays in sync.
The Dimension Gap Problem
Your source systems and your planning tools do not share the same dimension lists. NetSuite has 347 cost centers. Adaptive Planning has 312. Workday has a department called Engineering - Platform that Pigment calls ENG_PLAT. Stripe bills against product codes that do not exist as accounts in your planning model.
These gaps are not edge cases -- they are the default state of any multi-system finance stack. Every time someone adds a cost center in the ERP, creates a new department in HRIS, or launches a product in the billing system, a gap opens between source and target. Left unmanaged, these gaps cause sync failures, orphan data, and hours of manual reconciliation.
What ParitySync Does
ParitySync is VersionForge's metadata alignment engine. It runs before each data sync to ensure that every dimension member referenced in the source data has a valid destination in the target system.
The process has three phases:
1. Inventory
ParitySync pulls the current dimension member lists from both the source and target systems. For each configured dimension (cost centers, departments, accounts, entities, products), it builds a complete inventory of what exists on each side.
2. Compare
The alignment engine compares source and target inventories to identify gaps:
- Source-only members: Dimension values that exist in the source extraction but have no corresponding member in the target. If left unresolved, rows referencing these members will fail to load.
- Target-only members: Dimension values that exist in the target but are not referenced by any source data. These may be stale members that should be deactivated or planned items that do not yet have source transactions.
- Mismatches: Members that exist on both sides but with different names, codes, or hierarchy positions. These need alias mappings or updates.
3. Resolve
For each gap, ParitySync applies the configured resolution strategy:
- Auto-create -- Add the missing member to the target system automatically. Used when your target should mirror the source exactly.
- Map -- Create an alias that maps the source member to an existing target member with a different name or code.
- Skip -- Ignore the gap for this sync cycle. Used for members that are expected to be absent (e.g., test data in the source).
- Flag -- Add the gap to the review queue for human decision. Used when the correct resolution is ambiguous.
ParitySync runs as a pre-sync step. If critical gaps remain unresolved (no mapping, no auto-create, no skip), the data sync does not proceed. This prevents partial loads where some rows succeed and others fail due to missing dimension targets.
What You See in the UI
The ParitySync dashboard shows a dimension-by-dimension alignment summary:
| Dimension | Source Members | Target Members | Gaps | Status | |-----------|---------------|----------------|------|--------| | Cost Center | 347 | 345 | 2 source-only | Action needed | | Department | 89 | 89 | 0 | Aligned | | Account | 412 | 410 | 2 source-only | Action needed | | Entity | 15 | 15 | 0 | Aligned |
Clicking into a dimension shows the individual gaps, their proposed resolution, and a one-click action to approve, modify, or override the resolution.
How ParitySync Fits the Pipeline
ParitySync runs after extraction validation and before the diff-and-transform step. This ordering ensures that dimension metadata is aligned before VersionForge attempts to map and load transactional data. If alignment fails, the pipeline halts cleanly -- your target system is never left in an inconsistent state with orphan transaction rows referencing dimension members that do not exist.
For detailed configuration of matching rules and resolution strategies, see Dimension Matching Rules and Gap Resolution Strategies.