| Previous | Next |
| WCM_E_EXPRESSIONNOTFOUND | WCM_E_USERALREADYREGISTERED |
WCM_E_SUBSTITUTIONNOTFOUND
WCM_E_SUBSTITUTIONNOTFOUND is the failure HRESULT 0x80220011 (signed decimal -2145255407, unsigned decimal 2149711889). Its severity bit is 1, facility is 34 (FACILITY_STATE_MANAGEMENT), and the facility-specific code field is 0x0011.
AllStat records the Windows SDK description as “Substitution is not defined.”
Interpretation without overreach
A named substitution cannot be resolved. The operation reached manifest expansion where a placeholder or reusable substitution must be bound before validation. The first branch to test is whether the substitution table was not included in the source package; keep that separate from the possibility that a placeholder name changed without updating consumers.
SMI object or metadata boundary
At this boundary, capture the unresolved substitution name and source location, then correlate it with all substitution declarations visible in the compilation scope. Assign ownership only after checking package/merge order and conditional preprocessing output.
Common origins
- the substitution table was not included in the source package
- a placeholder name changed without updating consumers
- scope rules place the definition outside the requesting metadata unit
- a build-time variable was expected but the tool emitted an unresolved SMI substitution
Useful artifacts
- the unresolved substitution name and source location
- all substitution declarations visible in the compilation scope
- package/merge order and conditional preprocessing output
- target architecture or language branches that select different substitutions
- the final manifest passed to SMI rather than the template source alone
How to isolate the defect
- supply the missing definition in the correct scope
- remove stale placeholder usage from generated metadata
- make architecture/language branches produce complete substitution sets
- validate the expanded manifest as an artifact
- add packaging tests that reject unresolved substitutions
When another attempt is justified
Retry after definition or scope correction. Supplying a setting value does not replace missing manifest substitution metadata.
Related result codes
WCM_E_EXPRESSIONNOTFOUND concerns an executable/conditional expression symbol; SUBSTITUTIONNOTFOUND concerns an expansion binding.
Example from an offline image
An architecture-specific package defines a path substitution only for x64, but the neutral manifest references it for all targets. The x86 compile cannot resolve the placeholder.
Developer and administrator notes
For operational telemetry, retain package/merge order and conditional preprocessing output; also record target architecture or language branches that select different substitutions. Preserve a redacted summary of the final manifest passed to SMI rather than the template source alone; use a cryptographic hash when that evidence is a file, stream, or generated artifact.
Official Microsoft references.
- Microsoft: SMI error and success constants.
- Microsoft: Settings Management Infrastructure API.
- Microsoft: SMI interfaces.
- Microsoft: ISettingsContext::Deserialize.
- Microsoft: ISettingsResult::GetLine.
Looking for a different code? Search another status or error code.
