Udostępnij za pośrednictwem


DCM Error for Invalid or Inconsistent Data

I created a relatively simple Configuration Manager 2007 Desired Configuration Management (DCM) configuration baseline with twenty configuration items (CIs) each with a handful of settings.  In trying to move it from a development environment into production, the baseline would fail to import on the first page of the wizard with the following error:

The following file(s) contain invalid or inconsistent data.
Possible causes could be:
    Malformed xml data.
    Invalid schema.
    References to items not in the system or cab file.
    Circular references among items in the cab file.
MyBaseline.cab - The cab file references missing content or contains a circular reference.

I found some other references to this error when using truly custom XML, but this content was generated using the DCM interface.  Both development and production environments are assumed to be identical (more on that later).

I extracted the XML from the cabinet and used the DCM Model Verification Tool from the ConfigMgr Toolkit.  Two of the twenty CIs contained the following fatal error:

<Error Severity="6" Fatal="True" Path="/tns:DesiredConfigurationDigest[1]/tns:BusinessPolicy[1]/tns:Parts[1]/tns:File[4]/tns:PropertyRules[1]/tns:DateModified[1]/tns:Rule[1]">[ValidRuleSemantics] This rule only takes 1 argument.</Error>

and four of them had non-fatal warnings similar to the following:

<Warning Severity="1" Fatal="False" Path="/tns:DesiredConfigurationDigest[1]/tns:BusinessPolicy[1]/tns:Parts[1]/tns:File[4]/tns:PropertyRules[1]/tns:ProductName[1]/tns:Rule[1]">[ValidRuleSemantics] Potential list operand specified with unary operator.</Warning>

I tried modifying the CI XML in an effort to remove the errors and warnings, but the validity of the XML turned out to be a red herring.  On a tip from Kevin Myrup, I removed the software update CIs in the baseline, exported it again and was then able to import with no errors.  As it turned out the two environments were not identical, the specified software updates were not synchronized and available in the production environment, thus the errors.  According to Kevin if the updates are available at the target site then the baseline will import with the software update CIs included.

An interesting side note: while troubleshooting this I discovered that when importing a baseline the ConfigMgr Console will cache the .CAB at %AppData%\Local\Microsoft\SCCM\DCM\Import\{<GUID>}-CabCache\<ImportFile>.cab and extract all of the .XML and .RESX files contained within at %AppData%\Local\Microsoft\SCCM\DCM\Import\{<GUID>}\<ImportFile>.cab\*.