Specification import fails with 'Invalid CAD structure' error

We’re hitting a blocking issue importing multi-level CAD assemblies through the specification management module. The CAD Import Wizard fails with ‘Invalid CAD structure’ error during validation phase.

Our assemblies have 4-5 levels deep with custom attributes mapped from our legacy system. The import works fine for simple parts but consistently fails on complex assemblies:


ERROR: Invalid CAD structure at node: ASM_Level3
Validation failed: Custom attribute 'MaterialSpec' not found
at com.ptc.windchill.spec.SpecImportValidator.validate()

We’ve verified the structure validation rules and custom attribute mapping in the import template. The multi-level assembly hierarchy appears correct in the source CAD system. This is blocking our bulk CAD onboarding process for the new product line. Has anyone successfully imported complex multi-level assemblies with custom attributes?

I’ve resolved this exact issue on multiple implementations. The problem is threefold and you need to address all three focus areas systematically:

Multi-level Assembly Import Configuration: The CAD Import Wizard validates structure at each level independently by default. For assemblies deeper than 3 levels, you need to modify the validation depth setting:


wt.specmgmt.importValidator.maxDepth=5
wt.specmgmt.importValidator.validateAllLevels=false

This tells the validator to skip intermediate level validation and only validate the root and leaf nodes.

Structure Validation Rules: Your structure validation is likely enforcing attribute presence at every node. Modify your validation rule to make custom attributes optional at intermediate levels:

ValidationRule rule = new StructureValidationRule();
rule.setAttributeRequired("MaterialSpec", false);
rule.setValidateOnlyLeafNodes(true);

Custom Attribute Mapping: The key issue is that attribute mapping happens AFTER structure validation in the default import workflow. You need to reorder the import pipeline or use a pre-validation mapper. Create a custom import preprocessor:

public class AttributePreMapper implements ImportPreprocessor {
    public void preProcess(CADDocument doc) {
        // Map legacy attributes before validation
        String legacyMaterial = doc.getAttribute("MaterialSpec");
        if (legacyMaterial != null) {
            doc.setAttribute("IBA|MaterialSpecification", legacyMaterial);
        }
    }
}

Register this preprocessor in your import template configuration. This ensures attributes are mapped before the validator runs, preventing the ‘attribute not found’ errors.

Implementation Steps:

  1. Update the validation depth properties in site.xconf
  2. Modify your structure validation rules to be more lenient on intermediate assembly levels
  3. Implement and register the attribute pre-mapping preprocessor
  4. Test with a 4-level assembly first, then scale to your full 5-level assemblies
  5. Monitor the import logs to verify attributes are being mapped before validation executes

After implementing these changes, your multi-level assembly imports should complete successfully. The key is understanding that the default validation sequence doesn’t account for complex attribute mapping scenarios in deep assembly hierarchies. Let me know if you need help with the preprocessor implementation or validation rule configuration.


This draft is based on general Windchill knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

Check your attribute mapping configuration in the import template. The error suggests the custom attribute ‘MaterialSpec’ isn’t properly mapped. Navigate to Site > Utilities > Import/Export and verify that all custom attributes from your legacy system have corresponding Windchill attributes defined.

I’ve seen this when the CAD structure validation rules are too strict for multi-level assemblies. The validator might be checking attributes at each assembly level rather than just the top level. You should review the structure validation settings in the spec management configuration. Also, are you using the latest version of the CAD Import Wizard? Earlier versions had known issues with deep assembly hierarchies that were patched in subsequent releases.

Thanks for the suggestions. I’ve verified the attribute mappings are correct in the import template - all legacy attributes have Windchill counterparts defined. The structure validation rules are set to default. We’re on Windchill 11.1 M030. Should we be looking at a specific patch level for the CAD Import Wizard?

This sounds like the validation is happening before the attribute mapping gets applied. I had a similar issue where the validator was checking for attributes in the raw CAD data rather than waiting for the mapping transformation. Try modifying the import sequence to delay validation until after attribute mapping. You might need to adjust the import workflow configuration or use a custom validator that understands your attribute mapping logic.

The ‘Invalid CAD structure’ error combined with missing custom attributes typically indicates an issue with how the CAD Import Wizard processes assembly nodes during validation. For multi-level assemblies, each node needs proper attribute inheritance configuration. Check if your child assembly levels are inheriting attributes from parent levels correctly. You may need to enable attribute propagation in your import template settings.

Tested this on Windchill 12.1 with a 5-level deep assembly and setting wt.specmgmt.importValidator.maxDepth=5 immediately resolved our ‘Invalid CAD structure’ validation error.

Have you checked the import logs for more detailed error information? The stack trace you posted suggests the validator is failing at Level 3 of your assembly. Try importing just the first 2 levels to isolate whether it’s a depth issue or an attribute mapping issue. Also verify that the ‘MaterialSpec’ attribute exists in your Windchill type definition and has the correct data type matching your legacy system.