Dataset insertion depends on dataset.product.id to retrieve the metadata type id. But Product.id is optional and might be none, making the insert fail even if the product is valid and exists in the database. datacube.index.datasets.add should account for this and not error if the product can be found by name.