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
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_*tables — raw staging tables receiving data directly from OFAC's published XML/CSV feedtblOFAC_*tables — match result tables produced by running the ABSD_ company and vessel database against the ofac_* staging data
US Treasury
Raw staging
spOFACMatch*
Match candidates
Confirmed hits
ofac_nonsdn2
OFAC Non-SDN Vessel StagingStaging 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.
| Column | Type | Description |
|---|---|---|
Identifier | varchar(20) | OFAC unique entity number for this sanctions entry |
seqno | int | Sequence within the identifier (OFAC entities can have multiple aliases) |
InsertedDate | datetime | Date this entry was first added to the OFAC list |
AmendedDate | datetime | Date this entry was last amended on the OFAC list (NULL if unchanged since insertion) |
DeletedDate | datetime | Date removed from the list (NULL if still active sanction) |
InspectedDate | datetime | Date LR last reviewed this entry against ABSD_ data |
ShipName | nvarchar(200) | Vessel name as listed on the OFAC sanctions list |
Asset | varchar(50) | OFAC asset category: Vessel, Aircraft, etc. |
Region | varchar(100) | Geographic region associated with the sanction (typically flag state or registration country) |
ShipType | varchar(100) | Vessel type description as supplied by OFAC (free text, not ABSD_ codes) |
Dwt | decimal | Deadweight tonnage as stated in OFAC entry |
Gt | decimal | Gross tonnage as stated in OFAC entry |
Flag | varchar(50) | Flag state as stated in OFAC entry (free text) |
Program | varchar(100) | OFAC sanctions programme code (e.g. UKRAINE-EO13661, IRAN, DPRK) |
IMO | varchar(10) | IMO number if supplied by OFAC (often absent — matching then falls back to name) |
ofac_owsdn1
OFAC SDN Company StagingStaging 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.
| Column | Type | Description |
|---|---|---|
SDN_Name | nvarchar(300) | Primary name of the SDN entity |
SDN_Type | varchar(30) | Entity type: Individual, Entity, Vessel, Aircraft |
Program | varchar(200) | One or more OFAC programme codes (pipe-delimited for multiple) |
Title | nvarchar(200) | Title or position (for individuals) |
Call_Sign | varchar(20) | Callsign (for vessels listed on SDN) |
Vess_type | varchar(100) | Vessel type (for vessel SDN entries) |
Tonnage | varchar(50) | Tonnage as stated in SDN entry |
GRT | varchar(50) | Gross registered tonnage from SDN entry |
Vess_flag | varchar(100) | Flag state from SDN entry |
Vess_owner | nvarchar(300) | Owner name from SDN entry |
remarks | nvarchar(2000) | Free-text remarks field from OFAC XML — often contains additional identifiers (IMO, MMSI, registration numbers) |
OFAC_uid | int | OFAC unique ID number for this SDN entry |
LoadDate | datetime | Date this SDN record was loaded into staging |
ActiveFlag | bit | 0 = removed from SDN list; 1 = currently sanctioned |
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 ResultsThe 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
| Table | Source List | Entity Type |
|---|---|---|
tblOFAC_NONSDNOWSanctions_MASTERLOAD | OFAC Non-SDN | Company/Owner match |
tblOFAC_NONSDNVSSanctions_MASTERLOAD | OFAC Non-SDN | Vessel match |
tblOFAC_SDNOWSanctions_MASTERLOAD | OFAC SDN | Company/Owner match |
tblOFAC_SDNVSSanctions_MASTERLOAD | OFAC SDN | Vessel match |
tblOFAC_*_CONFIRMED variants | Both lists | Confirmed hits only (SanctionAgreed=1) |
tblOFAC_*_HIST_YYYYMMDD variants | Both lists | Point-in-time snapshots for audit |
MASTERLOAD Column Schema
| Column | Type | Description |
|---|---|---|
OFAC_Program | varchar(200) | OFAC sanctions programme code(s) |
OFAC_Identifier | varchar(20) | OFAC unique ID from the source staging table |
OFAC_Alias | nvarchar(300) | Name variant matched against (primary or alias name from SDN/Non-SDN) |
OFAC_AssetName | nvarchar(300) | Vessel name or company name from OFAC list |
OFAC_AddCountry | varchar(100) | Country of listing from OFAC entry |
OWCODE | char(7) | ABSD_ company code of the matched entity (for OW match tables) |
LRNO | char(7) | ABSD_ vessel LRNO of the matched vessel (for VS match tables) |
OWNA_NAME | nvarchar(300) | Company name or vessel name in ABSD_ at time of match |
Levenshtein | int | Edit distance between OFAC name and ABSD_ name |
SanctionAgreed | bit | 1 = analyst confirmed true match; 0 = candidate pending review |
MatchDate | datetime | When the matching algorithm produced this candidate |
ReviewedBy | varchar(20) | Windows login of reviewing analyst |
SDDB_* — Salvage & Demolition Database (13 tables)
SDDB DemolitionThe 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
| Column | Type | Description |
|---|---|---|
lrno | varchar(7) | LR vessel number |
NOTATION | varchar(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)
| Table | Description |
|---|---|
SDDB_COMBINED_NOTATION | Pre-computed combined narrative per vessel (used by narrative functions) |
SDDB_TRANSACTIONS | Individual sale-for-scrap transactions: date, price (USD/LDT), buyer yard, broker |
SDDB_YARDS | Known ship recycling yards: name, country, capacity, last active date |
SDDB_BROKERS | Demolition broker organisations and contact details |
SDDB_PRICES | Market LDT price series by sub-continent (Bangladesh, India, Pakistan, China, Turkey) — drives scrap price valuation in SUPPLEMENTAL_ABSD_HITL |
SDDB_PRICE_HIST | Historical LDT price archive for trend analysis |
SDDB_VESSEL_STATUS | Demolition status codes: CONFIRMED, REPORTED, UNCONFIRMED |
SDDB_UNMATCHED | Vessels in broker reports not yet matched to an LRNO |
SDDB_SALVAGE_EVENTS | Salvage operations (not demolition) — wreck removal, grounding refloat |
SDDB_CUTTING_DATES | Known cutting commencement dates from yard reports |
SDDB_LOAD_LOG | ETL load history — source, date, record count per load cycle |
SDDB_REJECTED | Records rejected by validation: duplicate transactions, invalid LDT, missing yard |
SDDB_STAGING | Raw incoming records before normalisation and matching |
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 HistoryThe 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.
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.| Column | Type | Description |
|---|---|---|
AnnotID | int IDENTITY PK | Auto-incrementing unique row identifier |
LRNo | char(7) | Lloyd's Register vessel number affected by the change (NULL for company-only changes) |
CompanyNo | char(7) | Company code affected (NULL for vessel-only changes; set for OW* table changes) |
EffDate | datetime | Effective date of the change (when it became true, not when it was recorded) |
ChangeType | varchar(50) | Type of change: field name (English), or a category code like NEW_VESSEL, STATUS_CHANGE, NAME_CHANGE |
UserInitials | char(3) | Three-character Windows login of the user who made the change (the J06 author) |
Source | varchar(20) | Data source that triggered the change: TIP, MIS, MANUAL, IMPORT, EDM, SUPPLEMENTAL |
SourceRef | varchar(50) | Source-specific reference number (e.g. TIP supply ID, EDM backfill batch, import file name) |
FilingRef | varchar(50) | Internal filing reference for paper-trail documentation |
Confidential | bit | 1 = this change record is confidential and should not appear in client-facing audit trails |
FollowUpDone | bit | 1 = any required follow-up action has been completed by the analyst |
Import | bit | 1 = this change was made via a bulk import (not individual analyst action) |
FollowUpDate | datetime | Date follow-up was completed or is due |
PageNo | varchar(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;
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 AuditComplementary 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*).
| Column | Type | Description |
|---|---|---|
ID | int IDENTITY PK | Auto-incrementing unique row identifier |
Grouping | varchar(30) | Functional grouping of the annotation: e.g. VESSEL, COMPANY, CASUALTY, OWNERSHIP, WORKFLOW |
UpdateDate | datetime | Timestamp the annotation was written |
UserInitials | char(3) | Three-character Windows login of the analyst writing the annotation |
LRNo | char(7) | Vessel LRNO (NULL for company-only annotations) |
CompanyNo | char(7) | Company code (NULL for vessel-only annotations) |
ShipWatchCol | varchar(50) | Ship Watch product column name this annotation is associated with (for ship-watch workflow integration) |
NoChangeInd | bit | 1 = analyst reviewed and confirmed no change is needed (negative confirmation) |
Source | varchar(20) | Source of the annotation trigger: MANUAL, TIP, SHIPALERT, CASUALTY |
AnnotationText | nvarchar(2000) | Free-text annotation content written by the analyst |
Priority | int | Annotation priority level (1=Urgent, 2=High, 3=Normal, 4=Low) — used for analyst workflow queue ordering |
ResolvedDate | datetime | Date the annotation was marked resolved (NULL if still open) |
ResolvedBy | char(3) | Initials of analyst who marked resolved |
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 TrackingTracks 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.
| Column | Type | Description |
|---|---|---|
LRNO | char(7) PK | Lloyd's Register vessel number — one row per vessel |
EFF_DATE | datetime | Date the sales page record became effective (when vessel was listed) |
TYPE | char(1) | Sales page type: S=Sale, C=Charter, D=Demolition/Scrap listing |
SALE_PAGE_INDICATOR | bit | 1 = vessel currently has an active FSW sales page; 0 = page expired or withdrawn |
EXPIRY_DATE | datetime | Date the listing expires or was withdrawn (NULL if still active) |
PRICE_USD | decimal(15,2) | Asking price in USD (NULL if not publicly listed or confidential) |
BROKER_CODE | char(7) | Company code of the listing broker (ABSD_OWGE.OW_CODE of the broker firm) |
LOAD_DATE | datetime | Timestamp this record was loaded or last updated |
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.