Leaving Duro
Duro is a well-built modern tool with a clean API, which removes the extraction problem that dominates most migrations. What is left is the interesting part, and it is not about file formats.
What comes across cleanly
Duro models components, assemblies and revisions in a way that maps onto Manufacturing PLM's object model without violence, which is not true of every source system.
- Components and their attributes, including the category-driven specification fields, which land on classification attributes here rather than as free text.
- Assemblies and their structure, with quantities and reference designators intact. Designators survive because both systems model them as line-level data rather than as a note.
- Revisions with their history, including who released what and when. The dates and actors come across as recorded history rather than being flattened to an import timestamp.
- The component library's manufacturer entries, which become AML entries — subject to the duplicate decision described below.
The three decisions
How much history. Everything is possible and rarely correct. The useful question is what you would need to answer about a product you shipped four years ago, and for most teams that is released revisions and their approvals rather than every intermediate working state. Bringing everything means bringing every abandoned draft, which makes search worse permanently.
What to do about library duplicates. Every component library accumulates them — the same part entered twice under different manufacturer part number spellings. Import is the one moment when merging them is cheap, because nothing downstream has been built yet. Manufacturing PLM proposes matches on classification attributes with the differences named, and a person accepts or rejects each one.
Who owns identity afterwards. Duro issues part numbers. So can Manufacturing PLM, and so can your ERP. This has to be decided before the run rather than discovered during it, because the answer determines whether numbers are carried across as-is or reissued — and reissuing after go-live is a change to every reference in every system.
The failure this avoids
A team migrates everything, resolves nothing, and goes live in a fortnight. The speed is real and so is the cost, which arrives about four months later.
The library duplicates came across as duplicates. Where-used now returns partial answers, an obsolescence check misses a product, and the fix requires merging items that four months of structures now reference. What would have been a review of two hundred proposed matches before go-live becomes a structural change with an impact analysis attached to each one.
Migration is the only cheap moment to fix data quality. Everything is provisional until go-live and permanent afterwards, and a fortnight spent on the duplicate review is the highest-return work in the whole project.
How the run actually works
Extraction runs against Duro's API rather than against a file export, which means the run is repeatable. That matters more than it sounds: a migration is never one run, it is five or six, each one revealing something the last did not.
Every run is a dry run until you say otherwise, and it produces a report rather than a tenant — counts by object type, proposed merges, and errors that name the specific record and field rather than reporting a total. An error that says forty-one records failed validation is not a report, it is a rumour.
Runs land in a sandbox first, always. You look at your own data in the real product, run the queries you actually care about, and find the things a report cannot tell you — usually a classification that felt right in the mapping spreadsheet and is wrong when you search with it.
There is no mandatory services engagement. Migration is a product feature with a documented mapping, not a consulting deliverable, and a team that wants to run it themselves can.
How it meets your ERP
If your ERP already holds items for the same parts, the migration is where identity gets reconciled, and it is worth doing then rather than later. Imported items are matched against the ERP item master and the matches are proposed rather than applied.
That matching produces the most valuable artefact of the whole project: a list of parts that exist in one system and not the other. Most teams have never seen that list, and it is usually longer and more interesting than anybody expects.
The system-of-record matrix is decided as part of the migration rather than after it. Which system issues numbers, which owns cost, which owns the MBOM — answered before the first publication rather than discovered when two systems disagree.
Where the boundary is
Nothing is imported silently. Every proposed merge, every identity match and every classification mapping is reviewable before it is applied, and the review is the work rather than an optional step.
Manufacturing PLM also does not migrate what it cannot model faithfully. Where a Duro concept has no honest equivalent here, the import reports it rather than approximating it into the nearest field, because an approximation that looks like data is worse than a gap somebody can see.
Facts
| Extraction | Duro's API, not a file export — so the run is repeatable |
| Comes across | Components · assemblies with designators · revisions with actors |
| Decision 1 | How much history — everything is possible and rarely correct |
| Decision 2 | Library duplicates — merging is only cheap now |
| Decision 3 | Who issues part numbers afterwards |
| Every run | A dry run producing a report, until you say otherwise |
| Errors | Name the record and field — never a count |
| Services engagement | Not mandatory |
Frequently asked
How hard is extraction from Duro?
Comparatively easy. Duro has a clean API and models components, assemblies and revisions in a way that maps onto Manufacturing PLM without violence, which removes the extraction problem that dominates most migrations and leaves you with only the genuinely interesting decisions to make.
Should we bring all our history?
Usually not. The useful question is what you would need to answer about a product shipped four years ago, and for most teams that is released revisions and their approvals. Bringing everything means bringing every abandoned draft, which makes search permanently worse.
Why deal with library duplicates during migration?
Because it is the only cheap moment. Nothing downstream has been built yet, so a merge is a decision rather than a structural change. Four months after go-live the same merge requires an impact analysis against every structure that now references either copy.
How are duplicate matches proposed?
On classification attributes with the differences named — this candidate matches on eleven of thirteen attributes and differs on tolerance and package. A person accepts or rejects each one, because a similarity score is not evidence and one character often carries the meaning.
Why does part number ownership have to be decided first?
Because the answer determines whether numbers carry across as-is or get reissued, and reissuing after go-live is a change to every reference in every connected system. It is a decision that costs nothing at all beforehand and a great deal of money afterwards.
Do we go straight into production?
No. Runs land in a sandbox first, always. You look at your own data in the real product and run the queries you actually care about, which is how you find the classification that felt right in a mapping spreadsheet and is wrong in practice.
Do we have to buy a services engagement?
No. Migration is a product feature with a documented mapping rather than a consulting deliverable, and a team that wants to run it themselves can. Help is available and it is not a precondition for getting your own data out of Duro.