V3 is a bit more complicated as it required a registered user in my case, i had a user with no credentials so i had to change the following
USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
to
USM usm = new USM(SecurityProtocols.getInstance(), new OctetString("Receiver"), 0);
the UsmUser was defined correctly
Hope it helps someone