Case study: the load is the easy part
Context
Solize USA is hiring a Planisware Configurator / Developer for an automotive client site at 7015 Edward Cole Boulevard, Warren, Michigan. The posting (opens in a new tab) describes a move from internally developed planning systems to a SaaS Planisware platform, carrying vehicle engineering timing plans, product development, portfolio and project management, resource planning, and PMO processes. The posting names the client as GM.
GM's own Vehicle Program Planner posting (opens in a new tab) describes a Program Plan Development Group which builds and maintains the timing backbone for vehicle programs. Planners follow the Global Development Process (GxDP), serve Program Execution Teams (PETs), apply critical path methodology, and maintain timing templates, standards, and tools. This is the only public description of GM timing plans I found. The only public link between GM and Planisware I found is the Solize posting itself.
Planisware Enterprise, formerly OPX2, began inside Thales, and Planisware was created in 1996. Public product pages show phase gate meetings, program management across vehicle platforms, and EV and SDV program cycles. Dana, a drivetrain supplier, picked Planisware Enterprise as its program-wide PPM tool in 2025.
A SaaS migration means every timing plan leaves one system and lands in another. The load runs once. The review meetings run every week after.
What breaks in plan migrations, and how I expect each to show up here
My catalog migrations (Shopify and WooCommerce, catalogs of 14,000+ SKUs, redirect maps) taught one lesson. The load is the easy part. The expensive part arrives in the first review meeting, when the loaded data says something different from what the owner believes. Each expectation below names the rule which tests the expectation, then the evidence from the sample run. None of this describes GM data. Sprint 0 proves or disproves each one on a real export.
- Fig 3.1
A gate goes missing, or two gates swap order
BLOCKGate milestones live in one table and gate order lives in a template. One export without the other drops a gate or reverses two dates.
R1 Gate sequence integrity, sample data 2 findings. Example: G2 is dated 2028-01-04, on or after G3 at 2027-09-14. Read the rule
- Fig 3.2
A successor starts before its predecessor finishes
BLOCKLegacy tools often store dates and links in separate exports. Dates edited after the links were drawn break the logic, and a loop stops any scheduler.
R2 Dependency logic, sample data 6 findings. Example: CDR-A33 sits inside a dependency loop. Read the rule
- Fig 3.3
A milestone lands on a Saturday or a holiday
REVIEWA tool which stored calendar days moves dates without a working calendar. The row loads, and the date needs a decision.
R3 Working calendar, sample data 4 findings. Example: Prototype release lands on 2027-06-05, Saturday. Read the rule
- Fig 3.4
Resource codes and cost centers miss the master lists
BLOCKHand-typed codes drift: a letter O for a zero, a retired cost center. Unknown keys fail the load or land hours on nobody.
R4 Key reconciliation, sample data 3 findings. Example: Assignment BRC-AS007 uses resource code RES-0O7, which is not in the resource master. Read the rule
- Fig 3.5
One milestone, four spellings
REVIEW"SOP", "Start of Production", "S.O.P.", "SoP". Every report which groups by name splits the same milestone into four rows.
R5 Naming variants, sample data 3 findings. Example: "design freeze" is a variant of "Design freeze". Read the rule
- Fig 3.6
A resource booked above capacity
REVIEWSpreadsheets add hours without a capacity check. The new platform shows the overload on day one.
R6 Over-allocation, sample data 3 findings. Example: RES-004 carries 203 h against 150 h capacity in 2027-09 (135 percent). Read the rule
- Fig 3.7
A date drifts from baseline with no change record
REVIEWSlips approved in a meeting and never logged look like unapproved drift after the load.
R7 Baseline drift, sample data 3 findings. Example: First part shipped sits 18 days after its baseline 2027-12-17, with no change record. Read the rule
- Fig 3.8
A parent budget disagrees with its children
BLOCKRollups typed by hand go stale when a child budget changes. Portfolio totals then disagree with program totals.
R8 Financial rollup, sample data 3 findings. Example: BRC-W20 budget 1,990,000 differs from its children total 2,015,000 by -25,000. Read the rule
- Fig 3.9
Activities without a parent WBS node
BLOCKA renamed or deleted WBS node leaves its activities with no cost owner.
R9 Orphans, sample data 2 findings. Example: BRC-A30 Software release 2 points to WBS BRC-W99, which does not exist. Read the rule
- Fig 3.10
Required fields left empty
BLOCKThe loader either rejects the row, or accepts the row with a default nobody chose. The second case costs more.
R10 Required fields for load, sample data 2 findings. Example: activity CDR-A40 has no finishDate (legacy column finish_dt). Read the rule
- Fig 3.11
dd/mm/yyyy read as mm/dd/yyyy
Every day from 1 to 12 swaps with the month, without an error. Days above 12 fail to parse. One wrong transform on one column moves hundreds of dates.
Tested by the Mapping view on sheet 02. Switch
ms_dttodateMDY, run the check, and R7 and R10 fill the ledger. Open the mapping
Solution: a pre-load check with a gate
Redline sits between the legacy export and the Planisware load. Six parts, each one on sheet 02. Redline is not a Planisware connector, not a replacement for Planisware's own import validation, and not a claim about GM's data.
Map
Each legacy column maps to a target field with a transform and a required flag. 34 mapping rows today. The mapping table is the specification the PMO signs.
Rules
10 rules, each written in TypeScript and again in SQL. A unit test runs both on the same tables and fails on any difference, so the SQL a reviewer reads is the logic the check runs.
Ledger
31 findings across 566 records. Each one names the record, the evidence, and a proposed fix. Status and notes stay with the finding.
Gate
Any open BLOCK holds the load. Today: Program Alder REVIEW, Program Birch BLOCK, Program Cedar BLOCK.
UAT
The rules write the test plan: 20 scenarios, a positive and a negative per rule. The plan changes when a rule changes, so the two never drift apart.
Drift watch
During the parallel run a weekly diff compares the legacy tool with the loaded plan. Sample: 5 dates moved, the largest by 12 days.
| Finding | Severity | Message |
|---|---|---|
| R1-02 | BLOCK | Program Birch has no G4 Pre-production build milestone. |
| R2-04 | BLOCK | BRC-A07 starts 2027-03-12, before BRC-A06 finishes 2027-03-18 plus 2 days lag. |
| R2-05 | BLOCK | BRC-A12 starts 2027-07-12, before BRC-A11 finishes 2027-07-16 plus 3 days lag. |
Measurement plan
Sample values come from the live run. Values marked as your session come from the edits made in this browser on sheet 02. Targets are proposals for a real load, to confirm with the PMO in sprint 0. None of them is a result.
| KPI | How measured | Sample value | Proposed target |
|---|---|---|---|
| Blockers per 100 records | Open BLOCK findings divided by records checked, at first run and after fixes | 3.2 initial, 3.2 now | 0 before the production load |
| Programs READY of total | Gate verdict per program | 0 of 3 | All programs in the wave before cutover |
| Time from first finding worked to READY | Session timing: first status change to an overall READY gate | Not reached in your session | Set from the sprint 1 dry run, then cut per wave |
| UAT scenarios generated and passed | Scenario status on the Rules view | 0 of 20 passed | All passed before sign-off |
| Drift per week in the parallel run | Changed dates and largest shift, legacy against loaded | 5 changed, max 12 days | Every change explained by a change record |
| Rework rate | Findings reopened after Fixed or Accepted | 0 reopened, 0% of findings, your session | Under 5% per wave |
Gate today: All programsBLOCK
Limits
- Not run on a Planisware instance. No Planisware account was used to build this.
- Target field names follow common project portfolio objects, not a confirmed Planisware schema.
- Sample data only. Programs, gates, codes, and roles are invented. The gate catalog is illustrative, not any OEM's process.
- The ten rules are a starting catalog. Sprint 0 confirms, drops, or adds rules with the client.
- Status edits live in your browser. A production version keeps them in a shared store with an audit trail.
Sources
Public pages, accessed 2026-10-22.
- Planisware Configurator / Developer, Automotive Product Development, Solize USA (Indeed) (opens in a new tab)The role, the Warren, MI work location, and the move from in-house planning systems to a SaaS Planisware platform.
- Vehicle Program Planner, JR-202609691, General Motors careers (opens in a new tab)Program Plan Development Group, the Global Development Process (GxDP), Program Execution Teams (PETs), critical path methodology, timing templates.
- OPX2, Planisware glossary (opens in a new tab)OPX2 was the former name of Planisware Enterprise, first developed within Thales. Planisware was created in 1996.
- NPD Mini-Series Episode 1: Stage and Gate, Planisware (opens in a new tab)Gate meetings and out-of-bounds conditions at a gate in Planisware Enterprise.
- Automotive, Planisware (opens in a new tab)OEMs and suppliers, unified program management, EV and SDV program cycles.
- Dana Selects Planisware for Enterprise-Wide Program Management (BusinessWire, July 29, 2025) (opens in a new tab)An automotive supplier choosing Planisware Enterprise as its program-wide PPM tool.
- Planisware Academy training FAQ (opens in a new tab)Four certification levels. Training plans open to customers and partners, with a pre-registration form for others, subject to Planisware approval.
- Planisware Enterprise Administrator posting, Cognizant careers (opens in a new tab)Pairs Planisware scripting (Formula Language) with SQL, Power BI, JavaScript, HTML, and CSS.