Batch validation landed. If you've ever needed to validate a pile of component attributes — say, after a bulk import or a scripted update — you can now do it in one API call instead of looping through hundreds of individual requests. The backend fans out the work and enforces size limits so you don't accidentally bring yourself down.
What's new
Batch attribute validation. Send us a list of component attributes; we'll validate them all at once and return the results. Useful for bulk operations where hitting the API one-by-one gets old fast.
Improvements & fixes
Fixed the users list pagination so it doesn't strand you on a nonexistent page when the result set shrinks. Search now resets you to page 1 like it should.
The manufacturer picker in the sourcing flow now remembers your previous selection when you reopen an edit session.
A lot changed around access, imports, and change orders — the kind of work that makes a PLM feel less like a maze of locked doors and more like a tool built for getting work done.
In-house authentication. Sign in with username and password or Google, configure SAML yourself, set organization-level session policies, and use the same authentication across web, Onshape, Altium, and the SolidWorks plugin.
CAD-owned attributes. Lock individual part and assembly attributes when CAD is the source of truth, so manual edits don’t quietly undo the model.
More capable sourcing imports. Map sourcing columns in the import wizard, update existing parts on re-import, create unknown package types automatically, and turn contiguous duplicate rows into one component with multiple sourcing entries.
Change order attachments where they belong. Auto-attached documents now appear with their associated component in the CO items tab. The former Documents tab is now Attachments.
Import history now shows sourcing results and completion state, while the completion screen points to the history page when sourcing is still running.
Reverting a component to its last released revision now includes a preview, warnings, and confirmation.
The history picker selects the correct component revision.
Change order review emails include the change order name in the subject.
SCIM setup now shows its base URL in Authentication settings, and SAML failures include useful diagnostic detail.
Library sorting works with filters applied.
Refreshing a change order detail page keeps you on the current change order.
New libraries no longer carry hidden import errors that block uploads.
Import updates got a lot less fragile. You can now match existing components using a chosen key from your spreadsheet, update rows in place, and trust the whole job to either succeed cleanly or fail without leaving a mess behind.
Import update mode now includes an Identify key step, so you can pick the spreadsheet column used to match existing components.
Component and assembly imports now support a fuller update flow — matching, updating, overwriting, and re-uploading without starting from scratch.
Sandbox organizations are now supported, including usage tracking and a visible sandbox badge in the app.
Org creation is now grant-aware, with clearer handling when access is still pending.
Not Revision Managed components can now be enabled or disabled in bulk from the component list.
Not Revision Managed controls now show up more consistently across list, drawer, grid, and header views.
DCO handling is tighter: items default to no revision bump, locked behavior is clearer, and invalid component selections are blocked earlier.
Change orders now show a specific lock error instead of the classic “something went wrong” shrug.
Closed change orders keep their modification counts fixed, instead of drifting as related components change later.
Import validation is more consistent across the flow, including checks for locks, archived targets, duplicate names, and obsolete-state restrictions.
Document Change Orders shipped today. Until now, every change order in Duro bumped the revision — even when you were just updating a datasheet, swapping a supplier, or fixing a typo in the description. That meant a new revision for changes that had nothing to do with the design. DCOs fix that.
When you create a change order now, you pick the type: Engineering or Document. Engineering COs work exactly as before — they bump the revision when approved. Document COs skip the bump entirely. Both lock the component during edit so you can't accidentally release something mid-change.
This unlocks workflows teams have been routing around for months. Update compliance docs without triggering a revision cascade. Swap an approved manufacturer without re-releasing downstream assemblies. Track the change history without the revision noise.
Document Change Orders. New change order type that updates components without bumping revision. Choose Engineering or Document when you create a CO — the system handles the rest. DCOs still lock component status during edit and route through the same approval flow.
Change order type selector. Segmented control on the CO creation screen. Existing change orders show a read-only type badge so you know what you picked.
Assembly import now handles creates and updates in one pass. Previously you had to import once to create components, then import again to update them. Now the importer resolves parent-child ordering and handles both in a single run.

