A DatastoreProduct identifies either a particular datastore, as in an actual software product, or a generic one,
as in the framework will choose which one to use depending on configuration.
case classGenericProduct(categoryName: String, productName: Option[String]) extends DatastoreProduct with Product with Serializable