SERVICE PACKAGES

Menu_Icon_Service

DECLARATION GUIDES

INFOS & NEWS

Here you can find out the latest news about our software or regulations.

Our videos explain various applications step by step.

REGULATIONS

ON THIS PAGE

Compliance Validation

(Supports AD, RCD, FMD, Weighted Structures, and Mixed-Mode Declarations)

This document describes the data model and JSON payloads used by the Compliance
Engine to evaluate regulatory compliance across global regulations such as RoHS,REACH, POPs, TSCA, PROP65, and others.

The API accepts four declaration types:

The API returns a unified compliance evaluation for all applicable regulations based on all declarations provided.

Core Concepts

Product Structure

All payloads—AD, RCD, FMD, or mixed—share the same structure:

				
					{
"sbStructureObject": [...],
"partValidation": [...]
}
				
			

sbStructureObject — Product Hierarchy

sbStructureObject describes the full Bill of Materials (BOM):

  • Top-level product
  • Sub-components
  • Materials (FMD nodes)

 

Each structure object node may include:

Example (from FMD_input.json): FMD_input “sbStructureObject”:

				
					[{
"internalId": "65f42a1172f401408c564c54",
"structureObject": [
{ "internalId": "645a295c8937516841fb8ec5" },
{ "internalId": "645a71733a7b84089745d74b" }
]
}]
				
			

Example with weight + quantity (your addition)  “sbStructureObject”:

				
					 [{
"internalId": "65f42a1172f401408c564c52",
"weight": "262",
"unit": "g",
"quantity": 1,
"structureObject": [{
"internalId": "65f42a1172f401408c564c53",
"weight": "44",
"unit": "g",
"quantity": 1,
"structureObject": [{
"internalId": "645a295c8937516841fb8ec5",
"weight": "0.5",
"unit": "g",
"quantity": 1
}, {
"internalId": "645a718a3a7b84089745d7f6",
"weight": "23",
"unit": "g",
"quantity": 1
}]
}]
}]
				
			

Part Validation

Every node in the structure must have a corresponding partValidation entry.

Example: RCD_input

				
					{
"id": "65f42a1272f401408c564c68",
"part": { ... },
"declarations": [...]
}
				
			

Each part may contain:

  • AD declarations
  • RCD declarations
  • FMD declarations
  • Or none


Output adds:

  • Compliance results
  • Derived regulatory mappings in FMD

The Three Input Models

FMD-derived regulatory data appears only in output, never input.

AD – Abstract Declarations

AD is a minimal declaration type used to communicate general conformity without supplying:

  • Substance categories
  • CAS-based composition
  • Regulatory detail

AD declarations influence:

  • Overall compliance status
  • Documentation completeness reports

They do not provide data for substance-level evaluation.

RCD – Regulatory Compliance Declaration

Used when suppliers explicitly declare compliance for specific regulations.

RCD Input Format

An RCD declaration always contains:

  • identity – Regulation identity (e.g., “EUROHS-1907”)
  • regulationId – Internal reference
  • declarationClass: “C”
  • SubstanceCategoryList (required)

Example: RCD_input

				
					{
"identity": "EUROHS-1907",
"authority": "IPC",
"declarationClass": "C",
"containsDeclaration": "DEC",
"SubstanceCategoryList": {
"SubstanceCategory": [{
"name": "Lead/lead compounds",
"cas": "7439-92-1",
"Concentration": [{ "value": 2 }]
}]
}
}
				
			

Key RCD Input Rules:

RCD Input Format

Output adds:

  • complianceValidationResult
  • Per-substance-category results

Example: RCD_output “complianceValidationResult”:

				
					{
"resultCode": "F30",
"regulationName": "RoHS EU 2011/65/EU",
"messages": [{
"source": "Lead/lead compounds",
"resultCode": "F30"
}]
}
				
			

FMD – Full Material Declaration

FMD declarations describe actual chemical composition.

FMD Input Format

Uses:

  • declarationClass: “D”
  • fmdSubstance[]: CAS + % concentration

 

Example: FMD_input “fmdSubstance”:

				
					[
{ "name": "Iron", "casNumber": "7439-89-6", "concentration": "98" },
{ "name": "Manganese", "casNumber": "7439-96-5", "concentration": "1" }
]
				
			

FMD rules:

FMD Output Format

Engine adds:

  • Derived regulation declarations
  • containsDeclaration: “FMD”
  • complianceValidationResult
  • Derived SubstanceCategoryList

Example: FMD_output

				
					{
"identity": "EUROHS-1907",
"containsDeclaration": "FMD",
"complianceValidationResult": { "resultCode": "P01" }
}
				
			

Mixed RCD + FMD Structures

The engine supports any mixture of AD, RCD, and FMD declarations across the structure.

Example Mixed Structure

Top-Level Part (no declaration OR RCD)

├── Sub-component A (RCD declaration)

└── Sub-component B (FMD declaration)

└── Material C (FMD — contains substances)

This pattern appears frequently in supplied data.

 

Real examples come from:

  • RCD nodes in RCD_input.json
  • FMD nodes in FMD_input.json
  • Mixed roll-up in FMD_output.json

Mixed-Mode Processing Rules

Rule 1 — RCD overrides FMD (for the same regulation at the same node)

If an RCD declaration exists for RoHS → The engine ignores FMD-derived RoHS data at that node.

Rule 2 — FMD fills coverage gaps

<p”>If no RCD exists for a regulation → The engine derives it from CAS composition.

Rule 3 — Top-level always receives full compliance results

Even with no declarations, the engine outputs:

  • RoHS
  • REACH
  • REACH Authorization
  • POPs
  • TSCA
  • PROP65
  • etc.

(Shown in FMD_output.json)

Rule 4 — Weight & quantity control compliance roll-up

For each node: effectiveMass = weight × quantity

Used in:

  • FMD % composition roll-up
  • Substance concentration calculation
  • Threshold checks requiring mass (e.g., ppm, % w/w)

Material Rollup Logic

Material C → Sub-component B → Top-Level Part

  • Concentrations accumulate
  • Regulatory categories selected based on CAS
  • Failures propagate upward

Example (derived from FMD): FMD_output

				
					{
"name": "Reaction mass of DOTE and MOTE",
"Concentration": [{ "value": 42.857 }],
"result": { "resultCode": "F30" }
}
				
			

Output: Compliance Evaluation Model

All outputs include: “complianceValidationResult”:

				
					{
"resultCode": "P01",
"regulationName": "Battery Directive (2006/66/EC)",
"messages": [],
"resultStatistics": { ... },
"partList": { ... }
}
				
			

Common result codes:

  • P01 → Pass
  • ND10 → No declaration, no issues detected
  • F30 → Fail (threshold exceedance)

 

Examples from:

  • RCD_output.json
  • FMD_output.json

Summary Table: AD vs RCD vs FMD vs Mixed

Subscribe to our Newsletter!

Stay in the loop on product compliance, regulations, and new software features. Get our news!

When you send the form, the data you provide will be processed for the purpose of handling the enquiry(s) by Substantio GmbH, Altendeich 6, 25836 Vollerwiek. Your data will be processed strictly for the intended purpose. For further information on the processing of your data within our website, please refer to our Data Protection Information.