Code Extension Type: INV_VSL_STOW_POSITION_RESOLVER (on page 1)
Purpose: Provides the behavior for handling incomplete or unexpected load positions reported by an external system such as an Equipment Control System (ECS) used with N4 Automation. When a container is loaded and stowed on a vessel, the external system reports a position. If that position is a complete position which matches the planned position, N4 completes the load move. When the stow position that the external system reports to N4 is incomplete or mismatched (not the same as the planned position), N4 handles the exceptions and completes the move by calling this code extension through a task handler in a QC Load workflow.
For example, the external system can report the stow position in any of the following ways:
VESSEL
VESSEL.VISIT_ID
VESSEL.VISIT_ID.BAY
VESSEL.VISIT_ID.BAY.ROW
VESSEL.VISIT_ID.BAY.ROW.TIER
Only positions with VESSEL.VISIT_ID.BAY.ROW.TIER are complete positions, and N4 arrives at exception cases depending on both the completeness and validity of the position. The table below shows how N4 handles these exceptions by default. This varies based on whether or not there is a longitudinal center of gravity (LCG) for the loading vessel—a 'Configured Vessel' has an LCG in N4. For more detail on how N4 resolves invalid stow positions, see How N4 determines the load position when the slot is not specified in Navis N4 Automation Administrator and User Guide.
For each exception case, N4 records a service event, which appears:
In the Crane Team UI Work List (Exceptions column), and in the detail pane on that same view for a single Work Instruction.
In the N4 All Events view (Administration System
All Events),
In the Stowage Warnings window in the XPS client (Vessel Open Vessel
Check Stowage)
As an option, you can configure a General Notice in N4 that will display an EC Alarm in XPS (Containers EC Alarms). See Set up recording QC exceptions in Navis N4 Automation Administrator and User Guide.
Default Handling for Stow Position Exception Cases
Exception String |
Service Event Recorded by N4 |
Default Handling N4 Uses to Stow the Container |
---|---|---|
ERROR_RESOLVING_UNIT_STOW_POSITION
A vessel does not have a valid bin file in N4, so vessel load fails. |
ERROR_RESOLVING_UNIT_STOW_POSITION |
REPORTED_POSITION |
INVALID_POS
External system provides a valid position slot, but it does not resolve to a valid bin in the ship's bin model. |
CHE_ERROR_REPORTED_STOW_POSITION_INVALID |
PLANNED_BAY_DECK_POSITION |
PARTIAL_POS_WITHOUT_BAY
This includes the VESSEL and VESSEL_VISIT_ID position types. |
CHE_ERROR_REPORTED_STOW_POSITION_INCOMPLETE |
PLANNED_BAY_DECK_POSITION |
PARTIAL_POS_WITH_BAY
This includes the VESSEL.VISIT_ID.BAY position type. |
CHE_ERROR_REPORTED_STOW_POSITION_INCOMPLETE |
For configured vessels (with valid LCGs), REPORTED_POSITION (if there is not a reported Deck, N4 uses the deck from the WQ). For unconfigured vessels (without LCGs), REPORTED_BAY_PLANNED_DECK_POSITION. |
MISMATCH_PLAN_NO_STOW_FACTOR |
CHE_ERROR_POS_MISMATCH_TO_PLAN_UNKNOWN_STOW_FACTOR |
REPORTED_POSITION |
MISMATCH_PLAN_SAME_STOW_FACTOR
The reported position is valid, but does not match the planned position. There is no Unit Facility Visit (UFV) planned to the reported position. |
CHE_ERROR_POS_MISMATCH_TO_PLAN_SAME_STOW_FACTOR |
REPORTED_POSITION |
MISMATCH_PLAN_DIFF_STOW_FACTOR
The reported position is valid, but does not match the planned position. A UFV with a different stow factor is planned to the reported position |
CHE_ERROR_POS_MISMATCH_TO_PLAN_DIFF_STOW_FACTOR |
REPORTED_POSITION |
To Override the Default Behavior:
Create a new code extension to override the system-seeded code extension, VesselStowPositionResolver, using the INV_VSL_STOW_POSITION_RESOLVER (on page 1) code extension type. The name must be VesselStowPositionResolver. In the Edit Contents section of the code extension, override the method as in the example below, for a configured vessel:
@Override
Map<VesselStowException, PositionOption> getOptionsForConfiguredVessel() {
Map<VesselStowException, PositionOption> options = super.getOptionsForConfiguredVessel();
options.put(VesselStowException.INVALID_POS, PositionOption.PLANNED_POSITION);
options.put(VesselStowException.PARTIAL_POS_WITH_BAY, PositionOption.PLANNED_POSITION);
options.put(VesselStowException.PARTIAL_POS_WITHOUT_BAY, PositionOption.PLANNED_POSITION);
return options;
}
Additionally, if you need to initiate different behavior entirely, or use a different position from the predefined options, you can you can override any of the following methods:
resolveStowPosForInvalidReportedPos
resolveStowPosForPartialReportedPos
resolveStowPosOnMismatchToPlan