Bypass hard time windows

I’ve been practicing with Jsprit recently, and I’ve stumbled upon a time window problem.

There are some Vehicles with earliest and latest arrivals set.
There are several Shipments, each one has pickup and delivery time windows.
Some shipments have delivery windows out of Vehicles’ shift ends:

V1 | shift start - 9 AM , shift end - 6PM
S1 | delivery start - 7 PM , delivery end - 10 PM

Due to hard windows set in Shipment.Builder, shipments become unassigned. But Shipments were already picked, and they must be delivered during current Vehicles’ shifts.

How to allow some lateness with set time windows?

I think you need to implement SoftActivityConstraint to bypass time windows.
See link