Section 15
Sanctions & Audit Infrastructure Tables

Section 15: Sanctions & Audit Infrastructure Tables

OFAC SDN and Non-SDN sanctions staging, tblOFAC match tables, SDDB salvage and demolition data, tblChanges field-level change history, tblAnnotationLogGeneral annotation audit, and tblFSWSalesPage commercial tracking

11
ofac_* Tables
20
tblOFAC_* Tables
13
SDDB Tables
2
Audit Tables
Regulatory data — restricted access: OFAC sanctions data is subject to US export control regulations. Access to the ofac_* and tblOFAC_* tables is restricted to authorised personnel. Do not replicate these tables to non-compliant environments.

OFAC Sanctions Tables — Overview

The US Treasury's Office of Foreign Assets Control (OFAC) publishes two principal sanctions lists that LR processes: the Specially Designated Nationals (SDN) list (individuals and entities subject to asset freezing) and the Non-SDN Consolidated Sanctions list (sector-based restrictions). LR maintains two families of tables for this data:

OFAC XML Feed
US Treasury
ofac_sdn2 / ofac_nonsdn2
Raw staging
Levenshtein Match
spOFACMatch*
tblOFAC_*_MASTERLOAD
Match candidates
SanctionAgreed=1
Confirmed hits

ofac_nonsdn2

OFAC Non-SDN Vessel Staging

Staging table for OFAC's Non-SDN Consolidated Sanctions list — specifically the vessel entries. Non-SDN sanctions include sectoral sanctions (SSI list), the Palestinian Legislative Council (PLC) list, and other programme-specific lists that do not constitute full asset freezes. The table receives periodic updates from OFAC's published data.

ColumnTypeDescription
Identifiervarchar(20)OFAC unique entity number for this sanctions entry
seqnointSequence within the identifier (OFAC entities can have multiple aliases)
InsertedDatedatetimeDate this entry was first added to the OFAC list
AmendedDatedatetimeDate this entry was last amended on the OFAC list (NULL if unchanged since insertion)
DeletedDatedatetimeDate removed from the list (NULL if still active sanction)
InspectedDatedatetimeDate LR last reviewed this entry against ABSD_ data
ShipNamenvarchar(200)Vessel name as listed on the OFAC sanctions list
Assetvarchar(50)OFAC asset category: Vessel, Aircraft, etc.
Regionvarchar(100)Geographic region associated with the sanction (typically flag state or registration country)
ShipTypevarchar(100)Vessel type description as supplied by OFAC (free text, not ABSD_ codes)
DwtdecimalDeadweight tonnage as stated in OFAC entry
GtdecimalGross tonnage as stated in OFAC entry
Flagvarchar(50)Flag state as stated in OFAC entry (free text)
Programvarchar(100)OFAC sanctions programme code (e.g. UKRAINE-EO13661, IRAN, DPRK)
IMOvarchar(10)IMO number if supplied by OFAC (often absent — matching then falls back to name)

ofac_owsdn1

OFAC SDN Company Staging

Staging table for OFAC's Specially Designated Nationals list — specifically the company and individual owner entries. The SDN list is the most restrictive US sanctions instrument; entities on this list are subject to asset freezing and US persons are prohibited from transacting with them.

ColumnTypeDescription
SDN_Namenvarchar(300)Primary name of the SDN entity
SDN_Typevarchar(30)Entity type: Individual, Entity, Vessel, Aircraft
Programvarchar(200)One or more OFAC programme codes (pipe-delimited for multiple)
Titlenvarchar(200)Title or position (for individuals)
Call_Signvarchar(20)Callsign (for vessels listed on SDN)
Vess_typevarchar(100)Vessel type (for vessel SDN entries)
Tonnagevarchar(50)Tonnage as stated in SDN entry
GRTvarchar(50)Gross registered tonnage from SDN entry
Vess_flagvarchar(100)Flag state from SDN entry
Vess_ownernvarchar(300)Owner name from SDN entry
remarksnvarchar(2000)Free-text remarks field from OFAC XML — often contains additional identifiers (IMO, MMSI, registration numbers)
OFAC_uidintOFAC unique ID number for this SDN entry
LoadDatedatetimeDate this SDN record was loaded into staging
ActiveFlagbit0 = removed from SDN list; 1 = currently sanctioned
11 ofac_* tables: The full ofac_* family includes ofac_sdn2 (SDN vessels), ofac_owsdn1 (SDN companies), ofac_nonsdn2 (Non-SDN vessels), ofac_ownsdn1 (Non-SDN companies), plus historical snapshots (ofac_sdn2_YYYYMMDD variants) retained for audit trail purposes.

tblOFAC_*_MASTERLOAD Tables (20 tables)

OFAC Match Results

The tblOFAC_*_MASTERLOAD tables hold the output of running ABSD_ company and vessel records against the OFAC SDN and Non-SDN staging tables via Levenshtein name matching. The schema is analogous to the tblMIRS_*_MASTERLOAD tables documented in Section 13.

