Data Model & System Architecture
Visual reference for the complete ABSD_ entity model, key relationships, SEQNO history pattern, and end-to-end data flow from external sources through to client-facing products
ABSD_OVGE.LRNO is the universal vessel key — all vessel-domain tables join on LRNO. Company tables use ABSD_OWGE.OW_CODE. The bridge between domains is ABSD_HIOW which holds both LRNO (vessel) and OW_CODE (owner). Note: LRNO = VSL_DESIGNATION.IMO_NUM — the same 7-digit number stored under different column names in different table families.
Entity Domain Overview
The ABSD_ schema is organised into eight functional domains. Every vessel-domain table uses LRNO + SEQNO as a composite key — SEQNO '00' is the current active record; '01', '02'… are historical versions in descending date order.
- ABSD_OVGEAnchor — LRNO, CLASS, STATCODE, J06 fields
- ABSD_OVNAName history (NEWNA, EXNA)
- ABSD_OVTYShip type (STATCODE, STATDESC)
- ABSD_OVCACallsign & MMSI
- ABSD_OVCSClassification survey schedule
- ABSD_OVDOCISM/DOC certificates
- ABSD_OVSMCSafety Management Certificate
- ABSD_HIOWOwnership — LRNO ↔ OW_CODE bridge
- ABSD_HIMAShip manager history
- ABSD_HISMTechnical manager history
- ABSD_HIOPOperator history
- ABSD_HIPPP&I Club history
- ABSD_HIGBOBeneficial owner history
- ABSD_HIFLFlag & callsign history
- ABSD_HITLTitle (LDT / scrap) history
- ABSD_HIDRDraught history
- ABSD_HISTStatus history
- ABSD_OWGEAnchor — OW_CODE, company type
- ABSD_OWNACompany name history
- ABSD_OWCOContact details
- ABSD_OWAD1Primary address
- ABSD_OWAD2Secondary address
- ABSD_OWANAlias / trading name
- ABSD_OWCACompany callsign
- ABSD_OWSTFleet statistics (trigger-computed)
- ABSD_STDEStructural design (LOA, LBP, beam, depth)
- ABSD_STSESurvey dates & special surveys
- ABSD_NCONNew construction order details
- ABSD_NCON_CONFIConfirmed newbuild dimensions
- ABSD_HILELength history
- ABSD_HILCLoad capacity history
- ABSD_HIMTMain engine type history
- ABSD_LRSCLR survey — class renewal
- ABSD_HIMOMain engine history (SEQNO per engine)
- ABSD_HIGEGenerator / electrical history
- ABSD_MATHMain engine technical detail
- ABSD_MAAUAuxiliary engine sets
- ABSD_MAEM1Emergency generator
- ABSD_MASPSpeed & power data
- ABSD_HIPUPropulsion unit (thruster) history
- ABSD_FUGECargo / fuel general (GT, NT, DWT)
- ABSD_FUDI1/2Dimensional data (LOA, draught)
- ABSD_FUSFSpecial features code table
- ABSD_FUSF2Extended special features
- ABSD_FUCA1/2Cargo capacity (bale/grain)
- ABSD_FUCO1/2Container capacity (TEU)
- ABSD_FUHA1/2Hatch dimensions
- ABSD_FUUN1/2Undesignated / misc cargo data
- ABSD_FULCLiquid cargo (tank capacities)
- ABSD_FULI1-3Lifting gear (crane, derrick)
- ABSD_FURO1/2Ro-Ro capacity
- ABSD_FUTOTowing & bollard pull
- ABSD_CADICasualty details (date, type, place)
- ABSD_CAGE1/2Casualty general (vessel state at event)
- ABSD_CACOCasualty consequence
- ABSD_CACTCasualty contributing factor
- ABSD_CAGCCasualty general classification
- ABSD_CALACasualty life loss / injury
- ABSD_CAPRCasualty previous event
- ABSD_CAPOCasualty port
- ABSD_HAADHull accident additional data
- ABSD_HACOHull accident consequence
- ABSD_CBCOROOTCountry code master (3-type dispatch)
- ABSD_CBPPROOTPort code master
- ABSD_CBUB1Universal builder code
- ABSD_CBCYCurrency + sanctions status
- ABSD_CBCACasualty type codes
- ABSD_CBFTFuel type codes
- ABSD_CBPPNAMEPort name (word-wrap trigger)
- ABSD_CBPPSTREPort street / address
- ABSD_CBCONOTECountry notes
Entity Relationship Diagram
The diagram below shows the 21 most-referenced core entities and their relationships. All vessel-domain tables join on LRNO (blue/teal lines). The company domain uses OW_CODE (green). The ABSD_HIOW table is the bridge — it holds both LRNO and OW_CODE, linking vessel records to company records.
SEQNO History Model
Every ABSD_ table uses a two-part primary key: LRNO + SEQNO. SEQNO '00' is always the current active record. When a field changes, the existing row is moved to SEQNO '01' (then previous '01' shifts to '02', etc.) and a new row with SEQNO '00' is inserted. This means history is always accessible by filtering WHERE SEQNO > '00'.
Exception — ABSD_HIFL: The flag/callsign history table uses 95 fixed SEQNO slots ('01'–'95') with explicit rotation logic. See Section 10k for the trigger pattern.
ABSD_HIOW Example — Ownership History
Active owner
today
Previous owner
(most recent change)
Second-most-recent
ownership
Third ownership
record…
Earliest known
ownership
Query pattern:
SELECT * FROM ABSD_HIOW WHERE LRNO='1234567' AND SEQNO='00'
— returns the current owner.
WHERE SEQNO > '00'
— returns all historical records in descending date order.
Data Flow Architecture
The diagram below shows the complete end-to-end data journey — from raw external feeds through staging, pipeline processing, the core ABSD_ database, trigger-enforced business rules, output tables, and finally client-facing products. Data can only reach the core database through the pipeline layer; no external source writes directly to ABSD_ tables.
Belize, IOM, Panama, Malta, Singapore, Norway…
DNV, BV, IRS, IACS XML, CCS, KR, RS, NK, RINA…
Paris (daily), Tokyo, USCG, AMSA, Black Sea…
OFAC SDN/Non-SDN, EU, UN, UK OFSI, Australia…
Classification API, PSC inspection XML backfill
Shipbuilder Returns — direct yard submissions
Naval & military vessel intelligence
Raw flag-state staging
IOM, PAN3, IR2, CCS, TL2
Classic TIP pipeline queue
FlexTemp pipeline queue
PSC inspection staging
AMSA detailed deficiency codes
OFAC SDN + Non-SDN staging
Sanctions match MASTERLOAD
EDM SSIS landing tables
Machinery & survey staging
Naval vessel staging
Monthly bulk flag feed
LRNO match → LRF compare → validate → review
Field-mapping → BR/DM rules engine → reject queue
tblEDM_BF_SSIS_CONTROL → spEDM_BF_*
Levenshtein ≤ 3 → analyst review → SanctionAgreed
spInsertPSC_* — upsert by IMO + inspection date
spJanesLRNOMatch — name + year-of-build
Keep / Learn / Overwrite decision per field
tblThirdPartyAutoProcess — nightly no-touch apply
OVGE · OVNA · OVTY · OVCA · OVCS · OVDOC · OVSMC
HIOW · HIMA · HISM · HIOP · HIPP · HIFL · HITL · HIST
HIMO · HIGE · HIMT · MATH · MAAU · MAEM1 · MASP
STDE · STSE · LRSC · LRSU · LRWD · LRGE
FUGE · FUDI · FUSF · FUCA · FUCO · FUUN · FULC · FURO
CADI · CAGE1 · CACO · CACT · CAGC · CALA · CAPR
OWGE · OWNA · OWCO · OWAD1/2 · OWAN · OWST
CBCOROOT · CBPPROOT · CBUB1 · CBCY · CBCA · CBFT
NCON · NCON_CONFI · ABSD_SALE · ABSD_TANKER
19 extension tables for EDM-era fields
Global + 12 table-specific guard tables
40+ valStandard* SPs called by triggers
HIOW → OWST recomputation, CBCOROOT 3-type dispatch
OVGE.J06_AUTHOR + J06_LNCHDATE on every change
Field-level change log via spAnnotateChange
Analyst annotation & workflow audit
spABSD_SHIP_SEARCH_SYNC — 9-step rebuild
Triggers write to 1,498 VSL_ readable tables
Readable, denormalised vessel views maintained by triggers
vwFleetDetails · vwCasualty · vwABSD_OWGE_EDM…
Denormalised publication output — spProduction_*
AIS + PSC + Class risk dimensions per vessel
ESG indicators, EEDI, CO₂ estimates
EDM-era extension tables with their own triggers
Full-text search index rebuilt by sync procedure
EAV bucket for schema-free field extensions
Core fleet database — primary output
News, fleet tracking, port calls
Online vessel search & intelligence platform
Internal publication generation system
Commercial sales, charter, demolition listings
Risk scoring, sanctions screening, ESG
API feeds, CSV/XML bulk exports to partners
IMO, ISL, flag-state annual safety statistics