Form-by-form submission compliance plus the analytical layer that turns each form’s data into engineering insights — bearing clearances, scrape-down iron, scavenge condition, and more.
A vessel files dozens of technical forms a month — ME performance, AE performance, deflection, bearing clearance, scrape-down, scavenge inspection, lube-oil consumption, lube-oil shore analysis, lube-oil condition, paint inventory, chemical inventory, walkie-talkie inventory. Two questions matter:
Are they being submitted on time?(compliance)
What do the numbers in them actually tell us?(analysis)
Most forms-management systems answer only the first. The pipeline below answers both, on every monthly submission, automatically.
Form register, mandatory list, submitted dates, due dates
Vessel-filed forms
Structured form data — engine performance, lube-oil consumption, scavenge, paint & chemical inventory, walkie-talkie inventory, etc.
DOC compliance master
Document-of-Compliance form requirements per vessel type and flag
Email correspondence
Form-chase threads from shore to vessel
Forms are filed by the vessel’s officers via the ERP’s forms module. The pipeline reads each filed form’s structured payload (it does not re-parse the PDF) and runs the analytical layer per form. Submission status comes from the same ERP register.
For every required form, the pipeline tracks the last submitted date, the next-due date, and the lateness:Δdays=Dnext_due−DtodaySubmission rate per vessel per period:Submission rate %=NmandatoryNsubmitted on time×100Three submission views:
Previous month
Previous 12 months
DOC-wise
The most recent closed month — what got submitted on time, what was late, what’s missing entirely. The view a Technical Superintendent reads first.
Rolling year of submission status per form. Surfaces patterns — a form that’s chronically late is different from a form that was late once.
Aggregated by Document of Compliance — same data, different cut. Useful when DOC-level audit reporting is needed.
The lateness distribution is more useful than the binary on-time count:
Window
Bucket
0–7 days late
Acceptable slip
8–30 days late
Concerning
31+ days late
Compliance gap — escalate
Not submitted
Black box — every analysis below depends on this form
The compliance view is necessary; the analytical view is where the value is. Every monthly form contains numbers that reveal something about the vessel. The forms-processing templates run an analysis on each form as soon as it’s filed, and route findings into the relevant pipeline.
Iron content from cylinder oil scrape-down samples, residual BN variation, stuffing-box leakage status. Iron content is a leading indicator of liner / ring-pack wear:
Iron content
Interpretation
<100 ppm
Normal break-in
100 to 250 ppm
Active wear, monitor
250 to 500 ppm
Accelerated wear, investigate
>500 ppm
Severe — engine inspection required
Stuffing-box leakage logged here cross-references the lube-oil consumption variance form.
Feed rate, lubrication status, deposit formation, coating thickness, axial clearance per unit. The scavenge inspection is one of the few times the engineers actually see inside the engine, so the report quality matters.
Aft, midship, forward current outputs and reference voltages from the impressed-current cathodic protection system. An ICCP that’s drawing too much current is a paint condition issue; one drawing too little is an electrical issue.
Megger readings and current draw on critical motors — bilge pump, fire pump, GS pump, AE starter motors. Falling insulation resistance is a leading indicator of motor failure.
The submission status logic is structurally identical across the three submission views — only the time window differs. Condensed:
def compute_submission_status(forms, today): rows = [] for form in forms: last_submitted = parse_date(form.get("submittedDate")) next_due = parse_date(form.get("nextDueDate")) if last_submitted is None: status = {"text": "Never submitted", "color": "red"} elif next_due is None: status = {"text": "In Order", "color": "green"} else: days_diff = (next_due - today).days if days_diff < 0: if abs(days_diff) <= 7: status = {"text": f"Late {abs(days_diff)} days", "color": "orange"} elif abs(days_diff) <= 30: status = {"text": f"Late {abs(days_diff)} days", "color": "red"} else: status = {"text": "Compliance gap", "color": "red"} elif days_diff <= 14: status = {"text": f"Due in {days_diff} days", "color": "orange"} else: status = {"text": "In Order", "color": "green"} rows.append({ "form": form["name"], "last_submitted": last_submitted, "next_due": next_due, "status": status, }) return rows
The analytical templates all follow the same shape: read the form’s structured data, extract the parameters, classify each parameter against a maker’s spec or fleet-norm threshold, return both the per-parameter verdict and the aggregate form verdict.
A form that’s late once is a slip; a form that’s been late three months in a row is a process problem. The pipeline groups late submissions by form and surfaces forms that have failed three or more consecutive periods:
RECURRING LATE SUBMISSIONSME deflection → Late 4 of last 6 monthsLube oil shore analysis → Late 5 of last 6 monthsPaint inventory → Late 3 of last 6 months
Recurring late submissions usually trace back to one of:
Owner of the form rotated off vessel and handover incomplete
Form has been moved into the master compliance system but the engineers don’t know
Form depends on a sample / measurement that itself is overdue
Form has been deprecated but not removed from the mandatory list
The first three are recoverable with one conversation; the fourth is a maintenance gap in the master compliance system.
Submission rate: 84% — below the 95% threshold, flagged.Recurring lates: AE LO consumption, LO shore analysis, paint inventory — all three are likely linked to the same officer change.Analytical findings routed to other pipelines:
ME crosshead 4 bearing at 78% wear → routed to ME performance and PMS for replacement planning.
Paint inventory recurring lateness → flagged to chief officer for handover audit.
LO shore analysis 35 days late → blind spot on lube oil for the past month, escalated.
A vessel can have 100% submission rate and still have a wear-down problem buried in the deflection report nobody read. A vessel can have low submission rate and be operating fine — until the audit lands. The pipeline reports both because they’re independent failure modes; you can fail one and pass the other, and the actions are different.
The forms compliance number is what auditors care about. The analytical findings are what keeps the engine running. They are not the same problem and shouldn’t be conflated.