Key OFAC MASTERLOAD Tables

TableSource ListEntity Type
tblOFAC_NONSDNOWSanctions_MASTERLOADOFAC Non-SDNCompany/Owner match
tblOFAC_NONSDNVSSanctions_MASTERLOADOFAC Non-SDNVessel match
tblOFAC_SDNOWSanctions_MASTERLOADOFAC SDNCompany/Owner match
tblOFAC_SDNVSSanctions_MASTERLOADOFAC SDNVessel match
tblOFAC_*_CONFIRMED variantsBoth listsConfirmed hits only (SanctionAgreed=1)
tblOFAC_*_HIST_YYYYMMDD variantsBoth listsPoint-in-time snapshots for audit

MASTERLOAD Column Schema

ColumnTypeDescription
OFAC_Programvarchar(200)OFAC sanctions programme code(s)
OFAC_Identifiervarchar(20)OFAC unique ID from the source staging table
OFAC_Aliasnvarchar(300)Name variant matched against (primary or alias name from SDN/Non-SDN)
OFAC_AssetNamenvarchar(300)Vessel name or company name from OFAC list
OFAC_AddCountryvarchar(100)Country of listing from OFAC entry
OWCODEchar(7)ABSD_ company code of the matched entity (for OW match tables)
LRNOchar(7)ABSD_ vessel LRNO of the matched vessel (for VS match tables)
OWNA_NAMEnvarchar(300)Company name or vessel name in ABSD_ at time of match
LevenshteinintEdit distance between OFAC name and ABSD_ name
SanctionAgreedbit1 = analyst confirmed true match; 0 = candidate pending review
MatchDatedatetimeWhen the matching algorithm produced this candidate
ReviewedByvarchar(20)Windows login of reviewing analyst

SDDB_* — Salvage & Demolition Database (13 tables)

SDDB Demolition

The SDDB (Salvage and Demolition Database) tables hold data on vessels sold for scrapping or demolished, sourced from ship recycling yards and broker reports. The data feeds the scrap price triangle stored in SUPPLEMENTAL_ABSD_HITL (documented in Section 09) and provides intelligence on end-of-life vessel dispositions.

SDDB_COMBINED_NOTATION

ColumnTypeDescription
lrnovarchar(7)LR vessel number
NOTATIONvarchar(8000)Combined free-text notation summarising all SDDB entries for this vessel — includes sale price, yard, date, conditions, broker reference

SDDB Table Family (13 tables)

TableDescription
SDDB_COMBINED_NOTATIONPre-computed combined narrative per vessel (used by narrative functions)
SDDB_TRANSACTIONSIndividual sale-for-scrap transactions: date, price (USD/LDT), buyer yard, broker
SDDB_YARDSKnown ship recycling yards: name, country, capacity, last active date
SDDB_BROKERSDemolition broker organisations and contact details
SDDB_PRICESMarket LDT price series by sub-continent (Bangladesh, India, Pakistan, China, Turkey) — drives scrap price valuation in SUPPLEMENTAL_ABSD_HITL
SDDB_PRICE_HISTHistorical LDT price archive for trend analysis
SDDB_VESSEL_STATUSDemolition status codes: CONFIRMED, REPORTED, UNCONFIRMED
SDDB_UNMATCHEDVessels in broker reports not yet matched to an LRNO
SDDB_SALVAGE_EVENTSSalvage operations (not demolition) — wreck removal, grounding refloat
SDDB_CUTTING_DATESKnown cutting commencement dates from yard reports
SDDB_LOAD_LOGETL load history — source, date, record count per load cycle
SDDB_REJECTEDRecords rejected by validation: duplicate transactions, invalid LDT, missing yard
SDDB_STAGINGRaw incoming records before normalisation and matching
LDT price link: SDDB_PRICES is the source for the LDT sub-continent scrap price values stored in SUPPLEMENTAL_ABSD_HITL.SCRAP_PRICE_*. The trigger on SUPPLEMENTAL_ABSD_HITL (documented in Section 10k) reads these prices when computing scrap value from lightship displacement tonnes.

tblChanges — Field-Level Change History

tblChanges

Audit Log Change History

The primary field-level audit table for the ABSD_ database. Every time a trigger fires and modifies vessel or company data, the trigger writes one or more rows to tblChanges capturing the change metadata. This table is the definitive record of who changed what, when, and from what source.

