SBOM import API fails with circular reference error when uploading complex BOM structures

We’re implementing automated SBOM imports for compliance reporting in Aras 14.0, but the SBOM import API is rejecting our BOM structures with circular reference errors. The BOMs are exported from our ERP system and contain legitimate multi-level assemblies with shared components.

The error occurs during API submission:

<Error>
  <code>CIRCULAR_REFERENCE_DETECTED</code>
  <message>Circular dependency in BOM structure at item P-1847</message>
  <detail>Component appears in multiple parent assemblies</detail>
</Error>

Our BOM structure includes standard components (screws, washers) that appear in multiple assemblies, which the API apparently interprets as circular references. These are not actual cycles - just shared parts used across different parent assemblies. The same BOM imports successfully through the UI but fails via API.

We need this working for automated compliance reporting workflows. How does the SBOM API’s structure validation differ from UI validation, and how do we properly represent shared components without triggering false positive cycle detection?

The issue stems from how the SBOM API’s structure validation interprets shared components versus the more lenient UI validation. Here’s a comprehensive solution addressing all three critical aspects:

1. SBOM API Structure Validation

The API performs graph-based validation that treats each BOM_Structure relationship as a directed edge. When component P-1847 appears under multiple parents, the validator checks for cycles by traversing all paths. The false positive occurs because your ERP export likely uses relationship references that the API interprets as creating a graph cycle rather than a directed acyclic graph (DAG) with shared nodes.

The key difference from UI validation: The UI allows users to manually confirm shared component scenarios, while the API must make automated decisions. The API therefore defaults to rejecting ambiguous structures that could represent cycles.

2. Cycle Detection in BOM - Root Cause

Your error message “Component appears in multiple parent assemblies” indicates the API is flagging legitimate shared components. This happens when:

  • Relationship IDs in your XML are not unique across different parent-child pairs
  • The source_id and related_id properties create ambiguous graph edges
  • The sort_order or other relationship properties suggest bidirectional links

The API’s cycle detection algorithm likely uses depth-first search with visited node tracking. When it encounters P-1847 multiple times in a single traversal path (even in different branches), it conservatively flags this as a potential cycle.

Solution Approach:

Restructure your ERP export to explicitly distinguish between component instances:

  1. Ensure each BOM_Structure relationship has a unique relationship ID
  2. Use clear parent-child directionality in source_id/related_id
  3. Include quantity and position data to show these are separate instances
  4. Consider using the occurrence model rather than pure part references

3. Compliance Reporting Integration

For automated compliance workflows, implement a validation and transformation layer:

Pre-process your ERP export to:

  • Validate the BOM structure forms a proper DAG before API submission
  • Transform shared component references into occurrence-based relationships
  • Add explicit relationship metadata that clarifies reuse vs. cycles
  • Implement retry logic with detailed error logging for compliance audit trails

Create a validation script that mimics the API’s cycle detection:

# Pseudocode for BOM validation:
1. Parse ERP XML export into graph structure
2. For each component node:
   - Track all parent assemblies
   - Verify no component is ancestor of itself
   - Flag any true circular dependencies
3. Transform shared components:
   - Create unique relationship instances
   - Preserve quantity and position data
   - Maintain compliance traceability
4. Generate API-compatible XML with validated structure

This transformation layer ensures your legitimate shared component scenarios pass API validation while maintaining data integrity for compliance reporting. The layer can also enrich the SBOM data with additional compliance metadata required for regulatory reporting.

Immediate Workaround:

While developing the full solution, you can manually edit your XML exports to ensure each BOM_Structure relationship for shared components has unique identifying attributes that clearly indicate separate usage instances rather than circular references. This allows your compliance reporting workflows to continue while you implement the automated transformation layer.


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

The SBOM API uses stricter validation than the UI import because it’s designed for programmatic access where errors are harder to correct interactively. The circular reference detection might be too aggressive for standard shared component scenarios. Check if your ERP export includes relationship IDs that the API is interpreting as creating actual cycles rather than just shared usage relationships.

I’ve seen this issue before with SBOM imports. The problem is usually in how the relationships are structured in your XML payload. When a component appears multiple times, you need to ensure each relationship has a unique identifier and correct parent-child linkage. The API validates the entire BOM graph before import and rejects it if it detects any potential cycles, even if they’re false positives from your perspective. You might need to pre-process your ERP export to restructure the relationships in a way the API accepts.

Have you tried importing a simplified version of your BOM to isolate which specific component or relationship is triggering the error? Start with a small subset that includes the problematic P-1847 item and build up from there. This will help you understand whether it’s a data structure issue or an actual limitation in how the API handles shared components compared to the UI workflow.

The circular reference detection algorithm in the SBOM API is more conservative than the UI because automated imports can’t prompt users for clarification. Your shared components scenario is legitimate, but you need to ensure your XML structure clearly differentiates between component reuse and actual circular dependencies. Check the SBOM API documentation for the proper way to express many-to-many relationships between assemblies and components.

Confirmed this resolves the false positive cycle detection in Aras Innovator’s SBOM API by adjusting the BOM_Structure relationship references to use component IDs rather than inline definitions.

This sounds like a data modeling issue in how your ERP system exports the BOM structure. The API might be interpreting your shared component references as bidirectional relationships instead of unidirectional parent-child links.

Consider whether you need to modify your ERP export format or implement a transformation layer between your ERP and the SBOM API to restructure the relationships properly.