dcsaorg / DCSA-OpenAPI

DCSA - Digital Container Shipping Association
https://app.swaggerhub.com/apis/dcsaorg/DCSA_OAS
68 stars 13 forks source link

Using the the booking interface to arrange oncarriage #393

Open RowlandShaw opened 1 week ago

RowlandShaw commented 1 week ago

I'm looking at use the booking interface to arrange oncarriage for import containers - It feels like the consignee, or their agent, should be using PUT requests to /v2/bookings/{billOFLadingNumber} to update the original import bill with the details of the final destination, so maybe putting something like:

{
  "carrierBookingRequestReference": "cbrr-123",
  "receiptTypeAtOrigin": "CY",
  "deliveryTypeAtDestination": "CY",
  "cargoMovementTypeAtOrigin": "FCL",
  "cargoMovementTypeAtDestination": "FCL",
  "serviceContractReference": "HHL51800000",
  "freightPaymentTermCode": "PRE",
  "originChargesPaymentTerm": {
    "haulageChargesPaymentTermCode": "PRE",
    "portChargesPaymentTermCode": "PRE"
  },
  "destinationChargesPaymentTerm": {
    "haulageChargesPaymentTermCode": "COL",
    "portChargesPaymentTermCode": "PRE",
    "otherChargesPaymentTermCode": "PRE"
  },
  "contractQuotationReference": "HHL1401",
  "vessel": {
    "name": "MAERSK IOWA",
    "vesselIMONumber": "9298686"
  },
  "carrierServiceCode": "TA1",
  "carrierExportVoyageNumber": "403W",
  "isPartialLoadAllowed": false,
  "isExportDeclarationRequired": false,
  "isImportLicenseRequired": false,
  "expectedDepartureDate": "2024-01-20",
  "incoTerms": "EXW",
  "isEquipmentSubstitutionAllowed": false,
  "references": [
    {
      "type": "CR",
      "value": "KN-00103004"
    }
  ],
  "documentParties": {
    "bookingAgent": {
      "partyName": "KN Bremerhaven",
      "address": {
        "street": "Amerikaring",
        "streetNumber": "40",
        "postCode": "27568",
        "city": "Bremerhaven",
        "countryCode": "DE"
      },
      "partyContactDetails": [
        {
          "name": "Export operations department",
          "phone": "+49 471 945410"
        }
      ]
    }
  },
  "partyContactDetails": [
    {
      "name": "Diane",
      "phone": "+49 471 945410"
    }
  ],
  "shipmentLocations": [
    {
      "location": {
        "locationName": "Boston",
        "UNLocationCode": "USBOS"
      },
      "locationTypeCode": "POL"
    },
    {
      "location": {
        "locationName": "Felixstowe",
        "UNLocationCode": "GBFXT"
      },
      "locationTypeCode": "POD"
    },
    {
      "location": {
        "locationName": "Doncaster",
        "UNLocationCode": "GBDON"
      },
      "locationTypeCode": "FCD"
    }
  ],
  "requestedEquipments": [
    {
      "isShipperOwned": false,
      "ISOEquipmentCode": "42G1",
      "units": 3,
      "commodities": [
        {
          "commodityType": "Dry cargo, Freight all kinds",
          "cargoGrossWeight": {
            "value": 36000,
            "unit": "KGM"
          }
        }
      ]
    }
  ]
}

Whilst I'm looking at this with respect of an import, and arranging on-carriage, it's not obvious how to handle the collection appointment for pre-carriage - as in the requested collection time, and full address - or am I'm bending the standard beyond it's intended purpose, and that another standard will handle arrangement of pre and on carriage? Or does the Shipment Location type need extending to define the additional information?

RowlandShaw commented 6 days ago

Seems I went down the wrong rabbit hole, and should be using the Transport document model of eBL

HenrikHL commented 5 days ago

Seems I went down the wrong rabbit hole, and should be using the Transport document model of eBL

Actually "no" - you are on the correct path...

