How to Model Supersession Chains in a Catalog
A practical guide to the data model, chain resolution, splits, merges, quantity ratios, and what a search for the old SKU should return — for catalog teams building or cleaning supersession data.
A supersession chain is a sequence of REPLACED_BY links from an original part number through intermediate numbers to the current successor. Modeling it well means storing direction, date, quantity ratio and source on every link — and resolving the full chain so a search for any old number returns the current part with the evidence behind it.
Most catalogs store supersession as a two-column lookup: old part, new part. That works until the chain has more than one hop, until a split turns one old part into two new ones, or until someone needs to know when the change happened. This guide covers the data model that handles all of those cases, and what the catalog should do when a user searches for a number that is no longer current.
The minimum supersession record
Every link in a chain needs the fields from the supersession glossary entry, repeated here for reference:
| Field | Purpose | Example |
|---|---|---|
| Old part ID | The discontinued number | AB-1001 |
| New part ID | The successor number | AB-1500 |
| Direction | One-way (default) or bidirectional | One-way |
| Effective date | When the change took effect | 2024-03-01 |
| Quantity ratio | Units of new per unit of old | 1:1 |
| Reason | Why the change happened | Design revision |
| Source | Evidence for the link | Manufacturer bulletin #412 |
| Status | Active, pending review, rejected | Active |
Chain resolution
A chain is a directed path through successive REPLACED_BY edges. Resolution means following the path from any entry point to the terminal node — the part with no outgoing REPLACED_BY link.
Illustrative chain:
AB-1001 → AB-1500 → AB-2050
AB-1001was discontinued 2024-03-01, replaced byAB-1500AB-1500was discontinued 2025-06-15, replaced byAB-2050AB-2050is the current part (no outgoingREPLACED_BY)
A search for AB-1001 should resolve to AB-2050, and the chain should be visible: the customer or the sales rep needs to see the path, not just the endpoint. The dates and sources on each link tell them how fresh and trustworthy the resolution is.
Resolution rules
- Follow REPLACED_BY edges until no further edge exists. The terminal node is the current successor.
- Detect cycles. A loop (
A → B → C → A) is a data error, not a valid chain. Flag it for review rather than resolving infinitely. - Cap chain depth. A chain longer than a reasonable maximum (five to ten hops depending on the industry) is suspicious and worth reviewing. Deep chains may indicate a data problem — for example, two independent products accidentally linked through a shared intermediate number.
- Respect effective dates. A link with a future effective date is pending, not active. Resolution should stop at the last active link.
- Check terminal status. If the terminal node is itself discontinued with no successor, the chain is broken. Flag it: the customer needs to know there is no current replacement, not just that the old number changed.
Handling splits and merges
One-to-many (split)
One old part becomes two or more new parts. This happens when a manufacturer unbundles a kit into individual components, or splits a part into separate variants for different applications.
Illustrative split:
KT-300 (service kit) → KT-300A (seals) + KT-300B (hardware)
Each branch of the split needs:
- Its own
REPLACED_BYlink from the old part - A quantity ratio (1 kit = 1 seal pack + 1 hardware pack)
- A role description (what this branch covers)
When a customer searches for KT-300, the result should show both successors with their quantities. Showing only one creates the risk of an incomplete order.
Many-to-one (merge)
Several old parts collapse into a single new number. This happens when a manufacturer consolidates variants or creates a universal replacement.
Illustrative merge:
AB-1001 + AB-1002 → AB-2050
Each old part has its own REPLACED_BY link to the same new part. Quantity ratios may differ: if AB-1001 was a pack of 10 and AB-1002 was a pack of 5, and AB-2050 is a pack of 10, then AB-1001 → AB-2050 is 1:1 and AB-1002 → AB-2050 is 2:1 (order two of the old to match one of the new — or vice versa, depending on the direction convention). Getting the ratio wrong means the customer orders the wrong amount.
Quantity-ratio changes
Even a simple one-to-one supersession can involve a quantity change. A manufacturer may change the pack size, the unit of measure or the standard order quantity. The ratio must be stored on the link, not inferred.
| Scenario | Old part | New part | Ratio (old:new) | What happens if ratio is missing |
|---|---|---|---|---|
| Pack size change | AB-1001 (pack of 10) | AB-2050 (pack of 5) | 1:2 | Customer orders 1 when they need 2 |
| Unit of measure change | OIL-100 (1 liter) | OIL-200 (500 ml) | 1:2 | Customer orders half the quantity needed |
| Kit split | KT-300 (kit) | KT-300A + KT-300B | 1:1 each | Customer orders only one of the two components |
What the old SKU should return
When a customer or a sales rep searches for a superseded part number, the catalog should return:
- The current successor — resolved to the terminal node of the chain
- The chain — each intermediate step, with dates and sources, so the user can see the path
- Quantity ratios — if the pack size or unit changed, show the conversion
- Split branches — if the part was split, show all branches with their roles
- Confidence — how trustworthy the chain is (manufacturer-confirmed, auto-matched from price-list diff, human-reviewed)
- A clear signal that the searched number is not current — so the user does not accidentally order a discontinued part
What the catalog should not return:
- “No results found” (the part has a known successor)
- The old part as if it were still current (it is discontinued)
- Only the immediate successor without resolving the full chain (the intermediate may also be discontinued)
Data-model sketch
A supersession chain is a directed graph where each node is a part identity and each edge is a REPLACED_BY relationship with the fields above. In the simplest relational representation:
| Table | Key columns |
|---|---|
| parts | part_id, status (active, discontinued, pending), current_successor_id (denormalized for fast lookup) |
| supersession_links | old_part_id, new_part_id, direction, effective_date, quantity_ratio, reason, source, status, created_by, created_at |
The current_successor_id on the parts table is a denormalized shortcut: it points to the resolved terminal node of the chain so searches do not need to traverse edges at query time. It must be recomputed whenever a new link is added to the chain.
Chain integrity checks
Before trusting a supersession dataset, run these checks:
Where Claro fits
Claro stores supersession as REPLACED_BY edges in the Product Identity & Evidence Graph, with direction, date, quantity ratio, source and confidence on every link. Chain resolution, cycle detection and broken-chain alerts are computed automatically. When a customer searches for a discontinued part, the resolved successor is returned with the evidence behind each step.
Related
Glossary
What is supersession?
The definition: shapes, direction and what a supersession record needs.
Playbook
Build a supersession table from price-list changes
Workflow: extract candidate pairs from appeared and disappeared codes.
Comparison
Supersession vs interchangeability vs equivalence
Who decides, direction, evidence and risk.
Article
Supersession: the most under-modeled relationship
Why catalogs still hold supersession in people's heads.
FAQ
What is a supersession chain?
A supersession chain is a sequence of REPLACED_BY links from the original part number through one or more intermediate numbers to the current successor. For example AB-1001 → AB-1500 → AB-2050 is a two-link chain. Resolving the chain means following it to the terminal node — the part that has no outgoing REPLACED_BY edge.
How should a catalog handle a supersession split?
When one old part becomes two or more new parts, the chain branches. Each branch needs a quantity ratio (how many of each new part replace the old one) and a role description (what each new part covers). The old SKU search result should show all branches with their ratios.
What should happen when a customer searches for a superseded part number?
The search should return the current successor, show the supersession chain that connects them, display the effective date and source for each link, and flag any quantity-ratio changes. The customer should never see “not found” for a part that has a known successor.
Claro
See how Claro handles this in production
This concept is one piece of keeping a catalog trusted. See how Claro resolves identity, enriches missing attributes, and validates every update before it reaches your PIM or ERP.
Learn more