TEST-ALM-001 / SOURCE CONTROLLED
Dataverse ALM drift evidence pack
Use when development, test and production do not behave alike even though the expected managed solution version appears to be deployed.
Environment and release inventory
| FIELD | CAPTURE | ACCEPTANCE |
|---|---|---|
| Environment | Name, ID, type, region, managed status | Target identity confirmed |
| Solution | Unique name, publisher, managed state, version | Matches approved artifact |
| Artifact | Build/run ID, checksum, source commit, retained file | Same artifact passed test |
| Deployment | Pipeline host, stage/run, identity, time, notes | History retained across hosts |
| Journey | App, table, form, rule, flow, integration | All dependencies enumerated |
Component-layer evidence
| COMPONENT | TOP LAYER | EXPECTED SOURCE | DISPOSITION |
|---|---|---|---|
| Stable type + unique ID | Managed/unmanaged, solution, version, publisher | Artifact component/version | Keep, reproduce, remove or investigate |
- Capture each changed property with the component ID, source layer and timestamp. The presence of an active layer alone is incomplete.
- Check later managed solutions, patches/upgrades and shared-component ownership.
- Classify fallback-form and other platform-created layers separately from direct edits.
- Preserve the active definition before approved removal.
Target-configuration inventory
| TYPE | CAPTURE | NEGATIVE CHECK |
|---|---|---|
| Environment variable | Schema name, type, default/current value state, consumer, owner | Old endpoint/value is not resolved |
| Connection reference | Schema name, connector, bound connection, consumers | No stale or unintended binding |
| Connection | Owner/service principal, sharing, auth health | Former maker cannot be required |
| Configuration data | Table/key, source, count/hash, migration route | Missing/duplicate rows detected |
| Security | Roles, teams, app access, row ownership | Prohibited persona remains denied |
Drift classification and decision record
- Describe the observed behavior and operational consequence.
- Link each observation to artifact, layer, target binding, data/security or unknown.
- Record competing explanations and the evidence that excludes each one.
- Classify changes as authorised hotfix, accidental edit, platform-generated layer, release defect, target-configuration mismatch, missing data/security or accepted difference.
- Name the repair source, approver, rollback and expiry for every retained difference.
Controlled repair sequence
- Reproduce the accepted intent in the development source.
- Review dependencies, solution overlap and publisher ownership.
- Run Solution Checker and component tests; record their limits.
- Build, checksum, retain and promote one versioned managed artifact.
- Supply approved environment values and connection bindings.
- Migrate/reconcile required configuration rows through a separate controlled path.
- After proving replacement, remove only the attributed active layer.
- Publish as required and rerun the full acceptance matrix.
Positive and negative acceptance matrix
| TEST | EXPECTED | EVIDENCE |
|---|---|---|
| Primary business journey | Expected rule and outcome | Persona, record, timestamp |
| Exception/rejection | Controlled failure; no hidden side effect | Run and target record |
| Old endpoint/value | Never selected | Resolved configuration/log |
| Former connection owner | Not required | Connection/reference inventory |
| Duplicate/retry | One authoritative outcome | Business key reconciliation |
| Prohibited persona | Read/update denied | Negative access result |
| Fresh session | Same behavior after publish/cache | New-session result |
| Layer reinspection | Expected component is effective | Post-release layer capture |
Release evidence and operating cadence
Retain the source commit, exact artifact and checksum; checker results; component/dependency manifest; layer captures; environment-value and connection-binding manifest; controlled configuration-data result; deployment run; positive/negative tests; approval; rollback; residual differences and expiry. Redact personal data and secrets.
- Every release: pre/post layer and binding comparison for changed high-risk components.
- Monthly: connection health, owner/service-principal and failed deployment review.
- Quarterly: broader target drift, solution overlap and exception review.
- After emergency change: back-port, managed release, layer closure and evidence review.
Limits
This pack covers the sampled components, business rules, security paths and configuration records listed in the capture register. Untested components and Dataverse data rows remain outside the result. Solution Checker is static analysis and does not know all target state. A managed deployment does not include ordinary Dataverse table data. Blocking unmanaged customisations can reduce future drift only after current exceptions are reconciled. Third-party comparison or removal tools require separate security review, backup and component-level authority.