What can possibly affect skill-based assignment of jobs?

I am using skills to make sure that each shipments assigned to specific vehicle.
There are several vehicles with skills available:

Vehicle s2151 skills: [all, s2151]
Vehicle s2147 skills: [all, s2147]
Vehicle s2152 skills: [all, s2152]
Vehicle s2145 skills: [all, s2145]
Vehicle s2149 skills: [all, s2149]
Vehicle s2146 skills: [all, s2146]
Vehicle s2148 skills: [all, s2148]
Vehicle s2153 skills: [all, s2153]
Vehicle s2150 skills: [all, s2150]

For a larger part of shipments, everything was OK. However, some shipments were unassigned.
Here is what UnassignedJobReasonTracker returns as most likely reason:

Code 1: s44133 - cannot serve required skill
Skills of s44133 : [s2151]
Code 1: s44049 - cannot serve required skill
Skills of s44049 : [s2148]
Code 1: s44134 - cannot serve required skill
Skills of s44134 : [s2148]

I have checked shipments and vehicles for missing skills, and I’m quite sure that they are all set.
Necessary skill exists before and after building shipments:

Shipment shipment = shipmentBuilder.build();
System.out.println("Shipment " + shipment.getId() + "skills: " + shipment.getRequiredSkills().toString());


Shipment s44049skills: [s2148]
Shipment s44133skills: [s2151]
Shipment s44134skills: [s2148]

Just in case, I’ve tried to set high penalty for unassigned jobs:

algorithm.setProperty(Jsprit.Parameter.MAX_TRANSPORT_COSTS, Double.toString(1.0E8));

Is there anything that can cause unassigned jobs to appear in such scenario?

@Stardrifter I’m also facing the same issue of getting unassigned jobs even after applying the high penalty for them. In case someone knows pl help us out.