Having designed lifecycle management systems for multiple Fortune 500 companies, I can provide strategic guidance on this critical architectural decision.
Object Versioning:
Versioning is appropriate when you need to:
- Maintain parallel development streams (multiple teams working on different design iterations)
- Support formal revision control with clear promotion paths (Draft → Review → Released)
- Enable comparison between specific revisions (what changed from Rev A to Rev B)
- Provide rollback capability to previous versions
Implement versioning for objects where change history is legally required or technically critical. In Agile, configure version creation rules in the lifecycle definition. For example, Parts might version when transitioning from “In Work” to “Released” status, while Documents version on every check-in.
Version management best practices:
- Use major.minor numbering (1.0, 1.1, 2.0) where major versions indicate significant changes
- Implement version purge policies to archive old versions after retention period
- Create “latest” views that automatically show current version to avoid user confusion
- Use supersession relationships to link version chains explicitly
Baseline Snapshots:
Baselines are better when you need to:
- Capture configuration of multiple related objects at a specific milestone
- Compare entire product configurations between releases
- Support what-was-used queries (which part versions were in Product X at launch)
- Minimize version proliferation while maintaining milestone traceability
Implement baselines for project milestones, product releases, or regulatory submissions. In Agile, create a Baseline object class that relates to a collection of objects with specific versions locked at baseline creation time.
Baseline management best practices:
- Automate baseline creation through workflow (e.g., when project reaches “Design Complete” status)
- Include BOM structure in baseline to capture assembly relationships
- Store baseline metadata: purpose, date, approver, regulatory significance
- Implement baseline comparison reports to highlight differences between releases
Audit Trail Requirements:
For comprehensive auditability, implement a three-tier change tracking strategy:
-
Field-Level Audit Log: Enable Agile’s native audit trail for all critical object classes. This captures every attribute change with timestamp, user, old value, and new value. Audit logs provide forensic-level detail without creating versions.
-
Version History: Create versions at formal revision points (design releases, ECO implementation). Versions provide user-friendly change comparison and support workflows that reference specific revisions.
-
Baseline Archive: Create baselines at major milestones (product launch, regulatory submission, annual review). Baselines capture multi-object configurations for compliance reporting and historical analysis.
This three-tier approach satisfies audit requirements (field-level logs), supports engineering workflows (versions), and enables configuration management (baselines) without overwhelming the system with excessive versions.
Hybrid Model Implementation:
For most organizations, I recommend a hybrid approach:
- High-change objects (Documents, CAD files): Version on check-in, purge old versions after 2 years
- Engineering objects (Parts, BOMs): Version on formal release only, maintain all versions indefinitely
- Administrative objects (Projects, Issues): No versioning, rely on audit trail for change history
- All critical milestones: Create baselines that snapshot entire product configuration
Configure lifecycle states to control version creation. For example:
- Preliminary → Preliminary: No version (iterative work)
- Preliminary → Released: Create version (formal release)
- Released → Obsolete: No version (status change only)
Performance Optimization:
To maintain system performance with versioning enabled:
- Index version fields in database for fast latest-version queries
- Implement version archival process that moves old versions to separate tablespace
- Create materialized views that pre-calculate latest versions
- Use effective date filtering to limit query scope
- Partition version tables by date for efficient historical queries
Usability Considerations:
Balance auditability with user experience:
- Default views show only latest versions unless user explicitly requests history
- Implement version comparison tools that highlight changes visually
- Create role-based views where manufacturing sees released versions only, while engineering sees all versions
- Use version labels (Alpha, Beta, Production) that are meaningful to users, not just sequential numbers
The optimal architecture depends on your industry, regulatory environment, and organizational maturity. Regulated industries need aggressive versioning; consumer products can rely more on baselines. Start with conservative versioning policies and adjust based on actual usage patterns and audit findings.