Chemical Compliance Module

Track chemical products with CAS numbers, ZDHC compliance, REACH/GRS/GOTS status, supplier data, and purchase records.

Overview

The chemical module manages chemical products, their compliance status, associated suppliers, and purchase records. It supports REACH, ZDHC, GOTS, GRS, and PFAS tracking with full CAS number search capabilities.

Entities

ChemicalProduct

FieldTypeDescription
idLongAuto PK
chemicalNameStringChemical name (required)
commercialNameStringCommercial/trade name
internalCodeStringInternal product code
casNumbersList<String>CAS Registry Numbers (element collection)
ecNumberStringEC number
chemicalFormulaStringChemical formula
chemicalCategoryStringCategory
subcategoryStringSubcategory
userIdLongCreator user ID
companyIdLongCompany ID
archivedBooleanSoft-delete flag
archivedAtLocalDateTimeWhen archived
metadataMap<String, Object>Custom JSON metadata
complianceChemicalComplianceCompliance data (@OneToOne)
supplierChemicalSupplierSupplier data (@OneToOne)
purchaseRecordsList<ChemicalPurchaseRecord>Purchase history (@OneToMany)
createdAt / updatedAtLocalDateTimeTimestamps

ChemicalCompliance

Each chemical product has a one-to-one compliance record tracking regulatory status:

FieldTypeDescription
reachCompliantBooleanREACH regulation compliant
reachRegistrationNumberStringREACH registration number
zdhcLevelZdhcLevelZDHC MRSL conformance level
zdhcGatewayIdStringZDHC Gateway identifier
gotsCompliantBooleanGOTS compliant
grsCompliantBooleanGRS compliant
svhcSubstanceBooleanIs SVHC substance
pfasContentBooleanContains PFAS

ChemicalSupplier

Supplier information specific to the chemical product:

FieldTypeDescription
supplierNameStringChemical supplier name
supplierCodeStringSupplier code
contactEmailStringContact email
countryStringSupplier country

ChemicalPurchaseRecord

Purchase records for chemical products. See Chemical Purchases API → for the full API reference.

FieldTypeDescription
chemicalProductIdLongFK to ChemicalProduct
supplierIdLongFK to supplier
companyIdLongCompany ID
purchaseDateLocalDateTimePurchase datetime
quantityKgDoubleQuantity in kg
costPerKgBigDecimalCost per kg
totalCostBigDecimalTotal cost
currencyStringISO 4217 (3 letters)
deliveryDateLocalDateDelivery date
batchNumberStringBatch/lot ID
batchExpiryDateLocalDateBatch expiry
warehouseLocationStringStorage location
qualityCertificateNumberStringQuality cert number
msdsReceivedBooleanMSDS document received
reachCompliantBooleanBatch-level REACH compliance

ZdhcLevel Enum

ValueMeaning
LEVEL_1Conformant
LEVEL_2Conformant Enhanced
LEVEL_3Conformant Gold
NOT_LISTEDNot in ZDHC MRSL

CAS Number Search

The service supports both exact and partial CAS number search:

Shell
GET /api/v1/chemicals/search?casNumber=2580-78-1
GET /api/v1/chemicals/search?casNumber=2580&partial=true

Soft Delete (Archive)

Chemical products are not permanently deleted. DELETE /api/v1/chemicals/{id} sets archived = true and records the archivedAt timestamp. Archived products are excluded from list queries by default.