Trigger integration: All ABSD_ triggers call spAnnotateChange which writes to tblChanges. The stored procedure uses dynamic SQL to look up the English field name from a metadata table (spGetEnglishFieldName) and writes the old value, new value, and change source. See Section 12d for the annotation stored procedures.
ColumnTypeDescription
AnnotIDint IDENTITY PKAuto-incrementing unique row identifier
LRNochar(7)Lloyd's Register vessel number affected by the change (NULL for company-only changes)
CompanyNochar(7)Company code affected (NULL for vessel-only changes; set for OW* table changes)
EffDatedatetimeEffective date of the change (when it became true, not when it was recorded)
ChangeTypevarchar(50)Type of change: field name (English), or a category code like NEW_VESSEL, STATUS_CHANGE, NAME_CHANGE
UserInitialschar(3)Three-character Windows login of the user who made the change (the J06 author)
Sourcevarchar(20)Data source that triggered the change: TIP, MIS, MANUAL, IMPORT, EDM, SUPPLEMENTAL
SourceRefvarchar(50)Source-specific reference number (e.g. TIP supply ID, EDM backfill batch, import file name)
FilingRefvarchar(50)Internal filing reference for paper-trail documentation
Confidentialbit1 = this change record is confidential and should not appear in client-facing audit trails
FollowUpDonebit1 = any required follow-up action has been completed by the analyst
Importbit1 = this change was made via a bulk import (not individual analyst action)
FollowUpDatedatetimeDate follow-up was completed or is due
PageNovarchar(20)LR publication page number where this change appears (for changes logged for printed publications)

Key Query Patterns

-- All changes to a vessel in the last 30 days
SELECT ChangeType, EffDate, UserInitials, Source, SourceRef
FROM   tblChanges
WHERE  LRNo = '1234567'
  AND  EffDate >= DATEADD(day, -30, GETDATE())
ORDER BY EffDate DESC;

-- Count changes by source in the last 7 days
SELECT Source, COUNT(*) AS Changes
FROM   tblChanges
WHERE  EffDate >= DATEADD(day, -7, GETDATE())
GROUP BY Source
ORDER BY Changes DESC;
Self-trigger: tblChanges itself has a trigger (TR_tblChanges_*) documented in Section 10l. The trigger validates the FollowUpDate field and prevents recursion via a TRIGGER_DISABLE_TBLCHANGES guard table.

tblAnnotationLogGeneral — Annotation Audit Log

tblAnnotationLogGeneral

Annotation Log Audit

Complementary audit table to tblChanges. While tblChanges records field-level data changes, tblAnnotationLogGeneral records analyst annotations — notes, comments, and workflow state changes attached to vessel or company records. This table supports the annotation system documented in Section 12d (spAnnotateChange, spWriteAnnotation*).

ColumnTypeDescription
IDint IDENTITY PKAuto-incrementing unique row identifier
Groupingvarchar(30)Functional grouping of the annotation: e.g. VESSEL, COMPANY, CASUALTY, OWNERSHIP, WORKFLOW
UpdateDatedatetimeTimestamp the annotation was written
UserInitialschar(3)Three-character Windows login of the analyst writing the annotation
LRNochar(7)Vessel LRNO (NULL for company-only annotations)
CompanyNochar(7)Company code (NULL for vessel-only annotations)
ShipWatchColvarchar(50)Ship Watch product column name this annotation is associated with (for ship-watch workflow integration)
NoChangeIndbit1 = analyst reviewed and confirmed no change is needed (negative confirmation)
Sourcevarchar(20)Source of the annotation trigger: MANUAL, TIP, SHIPALERT, CASUALTY
AnnotationTextnvarchar(2000)Free-text annotation content written by the analyst
PriorityintAnnotation priority level (1=Urgent, 2=High, 3=Normal, 4=Low) — used for analyst workflow queue ordering
ResolvedDatedatetimeDate the annotation was marked resolved (NULL if still open)
ResolvedBychar(3)Initials of analyst who marked resolved
Self-trigger: Like tblChanges, this table has its own trigger (TR_tblAnnotationLogGeneral_*) documented in Section 10l. The trigger prevents annotation duplication and validates the Grouping field against a permitted values list.

tblFSWSalesPage — Commercial Sales Page Tracking

tblFSWSalesPage

Commercial Sales Tracking

Tracks which vessels have an active Sales Page record in the Fairplay Ship World (FSW) commercial publication system. When a vessel appears on the FSW sales platform (vessels available for purchase, charter, or scrapping), this table is updated to flag that status in the ABSD_ record. The flag drives FSW-specific fields in downstream views.

ColumnTypeDescription
LRNOchar(7) PKLloyd's Register vessel number — one row per vessel
EFF_DATEdatetimeDate the sales page record became effective (when vessel was listed)
TYPEchar(1)Sales page type: S=Sale, C=Charter, D=Demolition/Scrap listing
SALE_PAGE_INDICATORbit1 = vessel currently has an active FSW sales page; 0 = page expired or withdrawn
EXPIRY_DATEdatetimeDate the listing expires or was withdrawn (NULL if still active)
PRICE_USDdecimal(15,2)Asking price in USD (NULL if not publicly listed or confidential)
BROKER_CODEchar(7)Company code of the listing broker (ABSD_OWGE.OW_CODE of the broker firm)
LOAD_DATEdatetimeTimestamp this record was loaded or last updated
Fairplay integration: This table is updated by the spFairplay* stored procedure suite (Section 12d). The SALE_PAGE_INDICATOR flag is surfaced in the vwFleetDetails view as part of the commercial intelligence layer visible to FSW clients.