If a consignee wants to do a B/L amendment and add onCarriage to an already existing Transport Document (TD) (which was previously supposed to be a CY-CY i.e. Port-Port shipment), then this is in fact a booking amendment and based on our standard it would require the consignee to use the BKG API to request such change. This is also why we don't mark the booking as COMPLETED until the Transport Document is surrendered for delivery.

Only comment to the above is that Bill of Lading number cannot be used in Booking. A carrierBookingReference would be needed...

HenrikHL commented 5 days ago

@RowlandShaw just added the above comment (saw you closed it yesterday)

RowlandShaw commented 5 days ago

The booking API did feel a lot more like it is intended for export shipment booking requests - more to reserve the slot on the vessel, rather than to arrange the final delivery.

The consignee (or their agent) is going to react to the notice of arrival from the carrier, to then want to arrange the appointment to deliver the container to their warehouse to be unloaded and empty equipment returned.

Currently, the request might go via email, and say something like "Re: Bill ABDEF132456, Container ABCU1234567, please deliver to our warehouse at 123 Any Street, Doncaster on 10th October at 10:00. Tip ref will be DON123. Driver should not arrive more than 30 minutes early, as traffic wardens will issue parking tickets, and there may not be space on site. Quay Rent and Demurrage charges to be accepted by ABC Test Co. with reference PO122341, Port additional charges to be paid by shipper."

Rather than rely on email, I'm looking to better digitise this process, and want to be ready for DCSA standards. I could use the Track and Trace API to reduce the reliance on Notices of Arrival, but it's not clear if I'm looking to implement the best standard for the arranging the oncarriage?

HenrikHL commented 8 hours ago

Hi again @RowlandShaw What you are specifying above is the Shipment Release process. That has not yet been specified by DCSA. Arrival Notice (AN) API work started 2023 but was put on hold as priorities shifted towards Booking and EBL APIs needed to be finalized. Once the Arrival Notice is finished the plan will most likely be to look at Delivery Instructions, Delivery Order, Container Release Order and finally Transport Order. I believe this would cover what you are referring to.

HenrikHL commented 5 hours ago

Here is some additional info:

Name Abbreviation Description Actor to actor
Delivery Instructions DI The Delivery Instruction is the initial phase of the shipment release process after the Arrival Notice is sent to the notify party(s) by the carrier. In the Delivery Instruction, the consignee provides all information required by the carrier to prepare shipment or container release, such as where the goods are to be delivered, the deadline, and the contact person if delivery problems are encountered. Consignee to Carrier
Delivery Order DO The Delivery Order is a document issued by the carrier to the consignee, authorized representative or custodian of cargo that provides delivery information to the party responsible to carry out the delivery activities for a shipment/container(s) under merchant haulage. The Delivery Order is based on the information provided by the consignee in the Delivery Instructions.
Note: A Delivery Order is a regulatory requirement only in specific countries and may be split into multiple Delivery Orders upon request of the consignee or authorized representative.
The custodian of cargo is the party which holds the good physically before release of the cargo. A custodian can be a Terminal where containers are discharged, a Container Freight Station (CFS) or an Inland Container Depot (ICD) where containers are moved after discharge at the Terminal. These authorities will allow physical delivery of the cargo only after they receive clear written instructions from the carrier authorizing the said custodian to release the goods to said consignee or representative. In this case the Delivery Order is usually addressed to this custodian explicitly authorizing them to release cargo.
The authorized representative can be a Customs House Agent, a freight forwarder or a transport company who approaches the custodian to obtain physical release of the cargo on the basis of the carrier’s Delivery Order.
Carrier to Third Party (e.g. Consignee)
Transport Order TO The Transport Order is a document issued by the carrier to the haulier which provides all relevant instructions and information required by the haulier to prepare operational delivery of a shipment to the consignee. Carrier to Haulier
Container Release Order CRO The Container Release Order is a document authorizing the Port Terminal, Logistics Platform/Dry Port, cargo operators or their representatives to release the containers, and giving permission for them to be picked up by or on behalf of a specified designated party. Carrier to Third Party (e.g. Terminal)