Aah, I see. So in addition to having "addPickup", I would need "addDelivery" for the same shipment?
However, you will need a hard constraint to make sure those deliveries will be in the same routes as the corresponding pickups and be inserted after them.
That would explain how the assigned jobs, that weren't yet picked up, were able to switch vehicles in my simulations.
Moreover, there might be issues with capacity constraint - in jsprit, a pickup job means the unloading happens at the end of the route, and a delivery job means the loading happens at the beginning of the route.
That, indeed, is an issue. Do you think it would be possible, sometime in the future, to implement shipments to the initial route, the way you similarly add shipments to the VehicleRoute as a job? In other words, instead of using "initialRoute.addPickup(shipment)" and/or ".addDelivery(shipment)", you could use ".addShipment(shipment)".