Search got a lot less literal in this release — wildcard support now works across names, CPNs, descriptions, and more. We also shipped a substantial chunk of enterprise admin work, so managing access should feel a lot less like assembling furniture from a bag of unlabeled screws.
Wildcard search across free-text and structured fields, including * where exact matches used to be your only option.
Teams for group-based RBAC, with shared roles, member management, and team-aware access resolution.
SCIM provisioning for enterprise identity providers, including group-to-team mapping and the admin surface to manage it.
Sourcing validation settings for change-order promotion, with warning or error modes and configurable starting states.
Import update mode that matches rows to existing components by identifier instead of treating everything as net new.
Editing sourcing data is more complete, including manufacturer parts, quotes, vendors, documents, and source priority.
Duplicate component names are now blocked reliably within a library, including during Altium imports.
Editors can archive or remove sourcing records, clear a primary source, and edit CPNs again.
Component and assembly edits now reject empty snapshot submissions.
Component details refresh correctly after a change order, and change-order notifiers now stay removed after saving.
BOM cost rollups now calculate using package quantity, and validation results no longer count failed checks as warnings too.
The big news: change orders now show you exactly what state you're looking at — draft, released, whatever — across every surface where they appear. No more squinting at timestamps to figure out which version you're reviewing.
Change-order state labels are everywhere now. History snapshots, comparison chips, the change-order dropdown — they all surface the lifecycle state. You'll know immediately whether you're looking at draft data or something that's already released.
Item counts moved inline. Each change-order item now shows a badge with how many changes it contains. The old banner at the top is gone; the dropdown stays open by default so you can scan counts at a glance.
BOM quantity validation tightened up. You can't add negative quantities anymore. Zero quantities stick around after refresh instead of disappearing. And null quantities are treated as no-ops — they won't accidentally wipe out existing values.
Change orders got the biggest lift in this release. You can now track name and description changes in the activity timeline, bundle documents into export packages, and work with a few less sharp edges along the way.
Change order history now shows name and description changes, so the timeline tells the full story instead of the abridged version.
Change order export packages can include bundled documents. We also added clearer export status indicators and a new webhook event for closed change orders.
Documents can now be linked directly to quotes and DPNs — not just parts and MPNs.
Import rules now adapt to context: quantity and BOM level are required where they should be, and imports can preserve user-provided CPNs.
Historical variants now show point-in-time membership and component state, and comparing variants is easier in the new single-page layout.
Variant removals no longer force an independent CPN unless you actually want one.
New components can start in DESIGN status during create flows and spreadsheet import.
Libraries can now support multiple currency options for the Cost system attribute.
Change order status labels render correctly in translation, and older lifecycle statuses can no longer be selected by mistake.
BOM and document-link edits are now blocked while a component is in an active change order.
Document exports request enough signed download URLs, which is a boring sentence until you’ve had one fail halfway through.
This release tightens a few rough edges across exports, roles, imports, and change orders, while also making document viewing and search behavior more reliable.
APIs page access is on by default for Editor roles, including the API keys management page.
eDrawings file types are available from SolidWorks exports, so those parts can be opened in the eDrawings viewer.
Search in AI-off mode now matches text without case sensitivity.
The revision pillbox flow is clearer for Released, Modified, and Proposed for ECO states.
Bulk document exports now download files correctly.
Released BOM exports now include child assemblies and parts, not just the top level.
Excel and CSV files render in the document viewer.
Custom lifecycle states keep the right color and icon in Component and Change Order dropdowns.
Large change order approvals now return before the release work finishes, avoiding the “Decision could not be recorded” timeout.
Altium publishes no longer fail when a BOM payload exceeds the gRPC message limit.
Bulk invites now protect the Site Admin role and require the right permission, and the invite dialog makes it clear that re-inviting an existing member changes their role.