VesselStowPositionResolver

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:

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:

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: