System Overview
Architecture, conventions, and reference codes for the Lloyd's Register ABSD schema
| Category | Count |
|---|---|
| Total Tables | 1,653 |
| Views | 1,498 |
| Stored Procedures | 1,029 |
| Triggers | 282 |
| Functions / UDFs | 281 |
| ABSD_ core tables | ~180 |
| SUPPLEMENTAL_ tables | ~25 |
| VSL_ output tables | 4 |
| CB* reference codebooks | ~35 |
Two Parallel Table Families
- Named using Lloyd's Register Advanced Bulk Ship Data (ABSD) schema codes
- Columns follow the
X##_FIELDNAMEnaming pattern whereX##is an LR data dictionary section code - Every coded attribute carries four companion columns:
_EFD(effective date, NVARCHAR YYYYMM or YYYYMMDD),_CC(confidence code),_SRCE(source system, 9-char),_VER(verification flag) - Dates stored as NVARCHAR, NOT SQL date types
- Primary key:
LRNO(7-char Lloyd's Register vessel identifier) - No enforced foreign key constraints — all referential integrity is handled by triggers
- Human-readable column names
- Primary key:
IMO_NUM(10-char International Maritime Organization number) - Populated by triggers and scheduled jobs from ABSD_ data
- Consumed by downstream reporting and client-facing products
EDM Integration
The system is in a partial migration to an Enterprise Data Management (EDM) platform. Many views now source from EDM.dbo.T_ENT_* and EDM.dbo.T_REF_* tables with ABSD_ as fallback for unmigrated records.
| EDM Table | Purpose |
|---|---|
EDM.dbo.T_ENT_MASTER | Master entity/owner record |
EDM.dbo.T_ENT_ADDRESS | Best address per entity |
EDM.dbo.T_ENT_OWIN | Owner/company intermediate |
EDM.dbo.T_REF_COUNTRY | Country reference (replaces ABSD_CBCY) |
EDM.dbo.T_REF_CBUB3 | Classification notations |
ABSD_OVGE.LRNO = VSL_DESIGNATION.IMO_NUM — these store the same value in different tables under different column names. All cross-table joins in views use this pattern.| Identifier | Column | Type | Description |
|---|---|---|---|
| LRNO | ABSD_OVGE.LRNO | nvarchar(7) | Lloyd's Register vessel number — primary key for all vessel data |
| IMO Number | VSL_DESIGNATION.IMO_NUM | nvarchar(10) | International Maritime Organization number — equals LRNO in VSL_ tables |
| Owner Code | ABSD_OWGE.OWCODE | varchar(7) | Unique company/owner identifier |
| Incident Number | ABSD_CAGE1.INNO | varchar(7) | Casualty/incident identifier |
| Shipbuilder Code | ABSD_CBSB.KEYC+KEYG+KEYN+KEYX | varchar(9) | SBLDR_CMP — concatenation of 4 key components |
| Port Code | ABSD_CBPPROOT.KEY | varchar(7) | 7-char port/place identifier |
All ABSD_ table columns follow a systematic code: Section_Code + Field_Number + "_" + Field_Name
| Section | Domain |
|---|---|
| A01–A03 | Vessel/Publication Status |
| B01–B12 | Basic Vessel Identifiers (callsign, official no., flag, tonnage) |
| C01 | Builder/Construction details |
| D01–D25 | Vessel Design (type, capacity, propulsion, deck) |
| E01–E45 | Equipment (engines, generators, thrusters) |
| F01–F14 | Classification and casualty data |
| G01 | Name history |
| H01–H03 | Owner/Manager/Company history |
| J06 | Last change tracking (author, date, time) |
Companion Column Pattern
Every coded field X##_FIELDNAME always has these sibling columns:
| Suffix | Name | Description |
|---|---|---|
_EFD | Effective Date | NVARCHAR, YYYYMM or YYYYMMDD |
_CC | Confidence Code | blank=unverified, V=verified, C=confirmed, E=estimated |
_SRCE | Source System | 9-char source system code |
_VER | Verification Flag | Verification indicator |
| SEQNO | Meaning |
|---|---|
'00' | Current/active record — this is always the live data |
'01' | Most recent historical version (immediately before current) |
'02', '03', … | Older historical versions in reverse chronological order |
Rules
- All views selecting current state filter
WHERE SEQNO='00' - When a value changes, the current
'00'record is promoted to'01', and a new'00'is inserted - Deleting
'00'is generally prevented by triggers - Not all tables use this pattern — some (like ABSD_FUGE) are single-row per vessel
Tables Using SEQNO History
ABSD_OVNA (names), ABSD_HIOW (registered owner), ABSD_HIMA (manager), ABSD_HISM (ship manager), ABSD_HIOP (operator), ABSD_HIPP (parent company), ABSD_HIFL (flag), ABSD_HITL (tonnage), ABSD_HIST (status), ABSD_HIFC1/2 (classification), ABSD_HIBR (builder), ABSD_HIBBC (bareboat charterer), ABSD_HIGBO (group/beneficial owner), ABSD_STSE (statutory survey), ABSD_OVTY (ship type), ABSD_OVSMC (ISM cert), ABSD_OVISSC (ISSC cert), ABSD_OVDOC (DOC company)
fnLRDateToRealDate() or fnLRDateToRealDate2022() for date comparisons.| Format | Length | Example | Notes |
|---|---|---|---|
| YYYYMM | 6 chars | 202603 | Month-level precision — most EFD (effective date) fields |
| YYYYMMDD | 8 chars | 20260315 | Day-level precision — some history tables |
| YYMMDD | 6 chars | 260315 | J06_LNCHDATE (last-change tracking) |
| HHMMSS | 6 chars | 143022 | J06_LNCHTIME (last-change time) |
Special Date Values
| Value | Meaning |
|---|---|
'000000' / '00000000' | Unknown / not recorded |
'999999' / '99999999' | Future / open-ended |
'198099' | Special sentinel: "no EFD set / use default" (used in GROUP_FLEET procedures) |
Month '00' | Unknown month — treated as January by fnLRDateToRealDate |
Month '99' | Open/continuing — treated as December by fnLRDateToRealDate |
Day '00' | Unknown day — treated as 1st by fnLRDateToRealDate |
Day '99' | Open day — treated as last day of month by fnLRDateToRealDate |
The custom function fnLRDateToRealDate(@LRDATE varchar(8)) converts all these to SQL DATETIME. The 2022 version (fnLRDateToRealDate2022) adds proper leap year handling.
All INSERT/UPDATE triggers check a control table before executing:
Table-Specific Disable Flags
| Table | Purpose |
|---|---|
TRIGGER_DISABLE | Master disable — suppresses all triggers when any row exists |
TRIGGER_DISABLE_OVGE | Disables vessel general triggers (for batch loads to OVGE) |
TRIGGER_DISABLE_OVNA | Disables name history triggers |
trigger_disable_hima | Disables manager history triggers — used within HIOW trigger to prevent recursion when calling SPMAKEHIMAHISTORICAL |
trigger_disable_hima before calling SPMAKEHIMAHISTORICAL to prevent infinite recursion when that procedure modifies HIMA records.There are four parallel audit/change tracking mechanisms:
8.1 — J06 Fields (Last-Modified Stamp)
Every ABSD_ table trigger updates two fields in ABSD_OVGE:
J06_AUTHOR extracts the last 3 characters of the Windows login (e.g., DOMAIN\usr → USR).
8.2 — tblChanges (Field-Level Audit Log)
Written by spAnnotateChange called from triggers. Records: table name, field name (English-readable via spGetEnglishFieldName), old value, new value (up to 1,012 chars each), user initials, source, source reference, filing reference, is-new flag.
8.3 — *_UPDATES Tables (Downstream Staging)
Every major table has a parallel ABSD_*_UPDATES tracking table populated by triggers on every modification. These serve as staging queues for downstream systems (APS, Seaweb, etc.).
8.4 — tblAnnotationLogGeneral (Secondary Groupings)
Logs groups of related field changes together. Used for presenting annotation summaries to users.
SUPPLEMENTAL_ tables hold data from external sources that enhances (but does not replace) the core ABSD_ master data:
| SUPPLEMENTAL Table | Enhances | Purpose |
|---|---|---|
SUPPLEMENTAL_ABSD_OVGE | ABSD_OVGE | Extra vessel attributes from third-party feeds |
SUPPLEMENTAL_ABSD_OVTY | ABSD_OVTY | Alternative ship type codes from other sources |
SUPPLEMENTAL_ABSD_FUGE | ABSD_FUGE | Additional capacity data |
SUPPLEMENTAL_ABSD_FUDI1 | ABSD_FUDI1 | Additional deck equipment data |
SUPPLEMENTAL_ABSD_FUDI2 | ABSD_FUDI2 | Additional engine data |
SUPPLEMENTAL_ABSD_FUUN1 | ABSD_FUUN1 | Additional tank unit data |
SUPPLEMENTAL_ABSD_HIMA | ABSD_HIMA | Manager data from external feeds |
SUPPLEMENTAL_ABSD_HITL | ABSD_HITL | Tonnage from other measurement sources |
SUPPLEMENTAL_ABSD_HIFL | ABSD_HIFL | Flag history from AIS / third-party |
SUPPLEMENTAL_ABSD_HIFC1 | ABSD_HIFC1 | Classification data from other societies |
SUPPLEMENTAL_ABSD_STSE | ABSD_STSE | Survey data from external auditors |
SUPPLEMENTAL_ABSD_STDE | ABSD_STDE | Deadweight from alternative sources |
SUPPLEMENTAL_ABSD_CADI | ABSD_CADI | Casualty detail from external incident reports |
SUPPLEMENTAL_ABSD_NCON | ABSD_NCON | Newbuilding contracts from broker feeds |
SUPPLEMENTAL_ABSD_CBCOROOT | ABSD_CBCOROOT | Company short names in proper case |
SUPPLEMENTAL_ABSD_CBCY | ABSD_CBCY | Country attributes from external classification |
The field ABSD_HIST.A02_STS (via ABSD_OVGE for current status) uses single-character codes:
| Code | Meaning | Active? |
|---|---|---|
S | In Service / Commission | Yes |
L | Laid Up | Yes |
T | Under Construction / On Trial | Yes |
R | In Refit / Conversion | Yes |
B | Under Repair / Broken Down | Yes |
C | Undergoing Conversion | Yes |
V | Under Survey | Yes |
J | Jumboised | Yes |
P | Planned / Ordered | Yes |
O | On Order | Yes |
U | Under Construction | Yes |
F | Fitting Out | Yes |
E | Engine Trials | Yes |
A | Afloat — Status Unknown | Marginal |
H | Hulked (non-propelled) | Marginal |
N | Not in Existence | No |
X | Scrapped / Broken Up | No |
Z | Total Loss | No |
D | Demolished | No |
W | Wrecked | No |
A02_STS IN ('S','L','R','T','C','V','J','P','O','U','F','E')| Code | Meaning |
|---|---|
U | Continues Publishing |
D | Confirmed — Will Not Publish |
Y | Suppressed — Will Not Publish |
S | Confirmed Never Was |
X | Suppressed Confirmed Never Was |
Z | Suppressed Confirmed Will Not Publish |
Used in ABSD_OWSH.REL1_1/REL1_2/REL1_3 and ABSD_OWXR.REL1_1:
| Code | Role |
|---|---|
RC | Registered Owner |
MR | Ship Manager (Crewing/Technical) |
CO | Commercial Operator |
DO | Direct Owner (beneficial) |
BO | Beneficial Owner |
AS | Associated / Affiliate |
BBC | Bareboat Charterer |
GBO | Group/Beneficial Owner |
| Code | Meaning |
|---|---|
| (blank) | Unverified |
V | Verified |
C | Confirmed |
U | Uncertain |
E | Estimated |